Donc si je prends cette possibilité, ça donnerait qq chose du type (ne pas faire attention à la ponctuation, je m'attache à la démarche pour le moment):Tu peux le traiter en PHP en vérifiant avant la création de chaque ligne que les 4 paramètres ne sont pas vides et selon le résultat générer la ligne ou passer au tour suivant de ta boucle.
if (!$Annee)
print // là je ne sais pas comment exprimer le "ne rien afficher"
else
print ('$Année')
Dans ce cas là, comment je génère la ligne titre de mon tableau (Année)?Dans ce cas là, y a-t-il des fonctions spécifiques à connaître? Et même question: comment est-ce que je fais pour ma ligne "en dur"?Mais tu pourrais aussi le faire en amont au niveau de ta requête SQL en ne récupérant QUE les éléments formant des lignes complètes sans valeurs nulles : de cette façon tu n'aurais plus à te préoccuper de cellules vides dans ton tableaux, toutes seraient obligatoirement remplies avec une valeur.
<?
//Exemple de contenu à afficher
$films = array(
array ("titre"=>"E.T.", "réalisateur"=>"S.Spielberg" , "année"=>""),
array ("titre"=>"Garfield", "réalisateur"=>"Peter Hewitt","année"=>"2004")
); //fin du tableau $films
//Fiches des films (film par film)
foreach ($films as $unFilm) {
echo "<p><table border=1><Legend><Strong>Fiche de film</Strong>";
//Ne pas afficher les élèments vides
if ($unFilm["titre"] != null && trim($unFilm["titre"]) != "")
echo "<tr><th>Titre :<td>".$unFilm["titre"];
if ($unFilm["réalisateur"] != null && trim($unFilm["réalisateur"]) != "")
echo "<tr><th>Réalisateur :<td>".$unFilm["réalisateur"];
if ($unFilm["année"] != null && trim($unFilm["année"]) != "")
echo "<tr><th>Année :<td>".$unFilm["année"];
//Fin d'une fiche
echo "</table>";
} //Au suivant!
?>
La fonction trim($variable) elimine les espaces inutiles (dans le cas où $variable ne contient que des espaces trim() retourne vide "") elle est utilisée ici pour s'assurer que les chaines contenant des espaces par mégarde sont conciérées vides (car un espace n'est pas du vide)<?php
$sql = "SELECT titre, realisateur, synopsis, annee FROM t_cinema";
$requete = mysql_query($sql);
?>
<table>
<tr>
<th>Titre</th>
<th>Réalisateur</th>
<th>Synopsis</th>
<th>Année</th>
</tr>
<?php
while($ligne = mysql_fetch_assoc($requete))
{
if(!empty($ligne['titre']) && !empty($ligne['realisateur']) && !empty($ligne['synopsis']) && !empty($ligne['annee']))
{
?>
<tr>
<td><?php echo($ligne['titre']); ?></td>
<td><?php echo($ligne['realisateur']); ?></td>
<td><?php echo($ligne['synopsis']); ?></td>
<td><?php echo($ligne['annee']); ?></td>
</tr>
<?php
}
}
?>
</table>
Selconde méthode:
<?php
$sql = "SELECT titre, realisateur, synopsis, annee FROM t_cinema".
"WHERE titre <> ''".
"AND realisateur <> '' ".
"AND synopsis <> '' ".
"AND annee <> '0000-00-00' ".
"AND annee <> ''";
$requete = mysql_query($sql);
?>
<table>
<tr>
<th>Titre</th>
<th>Réalisateur</th>
<th>Synopsis</th>
<th>Année</th>
</tr>
<?php
while($ligne = mysql_fetch_assoc($requete))
{
?>
<tr>
<td><?php echo($ligne['titre']); ?></td>
<td><?php echo($ligne['realisateur']); ?></td>
<td><?php echo($ligne['synopsis']); ?></td>
<td><?php echo($ligne['annee']); ?></td>
</tr>
<?php
}
?>
</table>
Adapte les noms de table et de champs à ta propre base et tu obtiendras ce que tu cherches à faire.
<?php
$sql = "SELECT titre, realisateur, synopsis, annee FROM t_cinema";
$requete = mysql_query($sql);
?>
<table>
<tr>
<th>Titre</th>
<th>Réalisateur</th>
<th>Synopsis</th>
<th>Année</th>
</tr>
<?php
while($ligne = mysql_fetch_assoc($requete))
{
?>
<tr>
<td><?php echo(!empty($ligne['titre']) ? $ligne['titre'] : " "); ?></td>
<td><?php echo(!empty($ligne['realisateur']) ? $ligne['realisateur'] : " "); ?></td>
<td><?php echo(!empty($ligne['synopsis']) ? $ligne['synopsis'] : " "); ?></td>
<td><?php echo(!empty($ligne['annee']) ? $ligne['annee'] : " "); ?></td>
</tr>
<?php
}
?>
</table><?php echo(!empty($ligne['titre']) ? $ligne['titre'] : " "); ?>
Qu'est-ce que c'est? " "
Comment définis-tu la variable $ligne?<?php echo(!empty($ligne['titre']) ? $ligne['titre'] : " "); ?>Est strictement la même chose que:
<?php if(!empty($ligne['titre']){echo($ligne['titre']) } else { echo(" ") } ?>
" " = Non Breakable SPace = Espace insécable .Si je comprends bien ton exemple, je garde la partie html en dur (les titres). Comment faire si je ne veux pas de la ligne si elle se présente ainsi :Alors n'affichons que les données existantes et une cellule vide là où les données sont abentes:<?php $sql = "SELECT titre, realisateur, synopsis, annee FROM t_cinema"; $requete = mysql_query($sql); ?> <table> <tr> <th>Titre</th> <th>Réalisateur</th> <th>Synopsis</th> <th>Année</th> </tr> <?php while($ligne = mysql_fetch_assoc($requete)) { ?> <tr> <td><?php echo(!empty($ligne['titre']) ? $ligne['titre'] : " "); ?></td> <td><?php echo(!empty($ligne['realisateur']) ? $ligne['realisateur'] : " "); ?></td> <td><?php echo(!empty($ligne['synopsis']) ? $ligne['synopsis'] : " "); ?></td> <td><?php echo(!empty($ligne['annee']) ? $ligne['annee'] : " "); ?></td> </tr> <?php } ?> </table>
array ("titre"=>"E.T.", "réalisateur"=>"S.Spielberg" , "année"=>""),
par
array ("titre"=>"$titre", "réalisateur"=>"$realisateur" , "année"=>"$annee")<?php
if ($Presentation !=null && trim($Presentation)!="")
{
echo "<tr>
<td style=text-align: justify; vertical-align: top; font-size: 11pt; font-weight: bold; font-family: Arial,sans-serif; color: ff9900;>
Présentation :
</td>
<td style=text-align: justify;>
<span style=font-size: 10pt; font-family: Arial,sans-serif;>
".nl2br ($Presentation)."
</span>
</td>
</tr>";
}
?>
Dans ce cas, il n'y a pas de " " après le HTML (ex. td style="...") mais il n'interprète pas les indications html. Si, en revanche je les remets, il m'affiche ceci:
Est-ce que vous auriez déjà rencontré un problème similaire ou bien auriez-vous une explication à la cause de ce phénomène?Parse error: parse error, expecting `','' or `';'' in c:\program files\easyphp1-8\www\sinbad\user\aff_groupes.php on line 72
<?php
if (trim($Presentation) != "")
{
?>
<tr>
<td style="text-align: justify; vertical-align: top; font-size: 11pt; font-weight: bold; font-family: Arial,sans-serif; color: ff9900;">
Présentation :
</td>
<td style="text-align: justify;">
<span style="font-size: 10pt; font-family: Arial,sans-serif;">
<?php echo nl2br($Presentation); ?>
</span>
</td>
</tr>
<?php
}
?>