par
Kam » 26 avr. 2005, 15:42
Salut je debute en PHP j'ai suivie un tutorial pr faire mon premier script de news et maintenant je veut lui attribuer un systeme de Commentaire pr chaque news ajoutée , j'ai donc créer un liens " Ajouté commentaire " sur ma news et envoyer sur une nouvelle page, sur cette nouvelle page j'ai recuperé l'ID de la news a l'aide de $_GET['id'] et je l'ai envoyé dans ma base de donnée dans la table " comment " sur le champ " news_id" avec INSERT INTO etc..
seulement a chaque commentaire ajouté, la valeur ds ma base est vide comme si il n'y avait pas de valeur sur $_GET['id'] or quand je fais echo $_GET['id']; elle m'affiche une bonne valeur de l'ID , le numerom même qui devrait etre inserer dans la base..
je ne comprend pas pourquoi.. si quelqu'un pouvait m'aider un script de news avec systeme de commentaires c'est le plus rependu sur le net
merçi
voici le code concerné
Code : Tout sélectionner
<?
include "connect.php";
$id = @$_GET['id'];
$sql = 'SELECT * FROM comment WHERE news_id="'.$id.'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.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é 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.'<br />'.mysql_error());
// 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: comment_zik.php');
// on termine le script courant
exit();
}
}
}
?>
<html>
<head>
<title>Insertion d'un Commentaire !</title>
</head>
<body>
<!-- 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 '<br /><br />',$erreur;
?>
</body>
</html>
et voici comment j'ai creer ma table..
Code : Tout sélectionner
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 ;
Salut je debute en PHP j'ai suivie un tutorial pr faire mon premier script de news et maintenant je veut lui attribuer un systeme de Commentaire pr chaque news ajoutée , j'ai donc créer un liens " Ajouté commentaire " sur ma news et envoyer sur une nouvelle page, sur cette nouvelle page j'ai recuperé l'ID de la news a l'aide de $_GET['id'] et je l'ai envoyé dans ma base de donnée dans la table " comment " sur le champ " news_id" avec INSERT INTO etc..
seulement a chaque commentaire ajouté, la valeur ds ma base est vide comme si il n'y avait pas de valeur sur $_GET['id'] or quand je fais echo $_GET['id']; elle m'affiche une bonne valeur de l'ID , le numerom même qui devrait etre inserer dans la base..
je ne comprend pas pourquoi.. si quelqu'un pouvait m'aider un script de news avec systeme de commentaires c'est le plus rependu sur le net
merçi
voici le code concerné
[code]<?
include "connect.php";
$id = @$_GET['id'];
$sql = 'SELECT * FROM comment WHERE news_id="'.$id.'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.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é 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.'<br />'.mysql_error());
// 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: comment_zik.php');
// on termine le script courant
exit();
}
}
}
?>
<html>
<head>
<title>Insertion d'un Commentaire !</title>
</head>
<body>
<!-- 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 '<br /><br />',$erreur;
?>
</body>
</html>[/code]
et voici comment j'ai creer ma table..
[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 ;[/code]