Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1511 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Pourquoi cette erreur avec ce code ? affichage img aléatoire [PHP&SQL]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pourquoi cette erreur avec ce code ? affichage img aléatoire [PHP&SQL]

n°244241
rainckill
Posté le 13-11-2002 à 16:16:21  profilanswer
 

Warning: Unable to jump to row 0 on MySQL result index 16 in /home/_he/hellfire/pub/www/screentest.php on line 32  
 
Warning: Unable to jump to row 0 on MySQL result index 16 in /home/_he/hellfire/pub/www/screentest.php on line 33  


 
Pourquoi je rencontre ces erreurs ?
 
avec ce code :
 

Code :
  1. <?
  2. require("config.php" );
  3. $db=mysql_connect("$sql","$log","$pas" );
  4. mysql_select_db("$dbs",$db);
  5. $sqlprout = "SELECT id FROM sys_images";
  6. $reqprout = mysql_query($sqlprout) or die('Erreur SQL !<br>'.$sqlprout.'<br>'.mysql_error());
  7. $totalimg = mysql_num_rows($reqprout);
  8. /* Initialisation du random */
  9. srand((float) microtime()*1000000);
  10. /* Génération du nbre aléatoire entre 1 et $totalimg */
  11. $num_photo = rand(1,$totalimg);
  12. $sqlimg = "SELECT * FROM sys_images where id=$num_photo";
  13. $reqimg = mysql_query($sqlimg) or die('Erreur SQL !<br>'.$sqlimg.'<br>'.mysql_error());
  14. $i=0;
  15. $urlpetitep       = mysql_result($reqimg,$i,"urlpetite" );
  16. $urlgrandep       = mysql_result($reqimg,$i,"urlgrande" );
  17. echo "<center><a href='$urlgrandep' target='_blank'><img src='$urlpetitep' border='1' width='120' height='95'></a></center>";
  18. ?>

mood
Publicité
Posté le 13-11-2002 à 16:16:21  profilanswer
 

n°244261
omega2
Posté le 13-11-2002 à 16:31:14  profilanswer
 

rainckill a écrit a écrit :

Warning: Unable to jump to row 0 on MySQL result index 16 in /home/_he/hellfire/pub/www/screentest.php on line 32  
 
Warning: Unable to jump to row 0 on MySQL result index 16 in /home/_he/hellfire/pub/www/screentest.php on line 33  


 
Pourquoi je rencontre ces erreurs ?
 
avec ce code :
 

Code :
  1. <?
  2. require("config.php" );
  3. $db=mysql_connect("$sql","$log","$pas" );
  4. mysql_select_db("$dbs",$db);
  5. $sqlprout = "SELECT id FROM sys_images";
  6. $reqprout = mysql_query($sqlprout) or die('Erreur SQL !<br>'.$sqlprout.'<br>'.mysql_error());
  7. $totalimg = mysql_num_rows($reqprout);
  8. /* Initialisation du random */
  9. srand((float) microtime()*1000000);
  10. /* Génération du nbre aléatoire entre 1 et $totalimg */
  11. $num_photo = rand(1,$totalimg);
  12. $sqlimg = "SELECT * FROM sys_images where id=$num_photo";
  13. $reqimg = mysql_query($sqlimg) or die('Erreur SQL !<br>'.$sqlimg.'<br>'.mysql_error());
  14. $i=0;
  15. $urlpetitep       = mysql_result($reqimg,$i,"urlpetite" );
  16. $urlgrandep       = mysql_result($reqimg,$i,"urlgrande" );
  17. echo "<center><a href='$urlgrandep' target='_blank'><img src='$urlpetitep' border='1' width='120' height='95'></a></center>";
  18. ?>





Cette erreur arrive quand ta requête ne ramène rien ou que ta variable n'est pas le résultat d'une requête.
 
Pourquoi ca ramène rien?
Surement que t'as loupé la conection à la base ou que ta table est vide.
 
Solution : tester le nombre de ligne retourné et vérifier que la requête c'est bien exécuté (pas d'erreur dans la requête)

n°244271
rainckill
Posté le 13-11-2002 à 16:35:36  profilanswer
 

non enfait elle apparait que une fois sur cent !
 
