Test champs base mysql

Test champs base mysql - PHP - Programmation

Marsh Posté le 30-01-2009 à 14:24:28    

Bonjour,  
 
Je pense que c'est tout bête, mais je bloque pour tester un champs d'une base mysql !  
 
Si le champs "datefr" de la table manifestations est vide alors ........ , sinon .......  

Code :
  1. $select = 'SELECT * FROM manifestations ORDER BY date ASC';
  2. $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
  3. {
  4. //affichage des résultats  
  5. while($row = mysql_fetch_array($result))
  6. {
  7. echo '<table width="700px" border="1">';
  8. echo '<tr>';
  9. if ($datefr == " " ) { echo '<td bgcolor="#669988" width="230px" align="left">'.$row['datefr'].' '.$row['heure'].'</td>'; }
  10. else { echo '<td bgcolor="#669988" width="230px" align="left">Le '.$row['datefr'].' à '.$row['heure'].'</td>'; }
  11. echo '<td bgcolor="#669999" width="400px" align="left"><span style="font-weight: 400"> '.$row['titre'].' </span></td>';
  12. echo '</tr>';
  13. echo '<tr>';
  14. echo '<td colspan="2" bgcolor="#FFFFCC" width="100%" align="left"><span style="font-weight: 400"> '.nl2br($row['texte']).' </span></td>';
  15. echo '</tr></table><p>';
  16. }
  17. }


 
Là, la condition else est automatiquement éxécuté alors qu'elle ne le devrait pas !!!!!  :pt1cable:  
 
Merci pour votre aide .....  :)

Reply

Marsh Posté le 30-01-2009 à 14:24:28   

Reply

Marsh Posté le 30-01-2009 à 14:45:15    

l'espace entre tes guillemets compte...

 

edit:ortho

 

Message cité 1 fois
Message édité par jagstang le 30-01-2009 à 15:55:30

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 30-01-2009 à 15:43:20    

Merci beaucoup ........  :bounce:   :hello:

Reply

Marsh Posté le 30-01-2009 à 15:52:04    

t671 a écrit :

Merci beaucoup ........  :bounce:   :hello:


essaye avec la fonction php empty .......................................


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 30-01-2009 à 16:07:45    

jagstang a écrit :

l'espace entre tes guillemets compte...  
 
edit:ortho
 


 
Ben finalement, après des essais, la fonction else n'est plus éxécuté ..... !!!!???? :(

Reply

Marsh Posté le 30-01-2009 à 16:11:05    

kao98 a écrit :


essaye avec la fonction php empty .......................................


 
Même résultat avec empty ........... la fonction else n'est pas éxécuté !!!!!

Reply

Marsh Posté le 30-01-2009 à 16:14:56    

Mais, c'est quoi ce "$datefr" ? C'est pas plutôt "$row['datefr']" ?
Et il y a quoi dedans !?
 
Et arrête avec tes putains de ..................... et autre poncturations à rallonge inutilles !!!!!!!!!!!!!!!


Message édité par kao98 le 30-01-2009 à 16:15:20

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 30-01-2009 à 16:50:15    

OK !
"datefr" est un champs de ma base qui peut éventuellement être vide. Si il est vide, j'affiche pas, sinon j'affiche '.$row['datefr'].' et '.$row['heure'].' :
 

