[résolu] table vide

table vide [résolu] - PHP - Programmation

Marsh Posté le 14-02-2005 à 18:22:51    

Bonjour,
Je fais un :

Code :
  1. $selection = mysql_query("select media from $jpg" );
  2. $media_nb = mysql_num_rows($selection);


Il semblerait que quand la table est vide, il y ait une erreur. Est-ce un comportement normal ? Il faut alors faire un test de taille de table ou autre chose ?
Merci


Message édité par mirascheat le 15-02-2005 à 16:35:50
Reply

Marsh Posté le 14-02-2005 à 18:22:51   

Reply

Marsh Posté le 14-02-2005 à 18:26:09    

on veut bien t'aider mais c'est quoi le message d'erreur ?

Reply

Marsh Posté le 14-02-2005 à 18:32:46    

Oui effectivement on veut bien aider mais...
En tout cas quand un table est vide: pas d'erreur, il n'y a pas de resultat c'est tout, pas de données retournée par le SGBDR.

Reply

Marsh Posté le 15-02-2005 à 08:42:22    

$jpg c'est le nom de ta table ? type $jpg = "table"; ?
 
Dans ce cas déjà une requete de type :
 
$select = 'SELECT media FROM '.$jpg.'';
$requete = mysql_query ($select, $db);
$media_nb = mysql_num_rows($requete);
 
Par contre le mysql_num_rows c'est pas optimisé du tout... vaut mieux faire :
 
$select = 'SELECT count(ID) FROM '.$jpg.'';
$requete = mysql_query ($select, $db);
$media_nb = mysql_fetch_array($requete);
 
if ($media_nb != 0) { ......
 
ou sinon tout simplement :
 
$select = 'SELECT ID FROM '.$jpg.'';
$requete = mysql_query ($select, $db);
$media_nb = mysql_fetch_array($requete);
ou ID est un champ de clef unique...


Message édité par duncan_mc_leod le 15-02-2005 à 08:46:44
Reply

Marsh Posté le 15-02-2005 à 08:50:22    


ya pas mal d'erreur dans ton code, relis un peu  ;)  

Reply

Marsh Posté le 15-02-2005 à 10:45:26    

soju a écrit :

on veut bien t'aider mais c'est quoi le message d'erreur ?


 
L'erreur est :

Code :
  1. Something is wrong in your syntax près de ''.wdadu.'' à la ligne 1


 
Sachant que $jpg = "wdadu"

Reply

Marsh Posté le 15-02-2005 à 10:53:21    

fait un echo de ta requete

Reply

Marsh Posté le 15-02-2005 à 11:04:11    

mirascheat a écrit :

L'erreur est :

Code :
  1. Something is wrong in your syntax près de ''.wdadu.'' à la ligne 1



cette erreur ne correspond pas au code que tu as mis dans ton premier message, tu as fait des modifs ??

Reply

Marsh Posté le 15-02-2005 à 14:12:26    

En effet j'avais changé d'après le conseil de duncan :

Code :
  1. $selection = mysql_query("select media from $jpg" );


En :

Code :
  1. $selection = mysql_query("select media from '.$jpg.'" );


Mais ca ne me semble pas du tout ca.
Je remet dans le code que j'ai :

Code :
  1. $selection = mysql_query("select media from $jpg" ) or die ('ERREUR : '.mysql_error());
  2. $media_nb = mysql_num_rows($selection) or die ('ERREUR : '.mysql_error());


Mais à l'écran j'ai juste :

Code :
  1. ERREUR :


Sans l'erreur  :??:

Reply

Marsh Posté le 15-02-2005 à 14:20:07    

Tu veux pas essayer de faire un  
 

Code :
  1. $query = "select media from $jpg";
  2. $selection = mysql_query($query) or die ('ERREUR : '.mysql_error());


 
Comme ça, tu nous fais un petit

Code :
  1. echo $query;


de vérification ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:20:07   

Reply

Marsh Posté le 15-02-2005 à 14:27:30    

bien sur que je peux le faire  :jap:  
et le resultat de echo $query est :
select media from wdadu
ce qui me semble normal car $jpg = "wdadu"
par ailleurs si je fais un echo de $selection, j'ai "Resource id #3ERREUR :" ce qui montre que l'erreur est après non ?

Reply

Marsh Posté le 15-02-2005 à 14:31:29    

Bizarre... à tout hasard, si tu fais un mysql_errno() à la place du mysql_error() ?
 
PS: ton echo $selection ne donnera rien : tu dois faire un mysql_fetch_qqchose.
 
3 fonctions à ta dispositionpour cela : mysql_fetch_array, mysql_fetch_row, mysql_fetch_object


Message édité par latruffe le 15-02-2005 à 14:34:19

---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:33:53    

j'ai : "ERREUR : 0"

Reply

Marsh Posté le 15-02-2005 à 14:35:58    

Erreur 0... t'es sur que ça foire pas au moment de la connection ?


Message édité par latruffe le 15-02-2005 à 14:38:11

---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:38:56    

Je te mets le code entier :) :

