Bonjour a tous je voudrait savoir comment faire en sort quand je créer une nouvelle news
avoir un bouton Autoriser un commentaire ?
alor je m'explique si je coche pas se bouton le formulaire pour écrire un commentaire ne s'afiche pas pour se news ?
et si je le coche le formulaire s'afiche et bien sur les commentaire avec aussi .?

Si une personne pourait m'aider ?

Merci d'avance

Ps: au passage voici mon code créer.php

<?php
//Gestion des images

if(!empty($_FILES)){
require("imgClass.php");

$img = $_FILES'img'];
$ext = strtolower(substr($img'name'],-3));
$allow_ext = array("jpeg",'png','gif');
if(in_array($ext,$allow_ext)){
move_uploaded_file($img'tmp_name'],"images/".$img'name']);
Img::creerMin("images/".$img'name'],"images/min",$img'name'],215,112);
Img::creerMin("images/".$img'name'],"images/min_liste",$img'name'],50,50);
$img = $img'name'];
}
else{
$erreur = "Votre fichier n'est pas une image";
}

}

//On se connecte a la Bdd
require "../function.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
extract($_POST);

//Selection de la Bdd
$sql="INSERT INTO news (titre,auteur,img,contenu) VALUES ('$titre','$auteur','$img','$contenu')";
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
header('Location:liste_news.php');
?>

6 réponses


mespeche
Réponse acceptée

Dans ton Phpmyadmin, sur ta table news tu ajoutes un champs de type boolean que tu nommes : autoriser_commentaires.

Ensuite, dans ton html tu fais un bouton radio :

<label>Autoriser les commentaires sur cet article :</label>
<input type="radio" name="autoriser_commentaires" value="1"> Oui<br>
<input type="radio" name="autoriser_commentaires" value="0" checked> Non

Ensuite dans ton php :

//Selection de la Bdd
$sql="INSERT INTO news (titre,auteur,img,contenu,autoriser_commentaires) VALUES ('$titre','$auteur','$img','$contenu', '$autoriser_commentaires')"; 
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
header('Location:liste_news.php');

Enfin, pour tester dans ton affichage de la news si tu peux ajouter un commentaire, il te suffit lors de la récupération de tes données, de vérifier si ton champs autoriser_commentaire est à 1 ou 0.

//Selection de la Bdd
$sql = "SELECT * FROM news"; 
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
while($news = mysql_fetch_assoc($req)){
    echo '<h3>'.$news'titre'].'</h3>'; // Affiche le titre
    if($news'autoriser_commentaires'] != 0){ // Tu peux mettre true ou false à la place de 1 ou 0
        // Affichage du formulaire pour l'ajout d'un commentaire
    }
}

Voilà, niveau mise en page à toi de voir, mais c'est le principe à utiliser.
Bon courage ;)

mespeche
Réponse acceptée

Oui et bin tu fais comme j'ai dis lol, tu as juste à faire :

<?php if($data'autoriser_commentaire'] == true){ ?>
<form action="add_com.php" method="post">
Pseudo :<br />
<input type="text" name="pseudo" /><br /><br />
Contenu :<br />
<textarea name="contenu" style="width:639px; height:200px;"></textarea>
<input type="submit" value="Commenter" />
<input type="hidden" name="news_id" value="<?php echo $data"id"]; ?>"/>
</form>
<?php } ?>

Je te proposes un truc en gros.
1) Tu te rajoute une checkbox dans ton creer.php, ensuite, tu ajoute un champ (booléen) à tes news qui s'appelle "autoriser_com" par exemple.
2) Traitement du formulaire : Si la checkbox est cochée, alors "autoriser_com" vaut 1, sinon, il vaut 0
3) Dans le fichier de traitement des commentaires, tu regardes si "autoriser_com" vaut 1, sinon, tu n'ajoutes pas les données dans la BDD et tu affiches un message d'erreur.

Voilà, c'est à peu près ce qu'il faut que tu fasse ;)

Roxeur
Auteur

Ok mais j'ai encore du mal en codage xd me faudrer des exemple de code que je bidouille un peux
!!

Roxeur
Auteur

ok merci mais niveau afichage sa change rien et sais un peux le bordel xd voici mon code news :

<?php
//On se connecte a la Bdd
require "function.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);

//Selection de la Bdd

$id=$_GET'id'];
$sql="SELECT * FROM news WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
$data=mysql_fetch_assoc($req);

echo"<h4>{$data"titre"]}</h4>";
echo "{$data"contenu"]}";
echo"<hr>";

$sql="SELECT id FROM comment WHERE news_id={$data"id"]}";
$req2 = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
echo "<h3>Les commentaire (".mysql_num_rows($req2).")</h3>";

$sql="SELECT * FROM comment WHERE news_id=$id ORDER BY id DESC";
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
while ($data2=mysql_fetch_assoc($req)){

echo"<strong>{$data2"pseudo"]} :<br></strong>";
echo "{$data2"contenu"]}</p>";

}

<form action="add_com.php" method="post">

Pseudo :<br />
<input type="text" name="pseudo" /><br /><br />

Contenu :<br />
<textarea name="contenu" style="width:639px; height:200px;"></textarea>

<input type="submit" value="Commenter" />
<input type="hidden" name="news_id" value="<?php echo $data"id"]; ?>"/>

</form>

et je voudrer cacher le formulaire avec xd

Roxeur
Auteur

Sais bon sa marche merci tu gere !!