commentaires News

Répondre
Kam
le 19/04/2005 à 18:19
Kam
Bonjour !! etant debutant j'ai suivie le cours " comment faire Un script de news " et maintenant je voudrais savoir comment je peut faire pour l'agrémenter d'un script de gestion de commentaires de news je essayer de me lancer mais j'arrive pas a faire en sorte qu'il y'ai des commentaires propres a chaque news ( qui a son propre ID )
Dimi
le 19/04/2005 à 19:15
Dimi
tu fais un lien "commentaire" sur chaque news et tu envoi l'id de la news dans le lien.
Apres dans ta table de commentaires tu fé un champ id_news ou tu rentres l'id de la news concernée.

En gros tu auras plusieurs commentaires avec le meme id_news et y te suffit de les rapeller apres.

Je sais pas si j'ai eté tres clair :x

++
Kam
le 22/04/2005 à 17:28
Kam
si merci ta été clair et j'ai suivie ton conseil :

J'ai fait le lien commentaires sur chaque news j'ai envoyé l'ID de la news dans le lien.. dans ma table de commentaire j'ai rajouter id_news

resultat

ma page de commentaires elle s'ouvre sur une nouvelle fenetre.. mais le probleme..

mais ca maffiche k'un seul commentaire ... c'est bizzard pourtant dans ma base de donnée je voit 2 commentaires avec la meme id_news.

ta pas un exemple rapide a montrer ? merci
zebden
le 22/04/2005 à 17:32
zebden
Montre ton code plutot.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Kam
le 22/04/2005 à 17:36
Kam
ma page comment_news

<?
include "connect.php";

$id = $_GET['id'];

$query = 'SELECT * FROM comment WHERE news_id="'.$id.'" ';
$result = mysql_query($query) or die(mysql_error());

$data = mysql_fetch_array($result);

// on décompose la date
sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);

if(empty($id))
{
echo 'test';
}
else{
echo '<body bgcolor="#003494">
<font face="Courier New, Courier, mono" size="2" color="#CCCCCC">Commentaire de
<a href="' ,$data['auteur'], '">' ,$data['auteur'], '</a> post&eacute; le ' , $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' , $min , ':' , $sec ,'</font><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b><br>
</b></font>
<table width="100%" border="1" bgcolor="#FFFFFF" bordercolor="#000000">
<tr bgcolor="#847CAD">
<td width="100%" height="9">
<blockquote>
<p><font face="Courier New, Courier, mono" size="2" color="#FFFFFF">', $data['email'] ,'</font></p>
</blockquote>
</td>
</tr>
<tr bgcolor="#EAE6FD">
<td width="30%">
<p><font face="Verdana, Arial, Helvetica, sans-serif">' , nl2br(stripslashes(htmlentities(trim($data['message'])))) , '</font></p>
</td>
</tr>
</table>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b> </b></font>';
}

?>
zebden
le 22/04/2005 à 18:11
zebden
C'est bien ce que je pensais,

Faut penser a faire une boucle pour lister tous les commentaires.
cf les cours sur la recuperation de données provenant d'une base.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Kam
le 23/04/2005 à 16:09
Kam
Salut c'est encore c'est OK pour l'affichage des commentaires mais mon probleme maintenant c'est l'insertion dans la base :

Je recupere l'ID de la news avec $_GET et qd j'essaye de l'injecté dans ma table commentaire, cham " id_news " elle m'ajoute la valeur "0" pour touts les commentaires ajouté et pourtant qd je fait echo $_GET['id'] elle m'affiche la bonne valeur d'ID je ne comprend pas pourquoi smiley si quelqu'un peut m'expliquer pourquoi et eventuellement me dire comment je peut y remedier merci.

voici le code concerné :

CREATE TABLE `comment` (
`id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`message` text NOT NULL,
`auteur` varchar(100) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=33 ;


ma table est de la forme suivante :

(code]CREATE TABLE `comment` (
`id` int(11) NOT NULL auto_increment,
`news_id` int(11) NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`message` text NOT NULL,
`auteur` varchar(100) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=33 ;[/code]

merci
Kam
le 23/04/2005 à 16:11
Kam
desolé j'ai fait une ptite erreur j'ai envoyé trop vite le message voici le vrai code :

<? 
include "connect.php";
$id = @$_GET['id'];

$sql = 'SELECT * FROM comment WHERE news_id="'.$id.'"';

$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());


// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {

// on décompose la date
sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);
// on affiche les résultats
echo '<body bgcolor="#003494"><table width="100%" border="0">
<tr bgcolor="#000000">
<td>
<table width="100%" border="0">
<tr bgcolor="#847CAD">
<td><font face="Courier New, Courier, mono" size="2" color="#CCCCCC">De <a href="mailto:' ,$data['email'], '">'
,$data['auteur'], '</a> post&eacute; le ' , $jour , '/' , $mois , '/' , $an ,
' à ' , $heure , ':' , $min , ':' , $sec ,'</font><font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF"><b></b></font></td>
</tr>
<tr bgcolor="#EAE6FD">
<td><p><font face="Verdana, Arial, Helvetica, sans-serif">' , nl2br(stripslashes(htmlentities(trim($data['message']))))
, '</font></p></td>
</tr>
</table>
</td>
</tr>
</table><hr noshade size="1">';
}



// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Ajouter Commentaire') {

// on teste la déclaration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['email']) || !isset($_POST['message'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['auteur']) || empty($_POST['email']) || empty($_POST['message'])) {
$erreur = 'Au moins un des champs est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// lancement de la requête d'insertion
$sql = 'INSERT INTO comment VALUES("", "'.$id.'", "'.date("Y-m-d H:i:s").'", "'.addslashes($_POST['message']).'", "'.addslashes($_POST['auteur']).'", "'.addslashes($_POST['email']).'")';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on ferme la connexion à la base de données
mysql_close();

// on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site.
header('Location: ../index.php');
// on termine le script courant
exit();
}
}
}

?>
<html>
<head>
<title>Insertion d'un Commentaire !</title>
</head>

<body>
<? echo $id ; ?>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="comment_zik.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo stripslashes(htmlentities(trim($_POST['auteur']))); ?>">
</td></tr><tr><td>
<span class="gras">Email :</span>
</td><td>
<input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo stripslashes(htmlentities(trim($_POST['email']))); ?>">
</td></tr><tr><td>
<span class="gras">Message :</span>
</td><td>
<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Ajouter Commentaire">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '',$erreur;
?>
</body>
</html>
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours