problème de requête formulaire php/mysql

Eléphanteau du PHP | 15 Messages

01 juil. 2011, 00:50

Bonsoir tout le monde, j'ai beaucoup de problèmes et je tiens à remercier tout le monde (ils se reconnaitront :wink: ) pour leur aide précieuse qui me permette de sortir la tête de l'eau et d'apprendre en même temps.

Grâce à l'aide de Mazzarini, Moogli et de macgawel, j'ai enfin réussi a faire ce que je souhaitais. Désormais je peux me lancer dans mon vrai projet

Voila je cherche à monter un formulaire qui complète une base de données il s'inspire de ce site http://www.phpdebutant.org/article67.php depuis ce soir je m'énerve car je ne comprend pas pourquoi j'obtient un message sql d'erreur alors que le modèle de démo marche

le dossier de mon projet est à l'adresse suivante http://www.megaupload.com/?d=1BTNLMWX.
Dans ce dossier, il ya
_ un txt avec le code sql a copier coller dans une database sql
_ le formulaire html
_ add.php qui permet l'action d'enrichissement de la table.
_ un autre fichier txt est un copier/coller de l'erreur.

PS : Ne me grondez pas si tout est en VARCHAR, je le sais, je corrige les formats dans phpmyadmin ; la requete sql ne passait pas :cry:

Si quelqu'un pouvait m'aider ou m'aiguiller

Merci d'avance.

=D> Encore félicitations aux membres du forum pour leur aide, leur réactivité et leur serviabilité.=D> Rien ne leur fait peur

ViPHP
ViPHP | 2577 Messages

01 juil. 2011, 08:38

Bonjour,

Le plus simple serai de nous montrer le SQL qui plante et le message d'erreur

Une modification de ton code dans ce genre fera l'affaire pour l'accès qui pose problème.
$SQL = ?:
mysql_query($SQL);
if (mysql_errno() <> 0) echo $SQL,'<br>',mysql_error(),'<br>';

Eléphanteau du PHP | 15 Messages

01 juil. 2011, 10:59

bonjour Mazarini
je te joins la requête en question (elle est longue)

     // on écrit la requête sql 
    $sql = "INSERT INTO metadata (id, titre, Description, identifiant, theme_iso1, theme_iso2, theme_iso3, Extension_geo, nord, sud, est, ouest, Date_data, Date_publi, Date_revision, etendue_temporelle_deb, etendue_temporelle_fin, genealogie, contact_org, contact_adresse, contact_ville, contact_CP, organisme_org, organisme_adresse, organisme_ville, organisme_CP, organisme_mail, contraintes_acces, motscles1, motscles2, motscles3, motscles4) VALUES('', '$titre', '$Description', '$identifiant', '$theme_iso1', '$theme_iso2', '$theme_iso3', '$Extension_geo', '$nord', '$sud', '$est', '$ouest', '$Date_data', '$Date_publi', '$Date_revision', '$etendue_temporelle_deb', '$etendue_temporelle_fin', '$genealogie', '$contact_org', '$contact_adresse', '$contact_ville', '$contact_CP', '$organisme_org', '$organisme_adresse', '$organisme_ville', '$organisme_CP', '$organisme_mail', '$contraintes_acces', '$motscles1', '$motscles2', '$motscles3', '$motscles4)";
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
Merci encore

ViPHP
ViPHP | 2577 Messages

01 juil. 2011, 11:08

Bonjour,

Qu'affiche le "OR die('Erreur SQL !'.$sql.'<br>'.mysql_error());" ?

Le message toi t'indiquer une piste pour trouver l'erreur. Par exemple qu'il manque une quote dans ton ordre SQL ou que id n'est pas numérique.

Tu peux faire un copié/collé de la requête affichée lors du die(...) et l'exécuter via phpmyadmin.

De plus si une de tes variables contients une quote, cela peut faire planter la requete (cf fonction mysql_real_escape_string)

Eléphanteau du PHP | 15 Messages

01 juil. 2011, 11:32

voila ce que m'affiche le résultat quand je valide mon formulaire
Erreur SQL !INSERT INTO metadata (id, titre, Description, identifiant, theme_iso1, theme_iso2, theme_iso3, Extension_geo, nord, sud, est, ouest, Date_data, Date_publi, Date_revision, etendue_temporelle_deb, etendue_temporelle_fin, genealogie, contact_org, contact_adresse, contact_ville, contact_CP, organisme_org, organisme_adresse, organisme_ville, organisme_CP, organisme_mail, contraintes_acces, motscles1, motscles2, motscles3, motscles4) VALUES('', '01-01-2010', '', 'D01', 'test', 'urbanisme', 'développement économique', 'RGF93_Lambert_93', '7083515.605100', '7045866.790000', '662668.9546', '621829.594700', '01-01-2010', '01-01-2010', '01-01-2010', '01-01-2010', '01-01-2010', 'Version officielle', 'moi', 'mon adresse', 'ma ville', '00000', 'moi', 'mon adresse', 'ma ville', '00000', '[email protected]', 'Droits particuliers', 'test', 'test', 'test', 'test)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test)' at line 1
je n'ai pas le tableau orange qui me dit qu'il y a une erreur mais qu'il y a une erreur de syntaxe.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 juil. 2011, 11:42

si tu regarde bien ta requete SQL tu verre qu'il te manque une ' au dernier champ (test)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

01 juil. 2011, 11:46

Merci j'avais pas vu ça marche

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 juil. 2011, 13:19

de rien, c'est écrit dans le message d'erreur : for the right syntax to use near ''test)' en gros : trouve la bonne syntaxe prés de "test)" et la on voit le truc ;) (pour c'est la traduction avec mes mots a moi hein c'est pas de l'académique ;) )

peut tu marquer ton sujet comme résilo ? :)

@+
Il en faut peu pour être heureux ......