Erreur de synthaxe

ArnaudB
Invité n'ayant pas de compte PHPfrance

21 nov. 2007, 13:20

Bonour à tous,

Je fais un peu de php et là j'ai un petit soucis de synthaxe.

Il me dit "Erreur de syntaxe près de 'references WHERE nom='' AND jj='' AND mm='' AND aaaa=''' à la ligne 1"

Voici le code:
<?php
include("../include/configuration.php");

// Récupération des variables formulaires
$nom = $_POST['nom'];
$jj = $_POST['jj'];
$mm = $_POST['mm'];
$aaaa = $_POST['aaaa'];
$texte1 = $_POST['texte1'];
$texte2 = $_POST['texte2'];
$texte3 = $_POST['texte3'];
$texte4 = $_POST['texte4'];
$texte5 = $_POST['texte5'];
$texte6 = $_POST['texte6'];
$description = $_POST['description'];

// Verif existe référence
$select_ref_verif = mysql_query(" SELECT nom, jj, mm, aaaa FROM references WHERE nom='$nom' AND jj='$jj' AND mm='$mm' AND aaaa='$aaaa' ") or die (mysql_error());
$nb_verif_exist = mysql_num_rows($select_ref_verif);
if($nb_verif_exist >=1)
{
echo "<center><b><font color='red'>Cette référence client est déja présente dans la base de donnée</font></b><br>";
return FALSE;
}
?>
Merci pour votre aide.

Eléphant du PHP | 319 Messages

21 nov. 2007, 13:33

on dirait que ton formulaire n'envoit pas les variables a ta page de traitement.
as tu essaye de faire un echo de tes variables?

par ailleurs (mais ce n'est que mon opinion): pourquoi tu ne crees pas un champs date dans ta base de donnees au format qui t'arranges plutot que de separer jj, mm, aaaa ??

si tu as un champs "date" au format "aaaa-mm-jj", quand tu recuperes tes variables de formulaire tu les remets sous cette forme PUIS tu fais ta requete SELECT.

ca t'eviterait d'avoir plusieurs AND.
niveau: pas terrible en php mais je me soigne...

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

21 nov. 2007, 13:44

"references" est un mot clé SQL réservé (pour définir des contraintes d'intégrités), il n'est donc pas judicieux de l'utiliser comme nom de table.

Sous MySQL tu peux toujours le protéger avec les quotes inversées (alt gr+7) : `references` pour que MySQL considère la chaine et non pas le mot clé, mais c'est pas franchement la solution la plus propre... si c'est possible et que cela n'engendre pas trop de modif, renomme ta table : reference_machin, ref_truc ... :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ArnaudB
Invité n'ayant pas de compte PHPfrance

21 nov. 2007, 13:46

OK merci je vais essayer.

ViPHP
ViPHP | 4039 Messages

21 nov. 2007, 14:03

on dirait que ton formulaire n'envoit pas les variables a ta page de traitement.
as tu essaye de faire un echo de tes variables?
?
par ailleurs (mais ce n'est que mon opinion): pourquoi tu ne crees pas un champs date dans ta base de donnees au format qui t'arranges plutot que de separer jj, mm, aaaa ??
Ca c'est une bonne idée (petit lien). Comme la valeur sera considérée comme une date (et non plus un chiffre), le classement et la recherche s'en retrouveront facilités.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ArnaudB
Invité n'ayant pas de compte PHPfrance

21 nov. 2007, 14:06

Je viens de voir quand dans phpmyadmin les requetes s'ecrivent avec le quote inversé:
SELECT * FROM `ref_client` donc je suis oligé de les mettres pour que celà fonctionne.

Une configuration peut être ?

Pour la date c'est fait OK. :D

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

21 nov. 2007, 16:52

En fait, pour ne pas s'ennuyer avec des noms de table ou de colonne pouvant être des mot clés SQL, phpMyAdmin leur ajoute systématiquement des ` dans ses requêtes.

Toi tu n'es obligé de le faire que si le nom du champ ou de la table est un mot clé réservé, mais sinon tu peux très bien t'en passer (y compris lorsque tu exécutes tes requêtes dans phpMyAdmin)

Les quotes inversées étant spécifiques à MySQL, il vaut mieux prendre l'habitude de ne pas avoir à les utiliser en choisissant des noms qui ne sont pas réservés :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

arnaudB
Invité n'ayant pas de compte PHPfrance

21 nov. 2007, 22:18

La j'ai changé le nom par ref_client mais si je ne met pas les ' ça ne marche pas.

ArnaudB
Invité n'ayant pas de compte PHPfrance

21 nov. 2007, 22:40

Autant pour moi. Mauvais chargement de page. celà fonctionne à merveille. Merci à vous !!! :D