Problème de requête et variables PHP

Résolu
Bonjour, j'ai un p'tit problème à un niveau inconnu et je cherche comment le résoudre.

Le contexte est simple : j'inscrit mon numéro d'identification et mon nom de famille et celui ci doit me diriger vers une page adherent / administrateur ou visiteur.


voici la page de formulaire : connexion.php

<div id='milieu_contenu'>
<form method='POST' action='#'><div class='contourCentre'>
<table><tr><td>Nom de famille :</td><td><input type='text' name='famille'/></td></tr>
<tr><td>N° d'identification :</td><td><input type='password' name='pass'/></td></tr>
<tr><td><br/></td></tr><tr><td><input type='submit' id='lien-bouton' value='se connecter'/></td></tr></table></div></form>
<?php
if (isset($_POST['famille']) and isset($_POST['pass']))
{
include('modele/m_verif.php');
}
?>
</div>


la page de vérification : m_verif.php

<?php
include('connexion_sql.php');
$req = "SELECT * FROM utilisateur WHERE nom='".$_POST["famille"]."' AND id=".$_POST["pass"];
$res= mysql_query($req);

if ($res)
{
header ('location: index.php?utilisateur=$resultat');
session_start();
}
else
{
echo $res." ".$_POST["famille"];
echo"<font color=red>Vous ne pouvez pas vous connecter !</font>";
//echo "<meta http-equiv=\"refresh\" content=\"3;URL=../index.php?page=connexion\">";
}
?>


J'ai fait un "echo" de $res et $_post['famille'] a la fin pour voir ce qu'il me retourne à chaque fois. le $res ne me retourne rien mais le $_post me récupère bien ma variable.
La requête fonctionne très bien dans le phpmyadmin :

SELECT * FROM utilisateur WHERE nom='Bob' AND id=1

Merci à vous si vous me débloquez.

8 réponses

  1. Tu execute la query avec
    $res= mysql_query($req); 

    mais tu dois parcourir les résultats en faisant par exemple :
    while ($row = mysql_fetch_array($res)) {
        echo $row['nom_du_champ_dans_la_table'];
    }
    


    Pour tester si tu as des résultats, tu peux faire
    if (mysql_num_rows($res)>0) {
    
    }
    


    Tu fais un "if $res" => redirige, sinon echo $res .. petit problème de logique la aussi

    Voila j'espère que ca pourra t'aider :)
    1. Même résultat, j'avais déjà essayé de parcourir les résultats de ma requête mais ça n'avais pas marché. Ca m'énerve un peu je reste dessus depuis 2 jours u_u ...
      Merci en tout cas
      1. Bonjour,

        Remplace la ligne $res= mysql_query($req); par $res= mysql_query($req)or die(mysql_error());

        Si tu as une erreur SQL tu la verras.

        Pense à activer le display_errors.
        1. voir remarques:
          la page de vérification : m_verif.php 
          
          <?php 
          include('connexion_sql.php'); 
          //penses a securiser les valeurs reçues d'un formulaire avant la requette 
          $famille=mysql_real_escape_string($_POST["famille"]); 
          $id=mysql_real_escape_string($_POST["id"]); 
          $req = "SELECT * FROM utilisateur WHERE nom='".$famille."' AND id=".$id; 
          $res= mysql_query($req)  or die("Pb avec la requette: ".mysql_error()); 
          if(mysql_num_rows($res)>0){ 
           //si on a trouvé une réponse 
           $row=mysql_fetch_array($res); 
           //pour que tu puisses faire la différence de fonction entre les utilisateurs il faudrait une colonne "fonction" à ta table utilisateurs avec admin ou membre en face pour chaque ligne de nom/id 
           $fonction=$row['fonction']; 
           //il faut des double quottes " si tu veux que ta variable php soit interprétée ! 
          //mettre session_start avant header
           session_start(); 
                  //il faut initialiser une variable de session que l'on pourra tester ensuite dans la page admin par exemple 
             $_SESSION['fonction']=$fonction; 
           header ("location: index.php?utilisateur=$fonction"); 
          
          } 
          
          
          } 
          else 
          { 
          echo"<font color=red>Vous ne pouvez pas vous connecter !</font>"; 
          
          } 
          ?> 
          
          1. je test cela, je vous en dis plus dès que possible, merci en tout cas !
          2. Problème de sélection de la base de données : no database selected
        2. Ha donc ça veut dire que ton script:
          connexion_sql.php

          n'est pas bon

          donnes nous le code en masquant les codes d'acces bdd bien sur
          1. voila connexion_sql.php

            <?php
            try
            {
            $bdd= new PDO('mysql:host=localhost;dbname=nomdemabase','root','');
            }

            catch(Exception $e)
            {
            die('Erreur :'.$e->getMessage());
            }


            ('je travail que en local pour l'instant')
            1. tu as fait ça en PDO, le script que je t'ai donné est en méthode "classique"

              alors soit tu continue le script en PDO soit tu modifies

              connexion_sql.php

              //variables modifiables lorsque tu passera en distant
              $host='localhost';
              $user_host='root';
              $pass_host='';
              $db='nomdetabase';
              //
              $cnx = mysql_connect('$host',$user_host,$pass_host) or die ("Pb connexion serveur ".mysql_error());
              			
              $db_select  = mysql_select_db($db) or die ("Pb selection base ".mysql_error());
              
              1. je test ça, et je vous en donne des nouvelles.
            2. ça ne fonctionne pas mais j'ai trouvé autrement ;)

              Voici le code :

              <?php
              include('connexion_sql.php');
              $famille=mysql_real_escape_string($_POST["famille"]);//mysql_real_escape_string sécurise les variables que l'on a saisi
              $id=mysql_real_escape_string($_POST["id"]);
              $req = "SELECT * FROM utilisateur WHERE nom='".$famille."' AND id=".$id;
              $reponse = $bdd->query($req) or die (print_r($bdd->errorInfo()));
              while ($donnees = $reponse->fetch())
              {
              echo $donnees['fonction'];
              }
              if($reponse)
              {
              $fonction=$donnees['fonction'];//faire la différence de fonction entre les utilisateurs
              session_start();//démarrage d'une session
              $_SESSION['fonction']=$fonction;//$_SESSION pour gèrer la page principale
              header ("location: index.php?utilisateur=$fonction");
              }
              else
              {
              echo"<font color=red>Vous ne pouvez pas vous connecter !</font>";
              }
              ?>