bigornot Posté 17 Septembre 2004 Posté 17 Septembre 2004 (modifié) voilà, j'ai fait un petit script, sur free, et ... : <?phpinclude("conf.php");?><html><head></head><body><?phpmysql_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é 17 Septembre 2004 par bigornot
xpatval Posté 17 Septembre 2004 Posté 17 Septembre 2004 Heu...Ce doit être le ruhm, (55°), mais je ne connais pas mysql_numrows..A la limite, mysql_num_rows, là oui... xpatval
bigornot Posté 17 Septembre 2004 Auteur Posté 17 Septembre 2004 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
Anonymus Posté 17 Septembre 2004 Posté 17 Septembre 2004 Bonjour, tu devrais essayer la requète comme ceci : $q = mysql_query("SELECT * FROM img2 WHERE pass = '".$pass."' AND pseudo = '".$pseudo."'"); Anonymus.
bigornot Posté 17 Septembre 2004 Auteur Posté 17 Septembre 2004 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
Sarc Posté 17 Septembre 2004 Posté 17 Septembre 2004 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 Enfin bon j'espere que je me trompe pas
bigornot Posté 17 Septembre 2004 Auteur Posté 17 Septembre 2004 merci sarc, un peu trop tard peut etre ... ;-)
Sarc Posté 17 Septembre 2004 Posté 17 Septembre 2004 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 ?
bigornot Posté 17 Septembre 2004 Auteur Posté 17 Septembre 2004 (modifié) 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é 17 Septembre 2004 par bigornot
smile Posté 17 Septembre 2004 Posté 17 Septembre 2004 (modifié) 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é 17 Septembre 2004 par smile
Anonymus Posté 18 Septembre 2004 Posté 18 Septembre 2004 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 => 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.
smile Posté 18 Septembre 2004 Posté 18 Septembre 2004 Ok mais dans ce cas preçis, tu compares $ro==1 sans guillemet, c'est obligatoirement une comparaison de type integer et non de type string.
Anonymus Posté 18 Septembre 2004 Posté 18 Septembre 2004 Obligatoirement, sauf dans certains cas.. $a = TRUE;if ($a==1)echo"TRUE";
smile Posté 18 Septembre 2004 Posté 18 Septembre 2004 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 !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant