interrogation de base de données

Eléphant du PHP | 50 Messages

29 mai 2007, 11:49

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

29 mai 2007, 12:31

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...
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 271 Messages

30 mai 2007, 10:13

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.
Patience et obstination sont des qualités !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2007, 10:33

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]; 
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...