Code :
  1. // connection à la DB
  2. $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
  3. mysql_select_db($db) or die ('Erreur :'.mysql_error());
  4. //récupère tous les enregistrements + tri ascendant des dates ($select)   
  5. $select = 'SELECT * FROM manifestations ORDER BY date ASC';
  6. $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
  7. {
  8.      //affichage des résultats  
  9.    while($row = mysql_fetch_array($result))
  10. if ($datefr == "" )  
  11. {
  12. echo '<table width="700px" border="1">';
  13. echo '<tr>';
  14.   echo '<th rowspan="2" bgcolor="#ffe4c4" width="70px" align="center"><a href="modif-manif.php?mode=modif&id='.$row['id'].'">Modifier</a><p><a href="suppression.php?mode=suppression&id='.$row['id'].'">Supprimer</a></th>';
  15.  echo '<td bgcolor="#669988" width="230px" align="left">'.$row['datefr'].' '.$row['heure'].'</td>';                     
  16.  echo '<td bgcolor="#669999" width="400px" align="left"><span style="font-weight: 400"> '.$row['titre'].' </span></td>';
  17.     echo '</tr>';
  18.     echo '<tr>';
  19.         echo '<td colspan="2" bgcolor="#FFFFCC" width="100%" align="left"><span style="font-weight: 400"> '.nl2br($row['texte']).' </span></td>';
  20.     echo '</tr></table><p>';
  21. }
  22. else
  23. {
  24. echo '<table width="700px" border="1">';
  25. echo '<tr>';
  26.    echo '<th rowspan="2" bgcolor="#ffe4c4" width="70px" align="center"><a href="modif-manif.php?mode=modif&id='.$row['id'].'">Modifier</a><p>';
  27.   echo '<td bgcolor="#669988" width="230px" align="left">Le '.$row['datefr'].' à '.$row['heure'].'</td>';
  28.  echo '<td bgcolor="#669999" width="400px" align="left"><span style="font-weight: 400"> '.$row['titre'].' </span></td>';
  29.       echo '</tr>';
  30.         echo '<tr>';
  31.          echo '<td colspan="2" bgcolor="#FFFFCC" width="100%" align="left"><span style="font-weight: 400"> '.nl2br($row['texte']).' </span></td>';
  32.         echo '</tr></table><p>';
  33. }
  34. }


 
Là, le "else" n'est pas éxécuté. Si datefr est vide, le champs est affiché vide.  
Et si il y a un enregistrement, il s'affiche, mais le "Le" et "à" de "Le '.$row['datefr'].' à '.$row['heure'].'" ne s'affichent pas.
Et lmoi je suis un peu perdu  :pt1cable:  

Reply

Marsh Posté le 30-01-2009 à 16:53:11    

Tu as vu mon message concernant la fonction php empty ?
Et, ton test est faux !
Tu test "$datefr" ! Il faut tester $row['datefr'] !

Message cité 1 fois
Message édité par kao98 le 30-01-2009 à 16:53:19

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 30-01-2009 à 17:11:46    

kao98 a écrit :

Tu as vu mon message concernant la fonction php empty ?
Et, ton test est faux !
Tu test "$datefr" ! Il faut tester $row['datefr'] !


 
Avec empty => if (empty($row['$datefr'])) , le else n'est pas éxécuté.
C'est à dire que rien n'est affiché si le champs est vide, et si il n'est pas vide, les "Le" et "à" ne s'affichent pas.

Reply

Marsh Posté le 30-01-2009 à 17:11:46   

Reply

Marsh Posté le 30-01-2009 à 17:19:22    

Manque pas une accolade entre ton while et ton if !?
Ca donne quoi echo(empty($row['datefr'])); ?

Message cité 1 fois
Message édité par kao98 le 30-01-2009 à 17:20:15

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 30-01-2009 à 19:10:08    

kao98 a écrit :

Manque pas une accolade entre ton while et ton if !?
Ca donne quoi echo(empty($row['datefr'])); ?


 
Il ne doit pas y avoir d'accolade entre le while et le if. Du moins je pense pas !
 
Le echo(empty($row['datefr'])); donne comme réponse un tableau vide  :??:  

Reply

Marsh Posté le 30-01-2009 à 23:58:12    

t671 a écrit :


 
Il ne doit pas y avoir d'accolade entre le while et le if. Du moins je pense pas !


Ben, bien sûr que si !

Code :
  1. while (truc)
  2. {
  3.    if (autre truc)
  4.    {
  5.        faire truc;
  6.    }
  7.    else
  8.    {
  9.    }
  10. }


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 30-01-2009 à 23:59:14    

t671 a écrit :


Le echo(empty($row['datefr'])); donne comme réponse un tableau vide  :??:  


Je ne te demande pas de me proposer ce que c'es sencé faire ! Mais de taper ça dans ton script et de quoter ici le résultat !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 31-01-2009 à 11:13:48    

Bonjour kao98,
 
Si je mets une accolade après le while, ça ne change rien à mon résultat.
Si je mets echo(empty($row['datefr'])); sans le if, j'ai une page blanche. Et avec le if, uniquement çà :
http://th1.free.fr/tableau_vide.jpg

Reply

Marsh Posté le 31-01-2009 à 11:39:14    

Tout en haut de ton script ajoute :

Code :


Que s'affiche t'il ?
Et ensuite, si tu fais  

Code :
  1. echo (int) empty($row['datefr']);


Que s'affiche-t-il ?

Reply

Marsh Posté le 31-01-2009 à 12:17:06    


Le error_reporting(E_ALL); ne change rien. Pas d'affichage supplémentaire !
 
Le echo (int) empty($row['datefr']); affiche un zero au dessus de chaque encadré :
 
http://th1.free.fr/tableau0.jpg

Reply

Marsh Posté le 31-01-2009 à 12:24:06    

Tu es sûr que error_reporting(E_ALL) ne change rien ?
Pourtant tu testes $date_fr qui n'existe pas dans ton IF au lieu de tester $row['date_fr'].

Reply

Marsh Posté le 31-01-2009 à 12:35:47    


 
Le error_reporting(E_ALL) je l'ai mis juste après la connexion à la base, sans rien toucher d'autre, et aucune modification dans le résultat. C'est à dire que le tableau s'affiche, si les champs sont vide, les cases sont vides, mais la date n'affiche pas "Le" et "à" ! Donc le "else" n'est pas éxécuté.
 
Dans la première partie du if, si je met '.$row['datefr'].'9999 '.$row['heure'].' à la place de '.$row['datefr'].' '.$row['heure'].', mes 9999 s'affichent partout .....

Reply

Marsh Posté le 31-01-2009 à 12:43:36    

remplace

Code :
  1. if ($datefr == "" )

par

Code :
  1. if (empty($row['datefr']))

Reply

Marsh Posté le 31-01-2009 à 13:05:48    


 
Ca, c'est déjà fait, et ça ne change rien .....  :cry:

Reply

Marsh Posté le 31-01-2009 à 17:00:00    

met un  
echo $row['datefr'];
avant ton if.
Le empty($row['datefr']) qui affiche 0 partout indique que $row['datefr'] est vide partout.
 
Et laisse l'accolade après ton while surtout !
 
En clair, met ça :

