Mon script plante..error sql syntax.

Bonjour,
mon script plante il menvoie l'erreur suivante:'"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 '&& prenom =' at line 1"
et jarrive plus a detecter lerreur ni dou elle vient!
pouvez vous maider svp. voici un extrait de mon code::
<?php

if (isset($_POST['mot_de_passe']) &&  isset($_POST['nom']) && isset($_POST['prenom'])) 
{  mysql_connect("localhost", "root", "");
        mysql_select_db("tests");
    
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
		$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
        $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
		$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs  WHERE nom ='. $nom .'  &&  prenom ='. $prenom .'')or die(mysql_error());
		$donnees = mysql_fetch_array($reponse);
}
else 
{   mysql_connect("localhost", "root", "");
        mysql_select_db("tests");
    $mot_de_passe = "";
	$nom = "";
	$prenom = "";
        
	$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs  WHERE nom ="" AND prenom =""')or die(mysql_error());
		$donnees = mysql_fetch_array($reponse);
}
 
if ($donnees['mot_de_passe'] == $mot_de_passe) 
{
Configuration: Windows XP
Firefox 2.0.0.16

12 réponses

  1. Salut,

    tu as qqs erreurs dans ta requette il faut des ' pour la comparaison et des AND à la place des &&

    ensuite tu as deux fois les balises DOC TYPE et <html body dans la même page

    je t'ai un peu refondu ton code essayes comme ça:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"­;>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <body>
    <?php
    //init variables de travail
    $valid=false;
    $msg="";
     //test si le formulaire d'identif a été posté 
    if (isset($_POST['mot_de_passe']) &&  isset($_POST['nom']) && isset($_POST['prenom'])) { 
    	mysql_connect("localhost", "root", "");
        mysql_select_db("tests");
        
        $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
    	$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']))­;
        $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
    	$reponse = mysql_query("SELECT mot_de_passe FROM visiteurs WHERE nom ='". addslashes($nom) ."' AND prenom ='". addslashes($prenom) ."'")or die(mysql_error());
    	mysql_close();
    	if(mysql_num_rows($reponse)==1){		
    		$donnees = mysql_fetch_array($reponse); 
    		if ($donnees['mot_de_passe'] == $mot_de_passe) {
    			$valid=true;
    			//c'est ok on affiche la suite
    
    ?>
    			<form action="....php" method="post">
            
    			<p>
    			<fieldset>
    				<legend><strong>.......</strong> :</legend>
       
    				............... 
    			</fieldset>
                  <input type="submit" value="Valider" /> <br />
    			</p>
    			</form>
    <?php
    		}else{
    			$msg="mot de passe incorrect";
    		}
    	}else{
    			$msg="Nom et/ou prenom non trouv&eacute;";
    	}
    }
    
    if ($valid==false){
    ?>
    	<fieldset>
    	       <legend><strong>Vos coordonnées:</strong></legend>
    	<form action="titre.php" method="post">
    	<p>
    	       <label for="prenom"><strong>Votre prenom</strong></label> :<br />
    		   <input type="text" name="prenom" id="prenom" />
    	   </p>
    	   <p>
    	       <label for="nom"><strong>Votre nom</strong></label>:<br />
    		   <input type="text" name="nom" id="nom" />
    	   </p>
    	    <p>
    	       <label for="password"><strong>Votre mot de passe</strong></label> :<br /> 
    		   <input type="password" name="mot_de_passe" id="pseudo" />
    	   </p>
    <?php
    	if($msg != ""){echo "<font color='red'>".$msg."</font>";
    ?>
    	   </fieldset>
    	    <p>
    		
    	       <input type="submit" value="Valider"  />
    		   <input type="reset" />
    	   </p>
    
    <?php
    	
    } 
    ?>
       </body>
    </html>
    
    
    1. je vous ai juste expliqué l'objectif voulu du code! c'est qu'il doit afficher deux pages :la première pour l'authentification et le passage à la deuxième page se fait en vérifiant si ces coordonnées (postées par l'utilisateur) correspondent à celles déjà existées dans une table de la base de données 'tests'.
      j'ai modifié un peu le script :il m'envoie cette fois-ci l'erreur: Unknown column 'hind' in 'where clause'
      si je m'authentifie avec hind par exemple/
      1. SVP essaie de bien écrire le français, j'aime pas le sms sa me fait ch***. Sinon, là le problème c'est que quand tu va sur ta page, tu vois les deux page en même temps, c'est sa (lors de la validation) ?
        Signature non conforme ==> Supprimée
        Modération CCM
        1. comment ca ts les infos!
          j vous ai di que lobjectif voulu de mon code est d'afficher 2 pages la 1ere contenant un formulaire pr lauthentification .puis le passage a la 2eme page aprés verification des coordonnées postées avec celles qui existe deja ds la base de données! c tt. é merci bcp pr ton aide:
          1. Salut,

            C'est quoi tu veux faire au faîte ? Je vois aucun while, mais tu veux obtenir TOUS les infos ? Il ne faut pas mettre deux mysql_fetch_array() dans la même page, si tu veux voir si tes info existe essaie un where + limit et ensuite un mysql_num_rows() ... Je comprends plus rien, soit précis.

            Cordialement,
            1. l prblme nest pas ds la requete !!!! mais ds laffichage: car ma table ne contien que 2 elements!
              j voi po vrémen ou se situe l prblme! pouvez vous jeter un otre coup doeil sur lensemble du code...
              1. Ben..., mais une limit à ta requête avec LIMIT X (x = chiffre) ... ou un WHERE....
                1. mais ca boucle infiniment :((( ca maffiche les pages une infinité de foi!!!!!!! :
                  1. Salut,

                    Tu dois ajouter un :

                    while($var = mysql_fetch_array($sqlquery))
                    {
                    donnée ici
                    }

                    ;)

                    exemple

                    $sql = mysql_query( 'SELECT `salut`, `lol` FROM `test` WHERE `test` =\'1\' LIMIT 10 ' );
                    while($row = mysql_fetch_array($sql))
                    {
                    echo "{$row['salut']}<br />";
                    }

                    va afficher :
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />
                    donnée<br />

                    voila ++
                    1. merci pr votre reponse!
                      g essayé le code avec la modification mais cette fois ci ,il nexecute point les boucles!
                      ce code a enfin pr objectif dafficher 2 pages .la 2eme aprés vérification du mot de passe posté dans la 1ere, avec celui
                      ds la BDD "tests".
                      le résultat mtn est laffichage des 2 pages en une seule!!!!!!!!!!!!!!!!!!!!!!

                      si vous pouvez detecter lerreur :( jen seré vraimen ravie::
                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
                          <head>
                              <title></title>
                              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                          </head>
                          <body>
                      
                      
                      <fieldset>
                             <legend><strong>Vos coordonnées:</strong></legend>
                      <form action="titre.php" method="post">
                      <p>
                             <label for="prenom"><strong>votre prenom</strong></label> :<br /> <input type="text" name="prenom" id="prenom" />
                         </p>
                         <p>
                             <label for="nom"><strong>Votre nom</strong></label>:<br /> <input type="text" name="nom" id="nom" />
                         </p>
                          <p>
                             <label for="password"><strong>Votre mot de passe</strong></label> :<br /> <input type="password" name="mot_de_passe" id="pseudo" />
                         </p>
                         </fieldset>
                          <p>
                      	
                             <input type="submit" value="Valider"  /> <input type="reset" />
                         </p>
                      
                      </form>
                      
                          </body>
                      </html>
                      <?php
                      
                      if (isset($_POST['mot_de_passe']) &&  isset($_POST['nom']) && isset($_POST['prenom'])) 
                      {  mysql_connect("localhost", "root", "");
                              mysql_select_db("tests");
                          
                          $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
                      		$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
                              $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe']));
                      		$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs WHERE nom ='. addslashes($nom) .' && prenom ='. addslashes($prenom) .'')or die(mysql_error());
                      $donnees = mysql_fetch_array($reponse); 
                      		
                      		//$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs  WHERE nom ='. $nom .'  &&  prenom ='. $prenom .'')or die(mysql_error());
                      		
                      }
                      else 
                      {   mysql_connect("localhost", "root", "");
                              mysql_select_db("tests");
                          $mot_de_passe = "";
                      	$nom = "";
                      	$prenom = "";
                              
                      	$reponse = mysql_query('SELECT mot_de_passe FROM visiteurs  WHERE nom ="" AND prenom =""')or die(mysql_error());
                      		$donnees = mysql_fetch_array($reponse);
                      }
                       
                      if ($donnees['mot_de_passe'] == $mot_de_passe) 
                      {
                      
                      ?>
                      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
                          <head>
                              <title></title>
                              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                          </head>    
                      
                      
                          <body>
                              <form action="....php" method="post">
                              
                              <p>
                      		<fieldset>
                             <legend><strong>.......</strong> :</legend>
                         
                       ............... 
                      </fieldset>
                                    <input type="submit" value="Valider" /> <br />
                      </p>
                      </form>
                      
                          </body>
                      
                      </html>
                      <?php
                      } 
                      ?>
                      
                      
                      
                      
                      
                      

                      i
                      1. Bonjour,

                        Essaie ceci :

                        <?php

                        if (isset($_POST['mot_de_passe']) && isset($_POST['nom']) && isset($_POST['prenom']))
                        { mysql_connect("localhost", "root", "");
                        mysql_select_db("tests");

                        $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
                        $prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']))­;
                        $mot_de_passe = mysql_real_escape_string(htmlspecialchars($_POST['mot_de_pas­se']));
                        $reponse = mysql_query('SELECT mot_de_passe FROM visiteurs WHERE nom ='. addslashes($nom) .' && prenom ='. addslashes($prenom) .'')or die(mysql_error());
                        $donnees = mysql_fetch_array($reponse);
                        }
                        else
                        { mysql_connect("localhost", "root", "");
                        mysql_select_db("tests");
                        $mot_de_passe = "";
                        $nom = "";
                        $prenom = "";

                        $reponse = mysql_query('SELECT mot_de_passe FROM visiteurs WHERE nom ="" AND prenom =""')or die(mysql_error());
                        $donnees = mysql_fetch_array($reponse);
                        }

                        if ($donnees['mot_de_passe'] == $mot_de_passe)
                        {
                        1. Salem;
                          Prend la requete et exécute la sur la CLI du Myslq, et regarde si c'est bon.