Page 1 sur 1

interrogation de base de données

Posté : 29 mai 2007, 11:49
par fowndi
j'essai d'identifier un admin de mon site ki a été préalablement inscris sur mon site, pour cela j'ai une page contenant le formeulaire avec le pseudo et le mot de passe à renseigner par lui, ces identifiants sont envoyer à la page suivante à travers la methode post, ki dois verifier dans la base de données afin d'autentifier le visiteur et ki dois me permettre par la suite d'initialiser sa session.
<?php
	$login=$_POST['login'];
	$pass=$_POST['pass'];
	include("../connectiondb.php");
	$requete= "SELECT * FROM admin WHERE compt_admin=\"$login\" and mp_admin=\"$pass\" ";
	$result=mysql_query($requete);
	//recuperation des données tout marche bien jusqu'ici
	if (!mysql_fetch_row($result)){
  // Au cas ou il n'est pas reconnu afficher le message ci dessous tout marche bien
	echo "Vous n'etes pas un administrateur de ce site";     
	}
  /* C'est la ke tout se gate lors du test de ma page rien ne s'affiche ici lors du succes de l'identification*/
	else{ 
	      while ($row=mysql_fetch_row($result)){
		  $no=$row[0];
	     echo $no;
		 } 
	}
	mysql_close();
	
	?>
aider moi s'il vous plais car sa urge, si jamais il y'a un autre script capable de faire la meme chose, vos propositions serons les biens venus.

Posté : 29 mai 2007, 12:31
par mere-teresa
Modération :
Tes délais ne nous intéressent pas.
Nous savons que tu es en difficulté puisque tu demandes de l'aide,
mais nous sommes tous bénévoles et répondons selon nos disponibilités.

Merci de ne pas s'impatienter.


En plus, tu n'expliques pas vraiment quel est le problème...

Posté : 30 mai 2007, 10:13
par alaingpl
Essayes avec ça :
<?php 
    $login=$_POST['login']; 
    $pass=$_POST['pass']; 
    include("../connectiondb.php"); 
    $requete= "SELECT * FROM admin WHERE compt_admin=".$login." and mp_admin=".$pass.""; 
    $req=mysql_query($requete); 
    //recuperation des données tout marche bien jusqu'ici 
   // j'interroge la BD
    $result = mysql_fetch_assoc($req) ;
   // si aucun resultat n'est indentique aux variables
if( $result["mp_admin"] != $pass || $result["compt_admin"] != $login)
{
echo"Aucun identifiant ne correspond à votre pseudo ou mot de passe";
}else
//sinon on ouvre la session
  {
    //début de la session
    session_start() ;
    //enregistrement d'une variable de session, ici le login de l'utilisateur
    $_SESSION["compt_admin"] = $login ;
 	$_SESSION["mp_admin"] = $pass ;
	
	
 /* pour vérifier les variables 
  print_r($_SESSION) ;
   */
{
{

echo"<br /><br /><br />";
echo"<table width=\"60%\" border=\"1\" align=\"center\">";
 echo"<tr>\n";
    echo"<td width=\"487\"> <p align=\"center\"><br /></p>";
      echo"<p align=\"center\">Bonjour<br /><br /><strong>".$_SESSION["compt_admin"]."</strong></center></p>";
      
      echo"<p align=\"center\"><a href=\"chemin de ta page">Pour accéder au site des personnes inscrites</center></p>";
      echo"</td>\n";
  echo"</tr>\n";
echo"</table>";
}
Ne pas oublier d'ouvrir la session dans toutes les pages qui suivent avant tout code et balises :
session_start() ;
    //enregistrement d'une variable de session, ici le login de l'utilisateur
    $_SESSION["compt_admin"] = $login ;
 	$_SESSION["mp_admin"] = $pass ;
PS: essayes d'écrire en utilisant une syntaxe correcte (pas SMS) c'est plus facile à lire et plus correct pour ceux qui te répondent.

Posté : 30 mai 2007, 10:33
par Ryle
Ton soucis doit provenir de la double utilisation de mysql_fetch_row(). En effet, à chaque fois que tu vas l'utiliser, php va lire la ligne et va placer le pointeur sur la ligne suivante (donc une fois dans le "if" et une nouvelle fois dans le "while"). Du coup, tu vas te retrouver positionné sur le 2ème enregistrement retourné, et il est fort à parier qu'il n'aurait du y en avoir qu'un :)

Utilises mysql_num_rows() pour tester si des enregistrements ont été trouvés sans les lire
if (mysql_num_rows($result) == 0) { // pas de résultats
  ...
} 
else{  
  $row=mysql_fetch_row($result); // pas besoin de boucle si une seule ligne doit être retournée
  echo $row[0]; 
}