Aller au contenu

probleme à cause d'un rows ...


bigornot

Sujets conseillés

voilà, j'ai fait un petit script, sur free, et ... :

<?php
include("conf.php");
?>
<html>
<head>
</head>
<body>
<?php
mysql_connect($sql_url,$sql_nom,$sql_pass);
mysql_select_db("bdbourgeron");
$q = mysql_query("SELECT * FROM `img2` WHERE `pass` = $pass AND `pseudo` = $pseudo;");
$ro = mysql_numrows($q);
if($ro === 1){
session_start();
session_register("pass");
session_encode("pass");
header("oki.php");
}
else
{
echo "faux mdp ou pseudo.<br>";
echo " retour a la case depart ...";
}
echo '<form action="valogin.php">';
echo '<input type="text" name="pseudo">';
echo '<input type="password" name="pass">';
echo '<input type="submit" value="envoi">';
echo '</form>';
?>
</body>
</html>

clak !

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/0/0/bdbourgeron/tutos/img2/valogin.php on line 28

bon ...

c'est énervant, à la fin ...

ça fait plusieurs scripts qui passaient tres bien avant sur free, et qui bloquent ...

je vais changer d'hébergeur, mais en attendant :

que se passe t il ?

j'ai changer ma requete plusieurs fois, mais niet, ça change rien !

tiene ni cola ni cabeza !

@ la revoyure !

merci d'avance !

Modifié par bigornot
Lien vers le commentaire
Partager sur d’autres sites

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/0/0/bdbourgeron/tutos/img2/valogin.php on line 28

....

je crois que mysql_num_rows, c'était pour php3

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

tu devrais essayer la requète comme ceci :

$q = mysql_query("SELECT * FROM img2 WHERE pass = '".$pass."' AND pseudo = '".$pseudo."'");

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

merci ...

mais ca ne marche toujours pas ...

voilà le script :

<?php

include("conf.php");

mysql_connect($sql_url,$sql_nom,$sql_pass);

mysql_select_db("bdbourgeron");

$q = mysql_query("SELECT * FROM img2 WHERE pass = '".$pass."' AND pseudo = '".$pseudo."'");

$ro = mysql_num_rows($q);

if($ro === 1){

session_start();

session_register("pass");

}

else

{

}

?>

<html>

<head>

<title>Bla</title>

</head>

<body>

</body>

</html>

la page est blanche, mais le titre est : HTTP 500 erreur interne au serveur

Lien vers le commentaire
Partager sur d’autres sites

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/0/0/bdbourgeron/tutos/img2/valogin.php on line 28

Ca, ça veut dire que ta requete comporte une erreur sql...

Donc va dans ta bdd, et lance ta requete dans SQL en remplacant $pseudo et $pass par des chaines correctes, et il te dira s'il y a un probleme... Généralement, c'est le nom des champs demandés qui sont incorrects !

exemple de requete a lancer :

SELECT * FROM img2 WHERE pass = 'pass' AND pseudo = 'pseudo'

Et puis je trouve que tu te prends un peu trop la tete avec la fermeture des "" dans ta requete...

Pas besoin de faire

WHERE pass = '".$pass."' AND pseudo = '".$pseudo."'

Il te suffit de faire :

WHERE pass = '$pass' AND pseudo = '$pseudo'

Pour moi c'est bien plus clair et il y a moins de risques d'erreurs... Un erreur est site vite arrivée :unsure:

Enfin bon j'espere que je me trompe pas ;)

Lien vers le commentaire
Partager sur d’autres sites

Ah ben désolé j'ai fait le plus rapidement possible... 8 minutes apres ton dernier message il me semblait que j'étais dans les temps.. ^^

Ou etait ton erreur ?

Lien vers le commentaire
Partager sur d’autres sites

pour la premiere : voir le message d'anonymous ...

pour la seconde : je n'avais pas mis les @ devant mysql_connect et select_db ...

//edit : et vive mon 115e message !

Modifié par bigornot
Lien vers le commentaire
Partager sur d’autres sites

if($ro === 1){
session_start();
session_register("pass");
}
else
{
}

A quoi ca sert de mettre un else, il n'ya pas d'instructions derrière, il te suffit de mettre

if($ro == 1){
session_start();
session_register("pass");
}

IL y'a un = de trop ...

Et puis j'aime pas cette nouvelle mode de placer les accolades, il faut indenter, du moins j'ai appris comme ca :)

Modifié par smile
Lien vers le commentaire
Partager sur d’autres sites

Pour ce qui est des guillemets, cela permet de séparer nettement les instructions sql des variables php. C'est une convention de langage, qu'il faudrait garder.

Pour ce qui est de l'instruction 'else', effectivement, elle n'est pas obligatoire, dans la mesure où elle est vide. Elle n'a même rien à faire ici ;)

Pour ce qui est des tabulations, elles n'apparaissent pas dans les messages, même si on les place dans le code :( C'est un problème IPB.

Pour ce qui est des 3 signes égal (===), ils veulent dire : 'egal et de même type'. Autrement dit : La variable $ro est égal à 1, et de type 'integer'. A différencier avec 'est égal à "1" et de type 'string', voire " egal et de type 'booleen'. Ainsi, si $ro renvoie '2', la chaine ==1 pourrait signifier $ro == true. En signifiant clairement à php qu'il s'agit d'un 'integer', on limite le risque d'erreurs.

Pour ce qui est de l'arobase, il signifie : Ne pas afficher l'erreur, même s'il y en a une. On peut s'en servir s'il n'y a pas d'erreurs. En cas de problèmes avec le serveur de base de données, les internautes n'auront pas un message 'obscur' affiché à l'écran. Mais pour le débuggage, vaut mieux s'en abstenir, de sorte que l'on ait la signification de l'erreur, ainsi que la ligne.

je crois que mysql_num_rows, c'était pour php3

Loupé, c'est l'inverse :D =>

mysql_num_rows

(PHP 3, PHP 4 , PHP 5)

Pour des raisons de compatibilité ascendante mysql_numrows() est encore disponible.

Vaut mieux s'abstenir d'utiliser mysql_numrows ;) (ainsi que toutes les autres fonctions obsoletes : mysql_numfields, mysql_freeresult, mysql_selectdb, mysql_createdb, mysql_db_query,...)

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

oui mais dans notre cas :

$ro = mysql_num_rows($q);

$ro est de type integer obligatoirement et non de type booleen ou string :)

$ro==1

comparaison avec un integer, tout roule !

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...