[PHP&Mysql]Pb de connexion

Salut,
essayer de créer un formulaire afin d'identifier un utilisateur mais j'ai une erreur au niveau de mysql_fetch_row (je pense)
voici le code:

formulaire.php:
<?php
 if (!isset($_COOKIE['college'])){
//creation formulaire
else{
    $tab=explode('#',$_COOKIE['max']);
    include 'requete.php';
    connection();
    verifcode($tab[0],$tab[1],$tab[2],$tab[3]);
    mysql_close();
  }

requete.php:
function connection(){
// Déclaration des paramètres de connexion
  $host   = 'localhost';
  $user   = 'root';
  $bdd    = 'college';
  $passwd = 'godevin';
// Connexion au serveur
  mysql_connect($host,$user,$passwd)
  or die("erreur de connexion au serveur:". mysql_error());
  mysql_select_db($bdd)
  or die("erreur de connexion a la base de donnees");
}

function verifcode($nom,$prenom,$classe,$code){
  $result=mysql_query("SELECT nom,prenom,classe,motdepasse FROM t_eleve
  WHERE nom=$nom
  AND WHERE prenom=$prenom
  AND WHERE classe=$classe
  AND WHERE motdepasse=$code");
//Verification des resultats
  if ($row=mysql_fetch_row($result)){
    setcookie('college','',0,'/','127.0.0.1',0);
    echo "<script language=\"javascript\" type=\"text/javascript\">
    window.open(\"formulaireeleve.php\",\"_self\")</script>";
  }
  else {
    echo "<script language=\"javascript\" type=\"text/javascript\">
    window.open(\"ChoixNotes.php\",\"_self\")</script>";
  }
}

voila si quelqu'un voit mon erreur je lui serait reconnaissant
Tchô!! :-)

12 réponses

  1. Je n'ai pas regardé ton problème en détail mais je peux déjà te corriger ta requête SQL :

    $result=mysql_query("SELECT nom,prenom,classe,motdepasse FROM t_eleve
    WHERE nom=$nom
    AND WHERE prenom=$prenom
    AND WHERE classe=$classe
    AND WHERE motdepasse=$code");

    est à remplacer par :
    $requete="SELECT nom, prenom, classe,motdepasse";
    $requete.=" FROM t_eleve";
    $requete.=" WHERE nom='".$nom."'";
    $requete.=" and prenom='".$prenom."'";
    $requete.=" and classe='".$classe."';
    $requete.=" and motdepasse='".$code."';
    $result=mysql_query($requete);

    Je te conseille de toujours dissocier l'écriture de la requête (dans une variable $requete de son exécution avec mysql_query. Cela te permettra de vérifier la syntaxe de ta requête en ajoutant une instruction : echo $requete;

    Elle doit te renvoyer le texte suivant :
    SELECT nom, prenom,classe,motdepasse FROM t_eleve WHERE nom='tonnom' and prenom='tonprenom' and classe='taclasse' and motdepasse='tonmotdepasse'

    Il ne peut y avoir plusieurs WHERE dans une requête SQL, les différents critères sont effectivement à séparer par des and mais au sein d'une même instruction WHERE.
    1. hum le champ Chti n existe pas :/
      par contre le champ nom existe :)
      1. Merci pour ta reponse
        mais mon problème ne viens pas de là, j'ai recopié exactement comme dans ma base mais j'ai la mçme erreur que si j'avait avec des données bidon! !-(((
        Bonne Fête de la musique! et remplissez vos oreilles de bon son !-)
        1. Salut c moi que revoila!
          j'ai un autre probleme avec ma base, voila j'ai essayer de rentrer des infos dans mon formulaire (ex: nom:Chti prenom:mat ...) c'est données sont presente dans ma base mais ça ne fonctionne pas j'ai fait après ma requete:
          mysql_query(...) or die(mysql_error()); et j'obtient une erreur:
          Champ 'Chti' inconnu dans where clause.
          Et Tant qu'on y est une ptite question: Est-ce que les majuscules/minuscules ont une importance?
          Merci d'avance!
          1. Oui les majuscule minuscule ont une importance, c'est probablement pourquoi ca ne fonctionne pas. :)

            Kalamit,
            5 jours avant le soleil, la mer et les mouettes. :)
        2. Merci pour ces reponses aussi rapide, il y a toujours quelques erreurs mais j'y suis presque :-)
          A la prochaine
          1. utlise mysql_num_rows($result)

            si ca retourne 0 ca veut dire qu'il existe pas dans la base
            sinon c'est qu'il existe
            1. Salut,
              Tu utilises mal mysql_fetch_row.
              Theoriquement, il faudrait que tu fasses ca:

              function verifcode($nom,$prenom,$classe,$code){
              	$result=mysql_query("SELECT nom,prenom,classe,motdepasse FROM t_eleve
              	WHERE nom=".$nom."
              	AND WHERE prenom=".$prenom."
              	AND WHERE classe=".$classe."
              	AND WHERE motdepasse=".$code);
              
              	//Récuperation des résultat de la requete.
              	while ($row = mysql_fetch_row($result)){
              		$nom_req = $row[0];
              		$prenom_req = $row[1];
              		$classe_req = $row[2];
              		$mdp_req = $row[3];
              
              		if (($nom == $nom_req) and ($prenom == $prenom_req) and ($classe == $classe_req) and ($code == $mdp_req)) {
              
              			//L'identification est réussie
              		}
              		else {
              			//L'identification a échoué
              		}
              
              	}
              }

              }
              Kalamit,
              5 jours avant le soleil, la mer et les mouettes. :)
              1. apres ta requete rajoute or die(mysql_error());

                $result=mysql_query("SELECT nom,prenom,classe,motdepasse FROM t_eleve
                WHERE nom='$nom'
                AND prenom='$prenom'
                AND classe='$classe'
                AND motdepasse='$code'") or die (mysql_error());
                1. Ca ne change rien j'ai tjrs un problème avec mysql_fetch_row
                  ca me marque:
                  Warning: mysql_fetch_row(): supplied argument is not valid MySQL result resource in ...\requete.php on line 34
                  (l.34-> if ($row=mysql_fetch_row($result)){...
                  A+
                  1. C'est normal, la fonction mysql_fetch_row ne s'utilise pas comme ca.
                    Cela peut vouloir dire également que ta requete ne te retourne aucun résultat.

                    Kalamit,
                    5 jours avant le soleil, la mer et les mouettes. :)
                2. Zut je c mm plu lire... et bein c bien parti ...et dire que cet aprem j'ai un examen de phisique ...
                  Esox

                  Eternel Questionneur. Seul et Unique membre de la : SPdLM
                  => Société Protectrice des Langages Maltraités
                  1. la requete est envoyée ici déjà
                    $result=mysql_query("SELECT nom,prenom,classe,motdepasse FROM t_eleve
                    WHERE nom=$nom
                    AND WHERE prenom=$prenom
                    AND WHERE classe=$classe
                    AND WHERE motdepasse=$code") :)

                    par contre un seul where suffit
                    et je mettrai des ' autour des variables '$prenom'
                    1. Tu dois effectuer la rekete avant d'extraire le resultat :

                      $result=mysql_query("SELECT nom,prenom,classe,motdepasse FROM t_eleve
                      WHERE nom=$nom
                      AND WHERE prenom=$prenom
                      AND WHERE classe=$classe
                      AND WHERE motdepasse=$code");
                      // Envoie de la rekete
                      $query = mysql_query($result);
                      //Verification des resultats
                      if ($row=mysql_fetch_row($query)){...

                      Eternel Questionneur. Seul et Unique membre de la : SPdLM
                      => Société Protectrice des Langages Maltraités