sur 100 refresh, elle va, approximativmeent, affiché 90 images aléatoires, et 10 avec cette erruer :-/ (chiffres au pif ;))
 
:|

n°244296
Sebastien
Posté le 13-11-2002 à 16:49:55  profilanswer
 

Les appels mysql_result() ne devraient pas être mélangés avec d'autres fonctions qui travaillent aussi sur le résultat.  
 
Alternatives à haut rendement, RECOMMANDEES : mysql_fetch_row(), mysql_fetch_array() et mysql_fetch_object().  

n°244300
omega2
Posté le 13-11-2002 à 16:53:45  profilanswer
 

Ben t'es sur que t'as une image d'id $num_photo ?
Si t'as un trous dans ta liste d'id, c'est normal que ca plante.
Au lieu d'un  

Code :
  1. $sqlimg = "SELECT * FROM sys_images where id=$num_photo";


essayes un

Code :
  1. $sqlimg = "SELECT * FROM sys_images LIMIT $num_photo,1";


Ensuite, tu prends l'ID de la seconde requêtes si t'as besoin de t'en servir.
 
Autre truc, pour que cette modif marche bien, utilise un count(*) dans la première requête. ;)

n°244500
rainckill
Posté le 13-11-2002 à 18:57:41  profilanswer
 

ah oui ! effectivement, il me manque les photo d'id 33, 53, 58 :-/
 
Ma technique ets aps très bien enfait !!
 
Et, ta nouvelle requette avec le ',1' en plus mènera à kelle différence ?

n°244548
omega2
Posté le 13-11-2002 à 19:57:46  profilanswer
 

rainckill a écrit a écrit :

ah oui ! effectivement, il me manque les photo d'id 33, 53, 58 :-/
 
Ma technique ets aps très bien enfait !!
 
Et, ta nouvelle requette avec le ',1' en plus mènera à kelle différence ?



Ben la nouvelle requête ta ramènera la niéme photo de ta base et rien que celle là (le 1 limite le retour à 1 seule occurence et l'autre donne a partir de quelle occurence de la requête on commence à ramener des données).
L'autre requête te donne le nombre d'occurence qui pourait être ramené par la seconde requête.
 
 
Normalement avec ça, tu devrais plus avoir de problème de "trou" dans les ID vu que c'est plus basé dessus.

n°245551
rainckill
Posté le 14-11-2002 à 19:57:12  profilanswer
 

je comprend aps pq l'ajout u ,1 résoudré mon probleme lol :)
 
désolé, mais tu pourré expliqué ? :)  
 
:jap:

n°245600
omega2
Posté le 14-11-2002 à 21:11:55  profilanswer
 

rainckill a écrit a écrit :

je comprend aps pq l'ajout u ,1 résoudré mon probleme lol :)
 
désolé, mais tu pourré expliqué ? :)  
 
:jap:



LIMIT délimite un intervale de ligne à retourner.
Pour savoir quel intervale, on lui donne deux nombre, le début de l'intervale et la taille de l'intervale. ;)

n°245625
rainckill
Posté le 14-11-2002 à 22:12:35  profilanswer
 

omega2 a écrit a écrit :

LIMIT délimite un intervale de ligne à retourner.
Pour savoir quel intervale, on lui donne deux nombre, le début de l'intervale et la taille de l'intervale. ;)




 
oui, mais si on lui retourne un début d'intervalle au numero 53 (dont lid de lmg existe pas), il y aura la meême erruer... Vu que l'intervalle commenceant à 53, de taille 1, c'ets le nombre 53 lui même, non ?
 
D'ou la même erruer rencontré ?

mood
Publicité
Posté le 14-11-2002 à 22:12:35  profilanswer
 

n°245792
omega2
Posté le 15-11-2002 à 11:28:04  profilanswer
 

rainckill a écrit a écrit :

 
 
oui, mais si on lui retourne un début d'intervalle au numero 53 (dont lid de lmg existe pas), il y aura la meême erruer... Vu que l'intervalle commenceant à 53, de taille 1, c'ets le nombre 53 lui même, non ?
 
D'ou la même erruer rencontré ?