Code :
  1. <html>
  2. <head>
  3. <title>Dream Theater</title>
  4. <link rel="stylesheet" type="text/css" href="style.css">
  5. <script type="text/javascript" src="style.js"></script>
  6. </head>
  7. <body>
  8. <table width="100%" height="100%">
  9.     <tr align="center">
  10.         <td valign="top">
  11.             <?php
  12.                 include("haut.php" );
  13.             ?>
  14.             <table width="40%" cellspacing="0">
  15.                 <tr>
  16.                     <td height="25"></td>
  17.                 </tr>
  18.                 <?php
  19.                     include("access.php" );
  20.                     $link = mysql_connect($host, $user, $password);
  21.                     mysql_select_db("mirascheat", $link);
  22.                     $selection = mysql_query("select jpg, name from tour" ) or die("Requête impossible" );
  23.                     echo $selection;
  24.                     $nombreligne = mysql_num_rows($selection) or die("Requête impossible" );
  25.                     $i = 0;
  26.                     while ($i<$nombreligne){
  27.                         $jpg = mysql_result($selection,$i,"jpg" ) or die("Requête impossible" );
  28.                         $name = mysql_result($selection,$i,"name" ) or die("Requête impossible" );
  29.                         echo '<tr align="center" onMouseover="makevisible2(1,\'img'.$i.'\',\'td'.(2*$i).'\',\'td'.(2*$i+1).'\')" onMouseout="makevisible2(0,\'img'.$i.'\',\'td'.(2*$i).'\',\'td'.(2*$i+1).'\')">';
  30.                             echo '<td width="10%"><img src="jpg/'.$jpg.'.jpg" border="0" width="100" height="100" style="filter:alpha(opacity=50);-moz-opacity:0.5" id="img'.$i.'"></td>';
  31.              echo '<td width="20%" id="td'.(2*$i).'"><a href="tour.php?id='.$jpg.'" target="_self" class="lien"><I>'.$name.'</I></a></td>';
  32.                             $query = "select media from $jpg";
  33.                             $selection = mysql_query($query) or die ('ERREUR : '.mysql_errno());
  34.                             echo $query;
  35.                             /*$selection = mysql_query("select media from $jpg" ) or die ('ERREUR : '.mysql_error());*/
  36.                             $media_nb = mysql_num_rows($selection) or die ('ERREUR : '.mysql_errno());
  37.                             $j = $dvd_nb = $cd_nb = 0;
  38.                             while ($j<$media_nb){
  39.                                 $media = mysql_result($selection,$j,"media" ) or die('ERREUR : '.mysql_errno());
  40.                                 if(strstr($media,DVD) != false)
  41.                                     $dvd_nb++;
  42.                                 else
  43.                                     $cd_nb++;
  44.                                 $j++;
  45.                             }
  46.                             echo $cd_nb;
  47.                             echo '<td width="10%" id="td'.(2*$i+1).'"><I>('.$cd_nb.') / ('.$dvd_nb.')</I></td>';
  48.                             echo '<td width="10%" id="td'.(2*$i+1).'"><I>(0) / (0)</I></td>';
  49.                         echo '</tr>';
  50.                         $i++;
  51.                     }
  52.                 ?>
  53.             </table>
  54.         </td>
  55.     </tr>
  56.     <tr>
  57.         <td align="center" valign="bottom" height="100%"><a href="javascript:history.go(-1)" target="_self" class="lien"><h2><b>Back</b></h2></a></td>
  58.     </tr>
  59. </table>
  60. </body>
  61. </html>

