Problème de requête et variables PHP
Résolu
logique
Messages postés
100
Statut
Membre
-
logique Messages postés 100 Statut Membre -
logique Messages postés 100 Statut Membre -
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.
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
-
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 faireif (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 :) -
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 -
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. -
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>"; } ?> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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') -
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()); -
ç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>";
}
?>