Fonction commentaire ?

Par Roxeur, il y a 15 ans


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

Laurent., il y a 15 ans

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, il y a 15 ans

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

mespeche, il y a 15 ans

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 ;)

Roxeur, il y a 15 ans

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

mespeche, il y a 15 ans

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 } ?>
Roxeur, il y a 15 ans

Sais bon sa marche merci tu gere !!