Perte de certains envois de formulaire à la base de données
14 messages
• Page 1 sur 1
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
Perte de certains envois de formulaire à la base de données
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).
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 :
Merci d'avance pour vos idées !
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: Tout sélectionner
$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: Tout sélectionner
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 !
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
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 
-

Leonick - WRInaute accro

- Messages: 19595
- Inscription: 8 Aoû 2004
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é
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é
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
Ok je vais essayer ça. Merci ! 
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
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...
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...
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
$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)
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)
- RomsIW
- WRInaute passionné

- Messages: 1144
- Inscription: 25 Mai 2004
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.
Après expériences, je ne saurai que trop préférer la syntaxe INSERT INTO table SET champs1='valeur1', champs2='valeur2', etc.
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
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.
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...
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...
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
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...
- CrazyCow007
- WRInaute discret

- Messages: 182
- Inscription: 28 Déc 2003
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...
14 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- importation de données dans base de données
- Base de données de Google Base
- Plantage serveur et perte de donnees
- Perte de données suite migration serveur
- Passer Google Analytics en SSL : perte de données ?
- base de donnees
- Suppression Base de données
- achat de base de données
- Valeur base de données HELP !
- Base de données ville/IP
Consultez la description détaillée des produits ou services de Google suivants : Google Base
- Test data centers Google
Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données). - Google Suggest
Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