Code :
  1. while($row = mysql_fetch_array($result))
  2. {
  3.    echo "Row['datefr']==\"".$row['datefr']."\"";
  4.    if ( empty($row['datefr']) )  
  5.    {
  6.    //(...)


Message édité par kao98 le 31-01-2009 à 17:02:06

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 31-01-2009 à 17:23:42    

J'ai fait ce que tu m'as dit, et voici le résultat :
 
http://th1.free.fr/tableau2.jpg
 
pour le code :
 

Code :
  1. $select = 'SELECT * FROM manifestations ORDER BY date ASC';
  2. $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
  3.      //affichage des résultats  
  4.    while($row = mysql_fetch_array($result))
  5.  
  6.       {
  7. echo '<table width="700px" border="1">';
  8. echo '<tr>';
  9.   echo '<th rowspan="2" bgcolor="#ffe4c4" width="70px" align="center"><a href="modif-manif.php?mode=modif&id='.$row['id'].'">Modifier</a><p><a href="suppression.php?mode=suppression&id='.$row['id'].'">Supprimer</a></th>';
  10. echo "Row['datefr']==\"".$row['datefr']."\"";
  11. if (empty($row['$datefr']))
  12. {
  13.  echo '<td bgcolor="#669988" width="230px" align="left"></td>';
  14. }
  15. else
  16. {                      
  17.   echo '<td bgcolor="#669988" width="230px" align="left">Le '.$row['datefr'].' à '.$row['heure'].' : </td>';
  18. }
  19.  echo '<td bgcolor="#669999" width="400px" align="left"><span style="font-weight: 400"> '.$row['titre'].' </span></td>';
  20.     echo '</tr>';
  21.     echo '<tr>';
  22.         echo '<td colspan="2" bgcolor="#FFFFCC" width="100%" align="left"><span style="font-weight: 400"> '.nl2br($row['texte']).' </span></td>';
  23.     echo '</tr></table><p>';
  24. }


Ce qui prouve que le script ne passe jamais dans le "else".

Reply

Marsh Posté le 31-01-2009 à 17:38:12    

Putain mais t'es grave !
C'est pas :
$row['$datefr'] !
c'est
$row['datefr'] !!!
 
Relis ton code quand même un peu !!!

Message cité 1 fois
Message édité par kao98 le 31-01-2009 à 17:38:35

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 31-01-2009 à 17:44:14    

kao98 a écrit :

Putain mais t'es grave !
C'est pas :
$row['$datefr'] !
c'est
$row['datefr'] !!!
 
Relis ton code quand même un peu !!!


 
Exact ! Meaculpa !  :pt1cable:   :whistle:  à force, je sais plus où j'habite ...
 
Par contre, maintenant le "else" est éxécuté à chaque fois. C'est à dire que pour les champs qui sont vides, ça affiche " Le à : "   :??:  

Reply

Marsh Posté le 31-01-2009 à 18:44:17    

j'ai l'impression qu'il y a un espace quand il n'y a pas de date.
Essaye comme ça :
if ( empty(trim($row['datefr'])) )


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 01-02-2009 à 12:07:19    

kao98 a écrit :

j'ai l'impression qu'il y a un espace quand il n'y a pas de date.
Essaye comme ça :
if ( empty(trim($row['datefr'])) )


 
Bonjour kao98,
 
Effectivement, j'avais pensé que le champs n'était pas vide, mais "blanc" !
J'ai testé ta commande, et j'ai en réponse ceci : Fatal error: Can't use function return value in write context
 
 :??:

Reply

Marsh Posté le 01-02-2009 à 14:42:52    

empty doit tester une variable et non un retour de fonction, fait d'abord le trim, affecte sa valeur à la variable, puis fais le empty sur cette nouvelle variable "trimée".

Reply

Marsh Posté le 01-02-2009 à 17:30:56    

yellu a écrit :

empty doit tester une variable et non un retour de fonction, fait d'abord le trim, affecte sa valeur à la variable, puis fais le empty sur cette nouvelle variable "trimée".


 
Si j'écris ceci : $datefr=trim($datefr);
                     if (empty($row['datefr']))

=> Pas le if mais le else est éxécuté.
 
Si j'écris ceci : $datefr2=trim($datefr);
                     if (empty($row['datefr2']))

=> Le else n'est jamais éxécuté.
 
 :fou:  :pt1cable:   :cry:

Reply

Marsh Posté le 01-02-2009 à 17:52:04    

oulala tu m'as l'air de bien nager entre les variables et les index de tableaux :s
 
Remplace :  
 
if ( empty(trim($row['datefr'])) )
 
Par :
 
$tmp = trim($row['datefr']);
 
if(empty($tmp))

Reply

Marsh Posté le 01-02-2009 à 18:00:55    

yellu a écrit :

oulala tu m'as l'air de bien nager entre les variables et les index de tableaux :s
 
Remplace :  
 
if ( empty(trim($row['datefr'])) )
 
Par :
 
$tmp = trim($row['datefr']);
 
if(empty($tmp))


 
Je te remercie beaucoup ! Ca maaaaaaaaaaaaaarche.  :pt1cable:   :bounce:  
 
 :sol:   :hello:   :D

Reply

Marsh Posté le 04-09-2009 à 23:23:58    

ta pas oublier d'incrementer ta variable pour while?

Code :
  1. 1. $select = 'SELECT * FROM manifestations ORDER BY date ASC';
  2.    2. $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
  3.    3.
  4.    4.      //affichage des résultats   
  5.    5.    while($row = mysql_fetch_array($result))
  6.    6. 
  7.    7.       {
  8.    8.
  9.    9. echo '<table width="700px" border="1">';
  10.   10. echo '<tr>';
  11.   11.   echo '<th rowspan="2" bgcolor="#ffe4c4" width="70px" align="center"><a href="modif-manif.php?mode=modif&id='.$row['id'].'">Modifier</a><p><a href="suppression.php?mode=suppression&id='.$row['id'].'">Supprimer</a></th>';
  12.   12. echo "Row['datefr']==\"".$row['datefr']."\"";
  13.   13. if (empty($row['$datefr']))
  14.   14. {
  15.   15.  echo '<td bgcolor="#669988" width="230px" align="left"></td>';
  16.   16. }
  17.   17. else
  18.   18. {                     
  19.   19.   echo '<td bgcolor="#669988" width="230px" align="left">Le '.$row['datefr'].' à '.$row['heure'].' : </td>';
  20.   20. }
  21.   21.  echo '<td bgcolor="#669999" width="400px" align="left"><span style="font-weight: 400"> '.$row['titre'].' </span></td>';
  22.   22.
  23.   23.     echo '</tr>';
  24.   24.     echo '<tr>';
  25.   25.         echo '<td colspan="2" bgcolor="#FFFFCC" width="100%" align="left"><span style="font-weight: 400"> '.nl2br($row['texte']).' </span></td>';
  26.   26.     echo '</tr></table><p>';
  27.   27.
  28.   28. }


Message édité par adnbenji le 04-09-2009 à 23:28:19

---------------
createur de tookCMS
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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