IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

You have an error in your SQL syntax


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut You have an error in your SQL syntax
    bonjour me voici une fois de plus avec un petit problème (je pense )

    j'ai crée un formulaire avec des listes déroulante dedans qui affiche des donnée de la bdd (MySQL) et lors de la validation de mes information je recupère les donnée du formulaire dans un code Php qui effectue l'INSERT. mais une erreur s'affiche voici l'erreur:

    ErreurYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ONEFIT'','Mr','SELECT CODE FROM CODIFICATION WHERE LIBELLE='Mr'','stagiaire','em' at line 3 : 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 'ONEFIT'','Mr','SELECT CODE FROM CODIFICATION WHERE LIBELLE='Mr'','stagiaire','em' at line 3
    et voici le code de mon formulaire:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <!--------- FORMULAIRE EMPLOYE ------------->
    <div class="formulaire" id="d2">
    	<form method="post" action="ajout_personne.php">
    		<table id="table">
    		<tr align="center" height="20">
    			<td width="160"><p>Nom :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Nom_p" /><font size="1"></font></p></td>
    			<td width="160"><p>Prénom :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Prenom_p" /><font size="1"></font></p></td> 
    		</tr>
    		<tr align="center" height="20">
    			<td width="160"><p>Login :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Login_p" /><font size="1"></font></p></td>
    			<td width="160"><p>Mot de passe :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Mdp_p" /><font size="1"></font></p></td> 
    		</tr>
    <!-- liste déroulante pour la sélection de la civilité -->
    		<tr align="center" height="20">
    			<td width="160"><p>Civilité :<font size="1"></font></p></td>
    <!-- début du code pour la liste déroulante -->
    			<td width="160"><p>
    <?php
            $reponse=mysql_query("SELECT LIBELLE FROM CODIFICATION WHERE NATURE = 'civilite'"); // requete sur la bdd pour recupérer les libelle de civilite (Mr,Mme...) 
            echo"<select name='Civilite_p'>";
            while ($donnees = mysql_fetch_array($reponse)) // création de la boucle sur le résultat de la requete effectuer avant. 
            {
    // Cette boucle a pour bute de lister toute les valeures reçu via la requete sous forme de liste                                                                       
                    echo"<option value='".$donnees ['LIBELLE']."'>".$donnees['LIBELLE']."</option>"; //on donne le nom du libelle en valeur et on affiche celui ci grace a la boucle 
            }
            echo"</select>";
    ?>	
    				<font size="1"></font></p></td>
    <!-- fin du code de la liste déroulante + fin de la liste -->
    			<td width="160"><p>fonction :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Fonction_p" /><font size="1"></font></p></td> 
    		</tr>
    		<tr align="center" height="20">
    			<td width="160"><p>Groupe :<font size="1"></font></p></td>
    			<td width="160"><p>
    <?php
            $reponse=mysql_query("SELECT LIBELLE FROM CODIFICATION WHERE NATURE = 'nature_groupe_personne'"); // requete sur la bdd pour recupérer les libelle des nature_groupe (r&h,production...) 
            echo"<select name='Groupe_p'>";
            while ($donnees = mysql_fetch_array($reponse)) // création de la boucle sur le résultat de la requete effectuer avant. 
            {
    // Cette boucle a pour bute de lister toute les valeures reçu via la requete sous forme de liste
                    echo"<option value='".$donnees ['LIBELLE']."'>".$donnees['LIBELLE']."</option>"; // on donne le nom du libelle en valeur et on affiche celui ci grace a la boucle                                                                               }
            }
            echo"</select>";
    ?>
    				<font size="1"></font></p></td>
    			<td width="160"><p>Etablissement :<font size="1"></font></p></td>
    			<td width="160"><p>
    				<select name="Etablissement_p">
    					<option value="ONEFIT"> ONEFIT </option>
    				</select>
    				<font size="1"></font></p></td> 
    		</tr>
    		<tr align="center" height="20">
    			<td width="160"><p>téléphone fixe :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="TelFixe_p" /><font size="1"></font></p></td>
    			<td width="160"><p>téléphone portable :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="TelPort_p" /><font size="1"></font></p></td> 
    		</tr>
    		<tr align="center" height="20">
    			<td width="160"><p>Fax :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Fax_p" /><font size="1"></font></p></td>
    			<td width="160"><p>E-mail :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Mail_p" /><font size="1"></font></p></td> 
    		</tr>
    		<tr align="center" height="20">
    			<td width="160"><p>Date d'arrivée :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Darrivee_p" /><font size="1"></font></p></td>
    			<td width="160"><p>Contrat :<font size="1"></font></p></td>
    			<td width="160"><p><input type="text" name="Contrat_p" /><font size="1"></font></p></td> 
    		</tr>
    		</table>
    		<input type="submit" value="Création de la personne" />
    	</form>
    </div>

    et le code de ma page php qui effectue l'insert:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php	
     
    	//connexion Mysql 
    	$base="onefit";
    	$srv=mysql_connect('127.0.0.1','root','');
    	$bdd=mysql_select_db("$base");
     
    	// recupération des information saisi dans le formulaire
     
    	$nom=$_POST['Nom_p'];
    	$prenom=$_POST['Prenom_p'];
    	$login=$_POST['Login_p'];
    	$mdp=$_POST['Mdp_p'];
    	$civilite=$_POST['Civilite_p']; // liste a regarder
    	$fonction=$_POST['Fonction_p']; 
    	$groupe=$_POST['Groupe_p']; // liste a regarder
    	$etablissement=$_POST['Etablissement_p']; // liste a regarder
    	$tel_fix=$_POST['TelFixe_p'];
    	$tel_port=$_POST['TelPort_p'];
    	$fax=$_POST['Fax_p'];
    	$mail=$_POST['Mail_p'];
    	$date_arr=$_POST['Darrivee_p'];
    	$contrat=$_POST['Contrat_p'];
     
    	$code_etab="SELECT CODE FROM CODIFICATION WHERE LIBELLE='".$etablissement."'";
    	$code_civ="SELECT CODE FROM CODIFICATION WHERE LIBELLE='".$civilite."'";
    	$code_statut="SELECT CODE FROM CODIFICATION WHERE LIBELLE='enploye'";
    	$code_groupe="SELECT CODE FROM CODIFICATION WHERE LIBELLE='".$groupe."'";
    	$date_enregistre=  date("Y-m-d");
     
    	$req2 = "INSERT INTO PERSONNE (num_Personne,num_etablissement,nature_civilite,code_civilite,fonction_personne,nature_statut,code_statut,nature_groupe,code_groupe,
    									nom,prenom,telFix,telPort,fax,mail,type_contrat,date_arrivee,date_depart,login,mdp,date_enregistrement,com)
    			VALUES('','$code_etab','$civilite','$code_civ','$fonction','employe','$code_statut','$groupe','$code_groupe','$nom',
    					'$prenom','$tel_fix','$tel_port','$fax','$mail','$contrat','$date_arr,'','$login','$mdp',$date_enregistre,'')";
    	$resultat2= mysql_query($req2) or die ('Erreur'.mysql_error().' : '.mysql_error());
     
    	echo"<form method='post' action='creer_Codification.php'>";
    			echo"<center>l'employer a bien été crée <br/>";
    			echo"<input type='submit' value='OK' />";
    			echo"</center></form>";
     
    ?>
    je pense que je n'ai pas fais une grosse erreur mais je n'arrive pas a voir ou ça cloche. Je vous remercie d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Enlève les guillemets autour des tes variables contenant des requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VALUES('',$code_etab,$civilite
    Par ailleurs on n'insère pas directement du texte dans une requête, surtout quand il provient de l'utilisateur.
    Au minimum utilise mysql_real_escape_string().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    quand tu dit on ne met pas de texte directement dans la requête tu parle de 'employe' ? c'est pas l'utilisateur qui met ça c'est mis sans qu'il le saisisse vue que ce formulaire ne concerne que les employe, ça pose des problème de le mettre comme ça en dur?

    j'ai retirer les guillements et ca me met tj le même message d'erreur

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    quand tu dit on ne met pas de texte directement dans la requête tu parle de 'employe' ?
    Non je parle de tout ce qui vient de $_POST

    j'ai retirer les guillements et ca me met tj le même message d'erreur
    un message d'erreur je veux bien, le même je ne pense pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Par défaut
    j'vais peut être dire une c0nnerie ..

    Mais faudrait pas mettre les variables contenant des requêtes entre parenthèses ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $code_etab="(SELECT CODE FROM CODIFICATION WHERE LIBELLE='".$etablissement."')";

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Par défaut
    Citation Envoyé par sabotage Voir le message
    un message d'erreur je veux bien, le même je ne pense pas.
    et pourtant (a quelque mot près) :

    ErreurYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT CODE FROM CODIFICATION WHERE LIBELLE='ONEFIT',Mr,SELECT CODE FROM CODIFIC' at line 3 : 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 'SELECT CODE FROM CODIFICATION WHERE LIBELLE='ONEFIT',Mr,SELECT CODE FROM CODIFIC' at line 3
    camyo j'ai tester et ca ne change rien :s

  7. #7
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Tu as deux syntaxes différentes, selon si ta valeur est une sous-requête ou une chaîne de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php	
     
            $civilite = $_POST['Civilite_p'];
     
    	$code_etab = 'SELECT CODE FROM CODIFICATION WHERE LIBELLE="'.mysql_real_escape_string($etablissement).'"';
     
    	$req2 = 'INSERT INTO PERSONNE (num_Personne,num_etablissement,nature_civilite)
    			VALUES("",('.$code_etab.'),"'.mysql_real_escape_string($civilite).'")';
    Faut mettre des guillemets s'il s'agit d'une chaîne de caractère mais pas s'il s'agit d'une sous-requête
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  8. #8
    Membre très actif
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Par défaut Optimisation de la page du formulaire
    Principe : Séparer la partie traitement du HTML

    Traitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    	$reponse = mysql_query('SELECT libelle, nature FROM codification ORDER BY libelle ASC');
     
    	$g = array();
    	while ($v = mysql_fetch_object($reponse))
    	{
    		$g[$v->NATURE] .= '<option value="' . $v->libelle . '">' . $v->libelle . '</option>';
    	}
    	$civilite = '<select name="Civilite_p">' . implode( $g['civilite'] )                . '</select>';
    	$groupe   = '<select name="Groupe_p">'   . implode( $g['nature_groupe_personne'] )  . '</select>';
    ?>

    Rendu de ta page

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <div class="formulaire">
    	<form method="post" action="ajout_personne.php">
    		<table>
    		<tr>
    			<td>Nom :</td>
                <td><input type="text" name="Nom_p" /></td>
                <td>Prénom :</td>
                <td><input type="text" name="Prenom_p" /></td> 
    		</tr>
    		<tr>
    			<td>Login :</td>
                <td><input type="text" name="Login_p" /></td>
                <td>Mot de passe :</td>
                <td><input type="text" name="Mdp_p" /></td> 
    		</tr>
    		<tr>
    			<td>Civilité :</td>
    			<td><?php echo $civilite ?></td>
    			<td>Fonction :</td>
                <td><input type="text" name="Fonction_p" /></td> 
    		</tr>
    		<tr>
    			<td>Groupe :</td>
                <td><?php echo $groupe ?></td>
                <td>Etablissement :</td>
                <td><select name="Etablissement_p"><option value="ONEFIT"> ONEFIT </option></select></td> 
    		</tr>
    		<tr>
    			<td>Téléphone fixe :</td>
                <td><input type="text" name="TelFixe_p" /></td>
                <td>Téléphone portable :</td>
                <td><input type="text" name="TelPort_p" /></td> 
    		</tr>
    		<tr>
    			<td>Fax :</td>
                <td><input type="text" name="Fax_p" /></td>
                <td>E-mail :</td>
                <td><input type="text" name="Mail_p" /></td> 
    		</tr>
    		<tr>
    			<td>Date d'arrivée :</td>
                <td><input type="text" name="Darrivee_p" /></td>
                <td>Contrat :</td>
                <td><input type="text" name="Contrat_p" /></td> 
    		</tr>
    		</table>
    		<input type="submit" value="Création de la personne" />
    	</form>
    </div>

Discussions similaires

  1. [MySQL] You have an error in your SQL syntax
    Par Chipss dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/04/2011, 00h48
  2. erreur #1064 - You have an error in your SQL syntax;
    Par tamatifa dans le forum Installation
    Réponses: 1
    Dernier message: 20/05/2009, 22h21
  3. [MySQL] erreur dans une boucle ?You have an error in your SQL syntax; check the manual that c
    Par keokaz dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/10/2008, 23h08
  4. Erreur incomprehensible:You have an error in your SQL syntax.
    Par Siguillaume dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/06/2008, 10h18
  5. You have an error in your SQL syntax; check the manual ..
    Par Spaccio dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/07/2006, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo