Perte de certains envois de formulaire à la base de données

WRInaute discret
Bonjour,

J'ai mis en place un système permettant aux visiteurs de mon site de poster des réactions (sur le film Casino Royale), qui ensuite apparaissent dans ma console d'admin pour être validées ou supprimées.

Le problème que j'ai déjà remarqué est que certains messages lorsqu'ils sont validés n'apparaissent pas dans la base de données. Pourtant le script n'affiche aucune erreur PHP.

J'ai essayé beaucoup de possibilités différentes mais rien n'y fait c'est très étrange (ça ne vient ni de la longueur ni de caractères spéciaux) :?

Je vous met une portion du code qui ajoute les données du formulaire à la BDD (4 informations au total : date, auteur, commentaire et note).

Code:
$auteur = htmlspecialchars($auteur, ENT_QUOTES);
$auteur = spec_chars($auteur);
$commentaire = trim($commentaire);
$commentaire = htmlspecialchars($commentaire);
$commentaire = nl2br($commentaire);
$commentaire = spec_chars($commentaire);
$commentaire = str_replace("Â","",$commentaire);
$date = date('j M Y \à G:i');
$date = spec_chars($date);
db_connect();
$sql = "INSERT INTO $dbtable (ok, auteur, commentaire, note, date) VALUES ('0', '$auteur', '$commentaire', '$note', '$date')";
mysql_query ($sql);

Vous remarquerez que j'ai mis beaucoup de sécurités pour formater le texte entré par l'utilisateur. Il est possible que le problème vienne de là.

Annexe :
Code:
function spec_chars($chaine) {
  for ($i = 161; $i < 255; $i++)
    $chaine = ereg_replace(chr($i), "&#$i;", $chaine);
  return $chaine;
}

Merci d'avance pour vos idées !
 
WRInaute discret
J'ai compris qu'il était inutile lorsque magic_quotes_gpc était sur on, ce qui est le cas sur mon serveur chez OVH. D'ailleurs j'avais essayé de le faire mais ça me rajoute juste des \ supplémentaires. Par défaut addslashes est ajouté à chaque enregistrement dans la base :wink:
 
WRInaute accro
la solution, c'est d'enregistrer dans un fichier la variable $sql quand mysql_query ($sql); renvoie une erreur.
Et ensuite, de faire le test de cette insertion avec phpmyadmin.
car j'ai eu ce problème chez OVH d'insertion qui ne se faisaient pas et en ajoutant addslashes ça a remarché :D
 
WRInaute discret
De l'insertion. Tout le reste (fonction update) marche sans problème.

Je pense qu'il doit y avoir une situation ou l'insertion ne peut pas se faire, mais j'ai pourtant essayé toutes les possibilités avec les " et les ' mais à chaque fois ça marche. C'est assez étrange en fait...

Donc j'ai mis en place un code qui m'envoit par mail s'il y a une erreur SQL toutes les infos de l'erreur et le contenu du formulaire... Faudrait-il encore que ça génère une erreur... :?
 
WRInaute discret
$sql :
INSERT INTO reactions (ok, auteur, commentaire, note, date) VALUES ('0', 'PseudoDeTest', 'Hello world !', '8', '19 Nov 2006 à 17:09')

Dans la BDD :
id - int(5) - auto_increment
ok - tinyint(1)
auteur - varchar(40)
date - varchar(40)
commentaire - text
note - int(2)
 
WRInaute passionné
ok là dessus, d'après les infos données, tout va bien, il doit y avoir autre chose. As tu essayé un echo mysql_error(); juste après la requête pour vérifier ?

Après expériences, je ne saurai que trop préférer la syntaxe INSERT INTO table SET champs1='valeur1', champs2='valeur2', etc.
 
WRInaute discret
J'ai essayé echo mysql_error(); mais ça ne m'affiche rien et l'ajout dans la base se fait comme il faut. Même avec tous les caractères spéciaux possibles. :roll:

Moi je me rappelle quand j'ai eu ce problème aussi, qu'aucune erreur mysql n'était affichée. Donc je ne pense pas que j'en saurais plus avec le système d'alerte par mail...
 
WRInaute discret
Je pense que je vais laisser comme ça. Peut-être que c'était un problème interne chez l'hébergeur... Espérons que ça ne se reproduise plus...
 
WRInaute passionné
vérifie l'auteur, etc.

mais le mieux est de faire un rapport d'erreurs par email pour que tu aies des infos de debug..

bonne continuation
 
WRInaute discret
Oui effectivement j'ai rajouté les mêmes vérifications pour l'auteur que pour le commentaire. Et pour le moment j'ai déjà validé une vingtaine de réactions sans avoir reçu de mail d'erreur. Donc ça à l'air de tenir la route maintenant...
 
Discussions similaires
Haut