par
Calimero » 27 juil. 2008, 21:03
Chez un hébergeur, l'affichage des erreurs dans la page est souvent désactivé - l'hébergeur part du principe que tu y place un site pour tes visiteurs, et que tes visiteurs n'ont pas à voir les messages d'erreur liés au code s'il y en a.
Si tu regardes dans le log d'erreur chez ton hébergeur, tu y trouveras sûrement la même erreur et peut-être d'autres.
Tu peux très bien cacher ce message sur ta configuration de développement en jouant avec le paramètre error_reporting du php.ini, mais je ne te le conseille pas. C'est plutôt bien que tu sois informé de ce qui ne va pas dans ton site, non ?
Ton erreur se produit quand ta requête ne retourne aucun enregistrement. Comme tu ne testes pas le nombre d'enregistrements retournés, PHP essaye d'en lire un quoiqu'il arrive (même lorsqu'il n'y en a pas), et alors il t'informe que ça déconne
Pour régler le problème, il faut donc utiliser la fonction mysql_num_rows() dans un test supplémentaire :
//INSERT MESSAGE
if ($_POST['message'] > ''){
if (isset($CURUSER)){
$query = "SELECT COUNT(*) FROM shoutbox WHERE message='".$_POST['message']."' AND user='".$CURUSER['username']."' AND UNIX_TIMESTAMP()-UNIX_TIMESTAMP(date) < 30";
$result = mysql_query($query);
// Ici le test en plus, pour être sûr que la requête ramène bien quelquechose :
if(mysql_num_rows($result)) {
$row = mysql_fetch_row($result);
if ($row[0] == '0') {
$query = "INSERT INTO shoutbox (msgid, user, message, date, userid, avatar) VALUES (NULL, '".$CURUSER['username']."', '".unesc($_POST['message'])."', '".get_date_time()."', '".$CURUSER['id']."', '".$CURUSER['avatar']."')";
mysql_query($query);
}
}
}
}
[/quote]
Chez un hébergeur, l'affichage des erreurs dans la page est souvent désactivé - l'hébergeur part du principe que tu y place un site pour tes visiteurs, et que tes visiteurs n'ont pas à voir les messages d'erreur liés au code s'il y en a.
Si tu regardes dans le log d'erreur chez ton hébergeur, tu y trouveras sûrement la même erreur et peut-être d'autres.
Tu peux très bien cacher ce message sur ta configuration de développement en jouant avec le paramètre error_reporting du php.ini, mais je ne te le conseille pas. C'est plutôt bien que tu sois informé de ce qui ne va pas dans ton site, non ? ;-)
Ton erreur se produit quand ta requête ne retourne aucun enregistrement. Comme tu ne testes pas le nombre d'enregistrements retournés, PHP essaye d'en lire un quoiqu'il arrive (même lorsqu'il n'y en a pas), et alors il t'informe que ça déconne :-)
Pour régler le problème, il faut donc utiliser la fonction mysql_num_rows() dans un test supplémentaire :
[php]//INSERT MESSAGE
if ($_POST['message'] > ''){
if (isset($CURUSER)){
$query = "SELECT COUNT(*) FROM shoutbox WHERE message='".$_POST['message']."' AND user='".$CURUSER['username']."' AND UNIX_TIMESTAMP()-UNIX_TIMESTAMP(date) < 30";
$result = mysql_query($query);
// Ici le test en plus, pour être sûr que la requête ramène bien quelquechose :
if(mysql_num_rows($result)) {
$row = mysql_fetch_row($result);
if ($row[0] == '0') {
$query = "INSERT INTO shoutbox (msgid, user, message, date, userid, avatar) VALUES (NULL, '".$CURUSER['username']."', '".unesc($_POST['message'])."', '".get_date_time()."', '".$CURUSER['id']."', '".$CURUSER['avatar']."')";
mysql_query($query);
}
}
}
}[/php][/quote]