non affichage du titre lorsque champ mysql vide

Eléphanteau du PHP | 26 Messages

20 févr. 2012, 17:41

Bonjour, j'ai fais ce bout de code pour ne pas afficher un titre lorsque le champ est vide, mais j'ai un soucis, si je mets les requetes au dessus, il me fais des bugs d'affichages.

Si quelqu'un sait comment remplacer cette commande, ou la faire fonctionner, je suis preneur.

Merci d'avance.

Bonne journée

<table align="center">
<tr><td><center><font size="48px" style="font-family:Vijaya; font-size:100px"><?php if (tep_not_null ($data['nom_pct'])) {echo 'Le porcelet';} ?></font></center></td></tr>
<td><img src="../images/porc.gif" width="400px" /></td>
</tr></table>


<?php
$sql = 'SELECT * FROM porcelet ORDER BY nom_pct ';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

?>  
 
<table width="100%"><tr><td>

<?php 
$req = mysql_query($sql); // exécution de la requête 

// Nota : on pourrait tout aussi bien parcourir les éléments d'un tableau ou les fichiers d'un dossier

while ($data = mysql_fetch_assoc($req)) { // parcours des résultats 
    // début d'une ligne 
?>
   
<table class="bgcolor a" ><tr><td>
<table border="0" width="100%">
	<tr>
		<td width="550px" height="30px"><?php echo htmlentities($data['nom_pct']); ?></td>
		<td width="150px"><?php echo htmlentities($data['prix_pct']).'&nbsp;€ <tr>'; ?></td>
	</tr>
    </table>
<table  width="100%">
	<tr>
		<td width="700px"><?php echo htmlentities($data['comm_pct']); ?></td>
	</tr>
</table>

</td></tr></table>

<table border="0" width="100%" class="bord">
	<tr>
		<td height="1px"></td>
	</tr>
</table>

<?php

}

?>


</table>



Eléphant du PHP | 179 Messages

20 févr. 2012, 18:06

Bonjour,
Pourrais-tu mettre le code de ta fonction tep_not_null($param); ?

Eléphanteau du PHP | 26 Messages

20 févr. 2012, 18:14


<?php
 function tep_not_null($value) {

   if (is_array($value)) {

     if (sizeof($value) > 0) {

       return true;

     } else {

       return false;

     }

   } else {

     if (($value != '') && ($value != 'NULL') && (strlen(trim($value)) > 0)) {

       return true;

     } else {

       return false;

     }

   }

 }
?>


Eléphant du PHP | 179 Messages

20 févr. 2012, 18:25

<table align="center">
<tr><td><center><font size="48px" style="font-family:Vijaya; font-size:100px"><?php if (tep_not_null ($data['nom_pct'])) {echo 'Le porcelet';} ?></font></center></td></tr>
<td><img src="../images/porc.gif" width="400px" /></td>
</tr></table>

Dans ce bout de code, tu fermes deux fois un TR, alors que tu n'en ouvres qu'un seul. Je ne sais pas si ca arrangera tes problèmes d'affichage, mais tu peux commencer par tester ceci :).

ViPHP
xTG
ViPHP | 7331 Messages

20 févr. 2012, 18:31

Si tu veux utiliser les résultats de la requête faut travailler dans la boucle :
<?php
$sql = 'SELECT * FROM porcelet ORDER BY nom_pct ';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$affichage_titre = false; // un drapeau pour détecter l'affichage du titre
?>  
 
<table width="100%"><tr><td>

<?php
$req = mysql_query($sql); // exécution de la requête

// Nota : on pourrait tout aussi bien parcourir les éléments d'un tableau ou les fichiers d'un dossier

while ($data = mysql_fetch_assoc($req)) { // parcours des résultats
    if( $affichage_titre === false ){
?>
<table align="center">
<tr><td><center><font size="48px" style="font-family:Vijaya; font-size:100px"><?php if (tep_not_null ($data['nom_pct'])) {echo 'Le porcelet';} ?></font></center></td></tr>
<td><img src="../images/porc.gif" width="400px" /></td>
</tr></table>
<?php
    $affichage_titre = true;
    }
    // début d'une ligne
?>
   
<table class="bgcolor a" ><tr><td>
<table border="0" width="100%">
        <tr>
                <td width="550px" height="30px"><?php echo htmlentities($data['nom_pct']); ?></td>
                <td width="150px"><?php echo htmlentities($data['prix_pct']).'&nbsp;€ <tr>'; ?></td>
        </tr>
    </table>
<table  width="100%">
        <tr>
                <td width="700px"><?php echo htmlentities($data['comm_pct']); ?></td>
        </tr>
</table>

</td></tr></table>

<table border="0" width="100%" class="bord">
        <tr>
                <td height="1px"></td>
        </tr>
</table>

<?php

}

?>


</table>

Eléphant du PHP | 209 Messages

20 févr. 2012, 18:37

Salut,

Je pense que Thibaud et xTG ont réglé ton problème mais je tenais à te souligner quelques petites choses supplémentaires.

Tu exécutes deux fois la même requête lignes 12 et 19.. Ca te fera une erreur de moins dans le code :D

Je te conseille d'utiliser les adapters fournis par oscommerce plutôt que d'utiliser le mysql_query classique. Ils sont très en retard là-dessus par rapport à leurs concurrents mais ceux pour mysql sont fonctionnels si tu utilises la V3.

++

Eléphanteau du PHP | 26 Messages

23 févr. 2012, 08:50

Bonjour,

Merci beaucoup à Thibaud, xTG et shenryu pour votre aide précieuse. Ca fonctionne nikel.

Bonne journée.

A bientôt pour d'autres problème :wink: