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 -
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.
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.
A voir également:
- Problème de requête et variables PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Erreur de requete facebook - Forum Facebook
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
- Alert php ✓ - Forum PHP
8 réponses
Tu execute la query avec
mais tu dois parcourir les résultats en faisant par exemple :
Pour tester si tu as des résultats, tu peux faire
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 :)
$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 :)
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
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.
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
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')
<?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
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>";
}
?>
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>";
}
?>