Comment afficher un texte dans un tableau quand données NULL

manolo-25
Invité n'ayant pas de compte PHPfrance

27 mars 2012, 12:27

Bonjour,
J'ai un tableau sur mon site qui est lié avec une base de donnée MySql. Une de mes colonnes affiche des dates. Pour certaines lignes de mon tableau je n'ai pas de dates et j'aimerais que pour ces lignes sans dates, il s'affiche toujours le même message.
Pour être plus précis : Mon tableau réference des projets de recherche. Pour certains projets de recherche je n'ai pas de date correspondant, et là où ailleurs il affiche les dates du type "25/04/2012", alors quand les données sont nulles, il affiche "//". J'aimerais à la place qu'il s'affiche un message qui est toujours le même du genre "pas de date disponible".

Voici le code :

<?php

$sql = "SELECT * FROM aap INNER JOIN organisme ON organisme_id=id_organisme INNER JOIN type_aap ON id_type=type_id INNER JOIN specialite ON id_specialite=specialite_id WHERE ($requete) AND ($requete2) ORDER BY date_fin ASC";
$req = mysql_query($sql);
While ($data=mysql_fetch_array($req)){
$array_date_mysql=explode("-",$data['date_fin']);
$date_fr=$array_date_mysql[2]."/".$array_date_mysql[1]."/".$array_date_mysql[0];


echo'
<tr align="center">
<td>
<font style="font-size:10pt" face="TAHOMA" color="#321000"><b>

'.$data['nom'].'

</b></font>
</td>
<td>
<font style="font-size:8pt" face="TAHOMA" color="#505050"><b>

'.$data['nom_aap'].'

</b></font>
</td>
<td>
<P align="justify">
<font style="font-size:8pt" face="TAHOMA" color="#505050">

'.nl2br($data['description']).'

</font>
</td>
<td>
<font style="font-size:8pt" face="TAHOMA" color="#505050"><b>

'.$data['nom_organisme'].'

</b></font>
</td>
<td>
<font style="font-size:6pt" face="TAHOMA" color="#505050"><b>

'.$data['nom_type'].'

</b></font>
</td>
<td>
<font style="font-size:6pt" face="TAHOMA" color="#505050"><b>

'.$date_fr.'

</b></font>
</td>
<td>
<font style="font-size:6pt" face="TAHOMA" color="#505050"><b>

'.nl2br ($data['montant']).'

</b></font>
</td>
<td>
<font style="font-size:8pt" face="TAHOMA" color="#505050"><b>

<a href="'.$data['lien_internet'].'" target="_blank" ><img src="http://www.dirc-est.fr/images/clic_test6.png " border="0" width="38" height="38" alt="lien"></a>

</b></font>
</td>

</tr>';
}

?>

manolo-25
Invité n'ayant pas de compte PHPfrance

27 mars 2012, 12:27

Merci par avance pour vos réponses !!!!

ViPHP
xTG
ViPHP | 7331 Messages

27 mars 2012, 12:55

Il faut modifier la ligne suivante :
$date_fr=$array_date_mysql[2]."/".$array_date_mysql[1]."/".$array_date_mysql[0];
Il faut vérifier que les valeurs ne sont pas vides :
if( empty($array_date_mysql[0]) && empty($array_date_mysql[1]) && empty($array_date_mysql[2]) )
  $date_fr = 'Pas de date';
else
  $date_fr=$array_date_mysql[2]."/".$array_date_mysql[1]."/".$array_date_mysql[0];

manolo-25
Invité n'ayant pas de compte PHPfrance

27 mars 2012, 13:54

Génial !!!!!
ça marche parfaitement !
un grand merci à toi !

manolo-25
Invité n'ayant pas de compte PHPfrance

27 mars 2012, 13:58

Ah j'aurais une dernère petite question si tu as une idée...
j'éffectue un tri sur ces dates pour que les plus proches apparaissent en haut de mon tableau avec "ORDER BY date_fin ASC" :

$sql = "SELECT * FROM aap INNER JOIN organisme ON organisme_id=id_organisme INNER JOIN type_aap ON id_type=type_id INNER JOIN specialite ON id_specialite=specialite_id WHERE ($requete) AND ($requete2) ORDER BY date_fin ASC";
$req = mysql_query($sql);

Le truc c'est que j'aurai aimé que là où il n'y a pas de date, celle-ci apparaissent à la fin de mon tableau et non pas au début comme c'est le cas actuellement...

Si tu as une idée...

mais merci encore pour le reste c'est déjà cool !

Eléphant du PHP | 267 Messages

27 mars 2012, 15:31

salut,

voici une solution :
<?php

$sql = "SELECT * FROM aap INNER JOIN organisme ON organisme_id=id_organisme INNER JOIN type_aap ON id_type=type_id INNER JOIN specialite ON id_specialite=specialite_id WHERE ($requete) AND ($requete2) ORDER BY date_fin ASC";
$req = mysql_query($sql);
while($data=mysql_fetch_array($req)){
  $array_date_mysql=explode("-",$data['date_fin']);
  if( empty($array_date_mysql[0]) && empty($array_date_mysql[1]) && empty($array_date_mysql[2]) ){
    $date_fr = 'Pas de date';
    $nomTab = 'tabWithDateNull';
  }
  else{
    $date_fr=$array_date_mysql[2]."/".$array_date_mysql[1]."/".$array_date_mysql[0];
    $nomTab = 'tabWithDateNotNull';
  }
  ${$nomTab}[] = '
<tr align="center">
<td>
<font style="font-size:10pt" face="TAHOMA" color="#321000"><b>

'.$data['nom'].'

</b></font>
</td>
<td>
<font style="font-size:8pt" face="TAHOMA" color="#505050"><b>

'.$data['nom_aap'].'

</b></font>
</td>
<td>
<P align="justify">
<font style="font-size:8pt" face="TAHOMA" color="#505050">

'.nl2br($data['description']).'

</font>
</td>
<td>
<font style="font-size:8pt" face="TAHOMA" color="#505050"><b>

'.$data['nom_organisme'].'

</b></font>
</td>
<td>
<font style="font-size:6pt" face="TAHOMA" color="#505050"><b>

'.$data['nom_type'].'

</b></font>
</td>
<td>
<font style="font-size:6pt" face="TAHOMA" color="#505050"><b>

'.$date_fr.'

</b></font>
</td>
<td>
<font style="font-size:6pt" face="TAHOMA" color="#505050"><b>

'.nl2br ($data['montant']).'

</b></font>
</td>
<td>
<font style="font-size:8pt" face="TAHOMA" color="#505050"><b>

<a href="'.$data['lien_internet'].'" target="_blank" ><img src="http://www.dirc-est.fr/images/clic_test6.png " border="0" width="38" height="38" alt="lien"></a>

</b></font>
</td>

</tr>';
}
$tabAll = array_merge($tabWithDateNotNull, $tabWithDateNull);
foreach($tabAll as $elt){
  echo($elt);
}

?>
@+
dix2

manolo-25
Invité n'ayant pas de compte PHPfrance

27 mars 2012, 20:08

au top !!!!!!!!! :)
super
merci beaucoup