Reply

Marsh Posté le 15-02-2005 à 14:42:26    

pourquoi tu n'utilises pas un mysql_fetch_x ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 15-02-2005 à 14:42:57    

Tu testes ni si le mysql_connect marche ni si le mysql_select_db marche.

Reply

Marsh Posté le 15-02-2005 à 14:43:10    

Tu me redis à quel numéro de ligne ça foire ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:43:25    

parce que je pênsais qu'un mysql_num_rows correspondait plus à mon cas, ca n'est pas le cas ?

Reply

Marsh Posté le 15-02-2005 à 14:45:30    

et puis pour avoir ton nombre de dvd's

Code :
  1. select count(*) from $jpg where media='DVD'

:o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 15-02-2005 à 14:45:36    

la connection à la BDD marche (enfin il me semble) car j'utilise auparavant ma BDD et elle commence à m'afficher des infos déjà présente dans la BDD.
 

Code :
  1. $link = mysql_connect($host, $user, $password);
  2.                     mysql_select_db("mirascheat", $link);
  3.                     $selection = mysql_query("select jpg, name from tour" ) or die("Requête impossible" );
  4.                     echo $selection;
  5.                     $nombreligne = mysql_num_rows($selection) or die("Requête impossible" );
  6.                     $i = 0;
  7.                     while ($i<$nombreligne){
  8.                         $jpg = mysql_result($selection,$i,"jpg" ) or die("Requête impossible" );
  9.                         $name = mysql_result($selection,$i,"name" ) or die("Requête impossible" );

Reply

Marsh Posté le 15-02-2005 à 14:46:15    

Bon plusieurs trucs a corriger,
 
1er : A chaque fois que une commande commence par mysql (y compris a la connection) tu fais un or die(mysql_error.' || '.mysql_errno.' || '.__LINE__);
 
Parceque c'est bien joli de savoir si ca marche pas, mais c'est mieux de savoir ou ca plante et pourquoi.
 
Ensuite : le mysql_result est un truc d'avant-guerre qui pompe des tonnes de resources et en plus n'est pas pratique, tu le fous loin et tu met un mysql_fetch_array($query);
 
Et apres tu reviens nous dire ;)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-02-2005 à 14:46:17    

KangOl a écrit :

et puis pour avoir ton nombre de dvd's

Code :
  1. select count(*) from $jpg where media='DVD'

:o


 
oui mais en fait, il reutilise le nombre d'enregistrements dans sa boucle un peu plus loin.


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:47:02    

mirascheat a écrit :

la connection à la BDD marche (enfin il me semble) car j'utilise auparavant ma BDD et elle commence à m'afficher des infos déjà présente dans la BDD.


 
J'en suis arrivé à la même conclusion.
 
Quel numéro de ligne foire ?


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:47:26    

KangOl a écrit :

et puis pour avoir ton nombre de dvd's

Code :
  1. select count(*) from $jpg where media='DVD'

:o


 
oui mais media n'est pas egal soit a DVD soit a cd , ca peut etre "DVD-R" ou "3 CD-R" ou "3 DVD-R" donc ta solution ne marche pas ...

Reply

Marsh Posté le 15-02-2005 à 14:50:43    

Code :
  1. ... where medi like '%DVD%'


[:spamafote]


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 15-02-2005 à 14:51:34    

je sais que c'est pas très logique mais tu veux pas essayer un :
 

Code :
  1. $selection = mysql_query($query, $link) or die ('ERREUR : '.mysql_errno());


 
Putain que je suis content d'utiliser une classe pour mes requêtes :whistle:


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:56:04    

et le count(*) dans :

Code :
  1. select count(*) from $jpg where media='DVD'


il correspond à quoi ?
je suis désolé je débute en PHP ...

Reply

Marsh Posté le 15-02-2005 à 14:56:35    

latruffe a écrit :