Non, il se base pas sur les ID mais sur la position des lignes parmis l'ensemble de ligne retourné par la requête s'il n'y a pas de LIMIT.
Que la 53 éme ligne ai comme ID "0" "200" ou "53", lui il s'en fout.
 
Il se dit juste :
voilà tout ce qui correspond à ce qu'on me demande. Alors voyont voir, je doit commencé à retourner des valeurs qu'à partir de la 53 éme, donc j'en saute 52 et ensuite j'en envoit 1 (c'est un exemple) . Une fois que j'en ai envoyé 1, je laisses tombé le reste.


Message édité par omega2 le 15-11-2002 à 11:28:55
n°275773
rainckill
Posté le 25-12-2002 à 20:44:02  profilanswer
 

Alors la je comprend pas !!!
 
Voila, j'ai une table avec 78 enregistrement. Tous contiennent des infos pour des images (affiché ici : http://www.hellfire.firstream.net/ [...] allpapers) et j'utilise ce script pour la prise aléattoire dans cette table :
 

Code :
  1. <?
  2. require("config.php" );
  3. $db=mysql_connect("$sql","$log","$pas" );
  4. mysql_select_db("$dbs",$db);
  5. $sqlprout = "SELECT count(*) FROM sys_images";
  6. $reqprout = mysql_query($sqlprout) or die('Erreur SQL !<br>'.$sqlprout.'<br>'.mysql_error());
  7. $totalimg = mysql_num_rows($reqprout);
  8. /* Initialisation du random */
  9. srand((float) microtime()*1000000);
  10. /* Génération du nbre aléatoire entre 1 et $totalimg */
  11. $num_photo = rand(1,$totalimg);
  12. $sqlimg = "SELECT * FROM sys_images LIMIT $num_photo,1";
  13. $reqimg = mysql_query($sqlimg) or die('Erreur SQL !<br>'.$sqlimg.'<br>'.mysql_error());
  14. $i=0;
  15. $urlpetitep       = mysql_result($reqimg,$i,"urlpetite" );
  16. $urlgrandep       = mysql_result($reqimg,$i,"urlgrande" );
  17. echo "<center><a href='$urlgrandep' target='_blank'><img src='$urlpetitep' border='1' width='120' height='95'></a></center>";
  18. ?>


 
Mais c'est toujours ma meme image qui s'affiche !!!!! Vraiment je comprend pas !
 
Merci pour votre aide !

n°275953
rainckill
Posté le 26-12-2002 à 13:26:29  profilanswer
 

up  :bounce:

n°276307
beleg
黑社會
Posté le 27-12-2002 à 03:31:28  profilanswer
 

fais un select ... order by rand() limit 1 sur ta table et tu recuperera une ligne de ta table aleatoirement.
 
quand a ton probleme d'aleatoire en php, aucune idée

n°277084
rainckill
Posté le 29-12-2002 à 12:39:52  profilanswer
 

tu veux dire qu'un
 
"SELECT * FROM sys_images order by rand() limit 1";
 
 
prendra une ligne o hazar sur la table, et donc, pas besoin du reste du code pouir générer un chiffre aléatoire ?
 

n°277091
beleg
黑社會
Posté le 29-12-2002 à 13:42:11  profilanswer
 

affirmatif

n°277383
rainckill
Posté le 30-12-2002 à 11:44:38  profilanswer
 

Oki, c'est excelent alors ! :)
 
J'la connaissais pas ^^
 
Merci a toi


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Pourquoi cette erreur avec ce code ? affichage img aléatoire [PHP&SQL]

 

Sujets relatifs
Nombre de requete pour l'affichage d'un forum : Normes?J'adore PHP !!
PHP3 ----> PHP 4.2.3 incompatibilité : $HTTP_POST_VARS et/ou $HTTPBesoin d'aide pour creer une fonction PHP
PHP MyAdmin et MySQL[ PHP ] afficher les lettres de l'alphabets dynamiquement
[PHP] comment faire un retour de chariot en php?résultat d'une requête sur une même ligne en SQL Server
Erreur que je ne comprend pas pq elle est là :| [PHP&SQL] 
Plus de sujets relatifs à : Pourquoi cette erreur avec ce code ? affichage img aléatoire [PHP&SQL]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR