Erreur PHP "unable to jump to row 0 - PHP - Programmation
Marsh Posté le 30-05-2002 à 21:29:10
comment réussir a résoudre ce pb ? il signifie koi ?
mmercire
Marsh Posté le 30-05-2002 à 21:38:30
rainckill a écrit a écrit : comment réussir a résoudre ce pb ? il signifie koi ? mmercire |
Ca veut dire que tu cherches à accéder à une ligne (la n°0 ici) alors qu'elle n'existe pas dans le résultat.
Marsh Posté le 30-05-2002 à 21:42:10
heuh..... jvois pas pq il veut allé a la ligne 0 :-/ y a rien dinterressant la bas
ana pour etre plus serieux voici mon ptit bout de code :
<?
require("config.php" );
$db=mysql_connect("$sql","$log","$pas" );
mysql_select_db("$dbs",$db);
if($pseudo=='' || $mdpt==''
{
echo "<p>Vous avez oublié de remplir un champs.</p>";
include('login.php';
exit;
}
$sql = "select mdp from users where pseudo='$pseudo'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()
);
$mdp=mysql_result($req,'mdp';
else{session_start();
session_register('pseudo';
echo "Vous etes bien logué sous le pseudo de <b><i>$pseudo</i></b><br><br>
<center>]<a href='admin.php'>AcCeS AdMiN</a>[</center>";
}
mysql_close();
?>
bon apparement l'eerreur suit la ligne ou est placé la commande :
$mdp=mysql_result($req,'mdp';
Kelkun pourré til méclaircir la ? car je voit tout trouble :-/
Marsh Posté le 30-05-2002 à 21:46:05
rainckill a écrit a écrit : bon apparement l'eerreur suit la ligne ou est placé la commande : $mdp=mysql_result($req,'mdp'; Kelkun pourré til méclaircir la ? car je voit tout trouble :-/ |
je pense que tu as cette erreur parce que ta requête ne renvoie aucun résultat. Vérifie d'abord le nombre de résultat renvoyé avec
Code :
|
.
Marsh Posté le 30-05-2002 à 22:13:19
select mdp,pseudo from users where pseudo='$pseudo'
Marsh Posté le 30-05-2002 à 22:43:08
kayasax a écrit a écrit : select mdp,pseudo from users where pseudo='$pseudo' |
Il n'est pas obligé de rajouter pseudo dans le SELECT normalement...
Marsh Posté le 31-05-2002 à 10:54:57
c'est lorsque je tape un mauvais mdp/login ke l'erreur apparé...
et en effet qd je tape un mauvais mdp ben $mdp=rien ... c logik mais l'erreur vient elle du fait ke cette variable soit vide ? car je lui demande simple si $mdpt' (représentant le mdp rentré par lutilisateur dans la page "se loggé" ) est différent de $mdp le vré mot de passe du pseudo choisi....
mais vu kil ne trouve aucun pseudo, $mdp est vide...
comment résoudre se probleme proprement ??
merci a tous
Marsh Posté le 31-05-2002 à 11:01:19
Forcément, tu lui demandes les lignes où "pseudo='$pseudo'". Si le pseudo n'existe pas dans la base, il ne renvoie aucune ligne.
Faut que tu fasse un truc dans le genre :
if (mysql_num_rows($req) == 0) {
// erreur : pseudo inconnu
} else {
// pseudo trouvé, vérification du mot de passe
}
Edit : ce serait même plus propre comme ca :
$req = mysql_query("SELECT count(*) FROM users WHERE pseudo='$pseudo' AND mdp='$mdp'" );
$login_OK = mysql_result($req, 0, 0);
if ($login_OK > 0) {
// authentification réussie
} else
// erreur : login/mot de passe incorrect
}
Avec cette méthode, tu ne fais pas de distinction entre un login inconnu et un mot de passe incorrect.
[jfdsdjhfuetppo]--Message édité par mrbebert le 31-05-2002 à 11:05:00--[/jfdsdjhfuetppo]
Marsh Posté le 31-05-2002 à 13:12:15
ok, merci ben mrbebert
par contre, dans ton 2nd code, je comprend aps tout
mysql_query("SELECT count(*) FROM users WHERE pseudo='$pseudo' AND mdp='$mdp'" );
$login_OK = mysql_result($req, 0, 0);
if ($login_OK > 0) {
c koi select count(*) ? il sélectionne koi ?
et je comprend aps bien la valuer de la variable $login_ok :-/
pq ($req, 0, 0[g]) ? ca signifie koi ces 2 zéro ?
merci pour ton aide
Rainckill
Marsh Posté le 31-05-2002 à 13:25:50
rainckill a écrit a écrit : ok, merci ben mrbebert par contre, dans ton 2nd code, je comprend aps tout mysql_query("SELECT count(*) FROM users WHERE pseudo='$pseudo' AND mdp='$mdp'" ); $login_OK = mysql_result($req, 0, 0); if ($login_OK > 0) { c koi select count(*) ? il sélectionne koi ? et je comprend aps bien la valuer de la variable $login_ok :-/ pq ($req, 0, 0[g]) ? ca signifie koi ces 2 zéro ? merci pour ton aide Rainckill |
count(*), c'est du SQL. Il compte le nombre de ligne tout simplement. Donc, la requête va renvoyer un résultat avec une ligne et une colonne, contenant le nombre de lignes qui correspondent au WHERE. Ici, ca ne change pas grand chose. Mais quand tu as beaucoup de résultats, c'est beaucoup plus efficace de se contenter de les compter plutot que de tous les renvoyer et de faire un mysql_num_rows dessus (si tu n'as pas besoin des données elles même).
Donc $Login_OK contient le nombre de lignes qui ont le password et le login que tu recherches.
mysql_result($req, 0, 0) permet de lire le contenu de la colonne 0 et de la ligne 0 du résultat $req (ici, on a que cette case la de toute façon).
Marsh Posté le 30-05-2002 à 21:28:37
Warning: Unable to jump to row 0 on MySQL result index 2 in c:\program files\easyphp\www\bnwn\login00.php on line 7