Problème de requête et variables PHP

Résolu
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   -  
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   -
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

KiKiLeMMerDeuR Messages postés 284 Date d'inscription   Statut Membre Dernière intervention   36
 
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 :)
0
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   3
 
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
0
le_joker_fou Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   239
 
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.
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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>"; 

} 
?> 
0
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   3
 
je test cela, je vous en dis plus dès que possible, merci en tout cas !
0
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   3
 
Problème de sélection de la base de données : no database selected
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
0
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   3
 
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')
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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());
0
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   3
 
je test ça, et je vous en donne des nouvelles.
0
logique Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   3
 
ç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>";
}
?>
0