Problème de requête et variables PHP

Résolu/Fermé
logique Messages postés 92 Date d'inscription samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 - 6 nov. 2012 à 10:14
logique Messages postés 92 Date d'inscription samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 - 8 nov. 2012 à 20:32
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 dimanche 6 décembre 2009 Statut Membre Dernière intervention 6 décembre 2013 36
6 nov. 2012 à 12:57
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 samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 3
6 nov. 2012 à 23:30
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 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
7 nov. 2012 à 16:53
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 7/11/2012 à 18:36
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 samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 3
8 nov. 2012 à 08:53
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 samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 3
8 nov. 2012 à 09:18
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
8 nov. 2012 à 10:58
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 samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 3
8 nov. 2012 à 13:22
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 dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 8/11/2012 à 18:01
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 samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 3
8 nov. 2012 à 20:21
je test ça, et je vous en donne des nouvelles.
0
logique Messages postés 92 Date d'inscription samedi 18 août 2012 Statut Membre Dernière intervention 4 avril 2013 3
8 nov. 2012 à 20:32
ç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