je sais que c'est pas très logique mais tu veux pas essayer un :
 

Code :
  1. $selection = mysql_query($query, $link) or die ('ERREUR : '.mysql_errno());


 
Putain que je suis content d'utiliser une classe pour mes requêtes :whistle:


 
tu peux m'expliquer un peu ce que tu entends par là ?

Reply

Marsh Posté le 15-02-2005 à 14:56:40    

- comme dit esox_ch, abandonne les mysql_result
- pourquoi utilise tu la meme variable $selection dans deux requetes differentes ??!

Reply

Marsh Posté le 15-02-2005 à 14:57:41    

mirascheat a écrit :

et le count(*)
...
je suis désolé je débute en PHP ...


ce n'est pas du php, c'est du sql

Reply

Marsh Posté le 15-02-2005 à 14:58:18    

latruffe a écrit :

je sais que c'est pas très logique mais tu veux pas essayer un :
 

Code :
  1. $selection = mysql_query($query, $link) or die ('ERREUR : '.mysql_errno());


 
Putain que je suis content d'utiliser une classe pour mes requêtes :whistle:


 
 
Tu la vois ou ta classe la ?
 
 
> mira, tout le mond a debuté, mais quand on debute ou garde toujours www.php.net et www.mysql.org a portée de main, parcrque si tu va sur le site de mysql, et regarde dans la documentation, tu verra l'explication de COUNT()


Message édité par esox_ch le 15-02-2005 à 15:00:21

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-02-2005 à 14:58:45    

mirascheat a écrit :

tu peux m'expliquer un peu ce que tu entends par là ?


 
Pas juste repréciser le $link dans la query, pour lui dire d'utiliser la même connexion que précedemment.
 
Normalement il le fait tout seul mais bon  [:spamafote]


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 14:59:08    

esox_ch a écrit :

Bon plusieurs trucs a corriger,
 
1er : A chaque fois que une commande commence par mysql (y compris a la connection) tu fais un or die(mysql_error.' || '.mysql_errno.' || '.__LINE__);


 
il faudrait pas plutot marquer ca ???

Code :
  1. or die(mysql_error().' || '.mysql_errno().' || '.__LINE__);


 
parce que sinon à l'écran ca m'affiche ca :

Code :
  1. mysql_error || mysql_errno || 37


Reply

Marsh Posté le 15-02-2005 à 14:59:27    

esox_ch a écrit :

Tu la vois ou ta classe la ?


 
Bah justement, je la vois pas :D


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 15-02-2005 à 15:01:06    

mirascheat a écrit :

et le count(*) dans :

Code :
  1. select count(*) from $jpg where media='DVD'


il correspond à quoi ?
je suis désolé je débute en PHP ...


 

mirascheat a écrit :

il faudrait pas plutot marquer ca ???

Code :
  1. or die(mysql_error().' || '.mysql_errno().' || '.__LINE__);


 
parce que sinon à l'écran ca m'affiche ca :

Code :
  1. mysql_error || mysql_errno || 37



 
 
Ouep dsl, j'ai trop vite tapé, j'ai sucré les () :D. Sorry


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-02-2005 à 15:08:49    

esox_ch a écrit :

Tu la vois ou ta classe la ?
 
 
> mira, tout le mond a debuté, mais quand on debute ou garde toujours www.php.net et www.mysql.org a portée de main, parcrque si tu va sur le site de mysql, et regarde dans la documentation, tu verra l'explication de COUNT()


 
oui je sais bien que count compte le nombre d'élément ... mais ce que je voulais dire (je me suis mal exprimé pardon) c'est à quio correspond l'étoile dans count(*)

Reply

Marsh Posté le 15-02-2005 à 15:12:35    

Le meme chose que dans le batch, dans le shell et dans pas mal d'autres langages y compris le sql ( => www.mysql.com :D ) , ça veux dire "tout"


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 15-02-2005 à 15:14:23    

ok mais dans mon cas je dois remplacer * par media non ? :(

Reply

Marsh Posté le 15-02-2005 à 15:15:14    

il va compter les lignes, et le nombre de ligne sera pareil au nombre de media retournés


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed