Requête : SELECT * FROM = ok , mais SELECT id, ... FROM = ko

Requête : SELECT * FROM = ok , mais SELECT id, ... FROM = ko - PHP - Programmation

Marsh Posté le 03-05-2006 à 14:08:33    

Bonjour,
 
Voilà, j'ai un petit soucis avec une requête.
 

Code :
  1. <?php
  2. mysql_connect("localhost", "******", "******" ) or die("Impossible de se connecter :  " . mysql_error());
  3. mysql_select_db("******" );
  4. $result = mysql_query("SELECT id, DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date, match, score FROM r1d ORDER BY id" );
  5. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  6. {
  7. ?>
  8.   <table align="center" width="500" border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
  9.     <tr>
  10.       <td width="80"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[0]; ?></font></span></td>
  11.       <td width="200"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[1]; ?></font></span></td>
  12.       <td width="140"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[2]; ?></font></span></td>
  13.       <td width="80"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[3]; ?></font></span></td>
  14.     </tr>
  15.   </table>
  16. <?php
  17. }
  18. mysql_free_result($result);
  19. ?>


 
Le tableau avec les données de la table ne s'affiche pas!!
 
Bizarre, car avec un code +- similaire sur une autre page, ca fonctionne :
 

Code :
  1. <?php
  2. mysql_connect("localhost", "******", "******" ) or die("Impossible de se connecter :  " . mysql_error());
  3. mysql_select_db("******" );
  4. $result = mysql_query("SELECT id, DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date, texte FROM news ORDER BY date DESC" );
  5. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  6. {
  7. ?>
  8.   <table align="center" border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="500" id="AutoNumber1">
  9.     <tr>
  10.       <td width="440"><span style="font-size: 8pt"><font face="verdana"><b><?php echo $row[0]; ?>. News postée le <?php echo $row[1]; ?></b></font></span></td>
  11.     </tr>
  12.     <tr>
  13.       <td width="440"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[2]; ?></font></span><hr align="left" color="#4C0099" width="400" size="1">
  14. </td>
  15.     </tr>
  16.   </table>
  17. <?php
  18. }
  19. mysql_free_result($result);


 
Pouvez vous m'aider ?
 

Reply

Marsh Posté le 03-05-2006 à 14:08:33   

Reply

Marsh Posté le 03-05-2006 à 14:55:23    

Au hasard, la table 'r1d' est vide ? :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 03-05-2006 à 14:56:48    

non.
 
Lorsque j'effectue la requete en tapant SELECT * FROM r1d, tout se passe bien, mais mon but est de formater la date et je dois passer par  
 
SELECT id, DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date, .... FROM r1d
 
Je ne comprends pas mon erreur

Reply

Marsh Posté le 03-05-2006 à 15:03:41    

Rajoute après chaque instruction mysql : or die('Erreur SQL :'.mysql_error());
 
Exemple :
 
$result = mysql_query("SELECT id, DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date, match, score FROM r1d ORDER BY id" ) or die('Erreur SQL :'.mysql_error());

Reply

Marsh Posté le 03-05-2006 à 15:09:29    

ca ne change rien, aucun message d'erreur

Reply

Marsh Posté le 03-05-2006 à 15:13:24    

D'autres questions similaires ont déjà été postées ici, et il semble le nom "id" ait une signification spéciale pour MySQL.
La solution consiste à préfixer id avec le nom de la table :
SELECT r1d.id ... FROM r1d...

Reply

Marsh Posté le 03-05-2006 à 15:33:14    

Perso, je lis ça DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date et je me demande comment mysql ne crise pas, tu utilise comme nom d'alias un nom de champs qui est de plus un mot réservé :hello:

Reply

Marsh Posté le 03-05-2006 à 15:37:40    

nom d'alias ?
 
pourquoi ca marche dans un autre cas avec le même SELECT ?
 
pour r1d.id, ca ne marche pas non plus. Ma requete est la suivante désormais :
 

Code :
  1. <?php
  2. mysql_connect("localhost", "***", "***" ) or die("Impossible de se connecter :  " . mysql_error());
  3. mysql_select_db("***" );
  4. $result = mysql_query("SELECT DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date, match, score FROM r1d ORDER BY date" );
  5. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  6. {
  7. ?>
  8.   <table align="center" width="450" border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
  9.     <tr>
  10.       <td width="150"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[0]; ?></font></span></td>
  11.       <td width="150"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[1]; ?></font></span></td>
  12.       <td width="150"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[2]; ?></font></span></td>
  13.     </tr>
  14.   </table>
  15. <?php
  16. }
  17. mysql_free_result($result);
  18. ?>


Message édité par oli1987 le 03-05-2006 à 15:40:30
Reply

Marsh Posté le 03-05-2006 à 15:45:08    

Oui la requête est désormais celle-là. Content de l'apprendre. :)  
Mais est-ce que cette nouvelle requête fonctionne ?
 
Tiens le id a disparu de la requête.
Donc c'est la date qui pose un problème ?
 
Choisir le mot "date" pour ces noms de variable est une autre prise de risque.
Ce mot "date" peut avoir une signification spéciale pour MySQL.
Pourquoi ne pas prendre des noms moins ordinaires et plus longs (date_du_truc), ou contenant des numéros (date1), ce qui permet d'éviter tous conflits éventuels avec des mots réservés ?
D'ailleurs, est-ce normal que le nom de l'alias soit "date" et que la colonne soit nommée "date" ?
Comment est-ce que MySQL va s'y retrouver dans toutes ces "date" ?
Peut-être qu'en essayant avec un alias différent du nom de la colonne, cela marcherait.
 

Reply

Marsh Posté le 03-05-2006 à 15:52:13    

ca va tjrs pas avec cette requette comme tu me dis
 

Code :
  1. <?php
  2. mysql_connect("localhost", "***", "***" ) or die("Impossible de se connecter :  " . mysql_error());
  3. mysql_select_db("***" );
  4. $result = mysql_query("SELECT DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date_match, match, score FROM r1d ORDER BY date_match" );
  5. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  6. {
  7. ?>
  8.   <table align="center" width="450" border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
  9.     <tr>
  10.       <td width="150"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[0]; ?></font></span></td>
  11.       <td width="150"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[1]; ?></font></span></td>
  12.       <td width="150"><span style="font-size: 8pt"><font face="verdana"><?php echo $row[2]; ?></font></span></td>
  13.     </tr>
  14.   </table>
  15. <?php
  16. }
  17. mysql_free_result($result);
  18. ?>


 
 
et j'ai bien sur changé le nom de mon champ dans ma table qui s'appelle date_match mtnt


Message édité par oli1987 le 03-05-2006 à 15:52:46
Reply

Marsh Posté le 03-05-2006 à 15:52:13   

Reply

Marsh Posté le 03-05-2006 à 15:55:37    

Bon, que reste-t-il à changer ?
Le format de la date ?
Ce n'est pas drôle quand on a un bug qui vous résiste, mais courage, la solution va bientôt venir.

Reply

Marsh Posté le 03-05-2006 à 16:05:51    

oui, il n'y a plus "quà formater la date"...
 
je ne comprends pas pourquoi il n'affiche rien

Reply

Marsh Posté le 03-05-2006 à 16:06:07    

le nom de ma table est trop court ? "r1d" ???

Reply

Marsh Posté le 03-05-2006 à 16:06:57    

je vais tout recommencer, en recréant tout, je vous dis si ca marche ou pas après

Reply

Marsh Posté le 03-05-2006 à 16:15:52    

Voilà mon code ci dessous, et le résultat là ==> http://bcml.no-ip.org/Equipes/R1D/accueil1.php
 

Code :
  1. <p align="center"><font face="verdana" size="4"><b><u>Régionale 1 Dames</u></b></font></p>
  2. <p align="left"><font face="verdana" size="2"><b>Calendrier & résultats</b></font></p>
  3. <table align="center" border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="400">
  4.     <tr>
  5.       <td width="80" align="center"><font face="Verdana"><b>
  6.       <span style="font-size: 8pt; text-decoration: underline">Journée</span></b></font></td>
  7.       <td width="120" align="center"><font face="Verdana"><b>
  8.       <span style="font-size: 8pt; text-decoration: underline">Date</span></b></font></td>
  9.       <td width="120" align="center"><font face="Verdana"><b>
  10.       <span style="font-size: 8pt; text-decoration: underline">Match</span></b></font></td>
  11.       <td width="80" align="center"><font face="Verdana"><b>
  12.       <span style="font-size: 8pt; text-decoration: underline">Score</span></b></font></td>
  13.     </tr>
  14. </table>
  15. <?php
  16. mysql_connect("localhost", "***", "***" ) or die("Impossible de se connecter :  " . mysql_error());
  17. mysql_select_db("***" );
  18. $result = mysql_query("SELECT regundames.id, DATE_FORMAT(date,'%d-%m-%Y à %H:%i:%s') AS date_match, match, score FROM regundames ORDER BY regundames.id DESC" );
  19. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  20. {
  21. ?>
  22. <table align="center" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="400">
  23.     <tr>
  24.       <td width="80" align="center"><font face="Verdana"><b>
  25.       <span style="font-size: 8pt; text-decoration: underline"><?php echo $row[0]; ?></span></b></font></td>
  26.       <td width="120" align="center"><font face="Verdana"><b>
  27.       <span style="font-size: 8pt; text-decoration: underline"><?php echo $row[1]; ?></span></b></font></td>
  28.       <td width="120" align="center"><font face="Verdana"><b>
  29.       <span style="font-size: 8pt; text-decoration: underline"><?php echo $row[2]; ?></span></b></font></td>
  30.       <td width="80" align="center"><font face="Verdana"><b>
  31.       <span style="font-size: 8pt; text-decoration: underline"><?php echo $row[3]; ?></span></b></font></td>
  32.     </tr>
  33. </table>
  34. <?php
  35. }
  36. mysql_free_result($result);
  37. ?>

Reply

Marsh Posté le 03-05-2006 à 16:29:38    

Essaie :
DATE_FORMAT(`date`, '%d-%m-%Y à %H:%i:%s')


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 03-05-2006 à 16:41:00    

ca ne change tjrs rien :(

Reply

Marsh Posté le 06-05-2006 à 22:27:09    

problème résolu...
 
Mon champ "match" posait problème. En le remplacant par "game", tout va bien :D

Reply

Marsh Posté le 07-05-2006 à 00:57:51    

pour ce genre de bug où l'origine est aussi bete, il serait bon de tester la requete avec un bon phpMyadmin. Tu aurais eu de suite ce qui n'allait pas dans la requete. :o

Reply

Sujets relatifs:

Leave a Replay

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