8792 sujets

Développement web côté serveur, CMS

bonjour à tous,

Voici une petite question :
J'ai une page qui va récupérer les données dans ma BDD à certaines conditions.
Je place les résultats dans un tableau.
Je voudrais que lorsqu'il n'y a pas de résultats, il ne m'affiche pas ce tableau.

Voici mon code :

<?php
$abstract=$_GET['page']; //tu récup dans une variable "nom" l'info que tu as passé grâce à l'url
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Stéphane Gueulette</title>

<link href="../../style_general.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style1 {
	font-size: 18;
	font-weight: bold;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<table width="600"  border="0" align="center">
  <tr>
    <td><div align="center"><img src="../../site/images/abstract.jpg" width="150" height="52" /></div></td>
  </tr>
  <tr>
    <td>
	<?php do { ?>
	<table width="580" height="250"  border="0" align="center" background="../../site/images/cadre3.jpg">
			 
             <tr >
               <td height="21" colspan="3" class="texte2">
			   
			   <?php
mysql_connect("********", "********", "********");
mysql_select_db("***********");
$query_clients = "SELECT * FROM voscreations WHERE `categorie` ='$page' AND valeur ='true' ";
$clients = mysql_query($query_clients) or die(mysql_error());
$row_clients = mysql_fetch_assoc($clients);
$totalRows_clients = mysql_num_rows($clients);
if ($totalRows_clients == 0) {
        echo 'Aucun résultat retourné.';
}
else {
        // Récupération des résultats et affichage
}
mysql_fetch_assoc($clients);

		$nom = $row_clients['nom'];
		$lienfichier = $row_clients['lienfichier'];
		$auteur = $row_clients['auteur'];
        $emailauteur = $row_clients['emailauteur'];
		
				
?>
			   </td>
             </tr>
             <tr >
            <td class="texte2"><div align="center"><span class="style1"><?php echo $row_clients['nom']; ?></span></div></td>
            <td colspan="2" class="texte2"><span class="texte2">Cr&eacute;&eacute; par <?php echo $row_clients['auteur']; ?></span></td>
          </tr>
          <tr>
            <td width="34%" align="center" valign="top" class="texte2">
			<?	echo "<img width='150' border='1' src=".$row_clients['lienfichier'].">";	?>
            <div align="center"></div>
            <div align="center"><br />
                <span class="texte1">
                <?
			echo "<a href=".$row_clients['lienfichier']." target=\'_blank'>Voir en grand</a>&nbsp;";
			?>
              </span></div></td>
            <td width="53%" valign="top" class="texte1"><span class="texte1"><?php echo $row_clients['emailauteur']; ?></span>  		    </td>
            <td width="13%" valign="top" class="texte1">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="3" class="texte2">
			</td>
          </tr>
          <tr>
            <td height="21" colspan="3" class="texte2">&nbsp;</td>
          </tr>
		   
      </table>
	<?php } while ($row_clients = mysql_fetch_assoc($clients)); ?>
	</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td class="textecontact">&nbsp;</td>
  </tr>
</table>
</body>
</html>
Bonjour,

Tu as un test :

if ($totalRows_clients == 0) {
echo 'Aucun résultat retourné.';
}
else {
// Récupération des résultats et affichage
}


C'est ce test qui conditionnera l'affichage du tableau, donc :

if ($totalRows_clients == 0) {
$tableau = 'Aucun résultat retourné.';
}
else {
// Récupération des résultats et affichage
$tableau = "<table... et ce qu'il faut pour commencer le tableau...<tbody><tr><td>";
Requête
$tableau .= $premier_résultat_de_requête. "</td><td>" .$second_résultat_de_requête. "</td></tr><td><tr>";
Seconde requête
$tableau .= etc etc .... puis cloture du tableau.
}


Tout cela peut trouver sa place en haut de la page, même au dessus du header.

Et ensuite, là où il faut dans la page :

echo $tableau 
Super!!! Smiley biggrin

Ca marche à merveille!!!
Un tout grand merci à toi, JCM
Et merci aussi à tous les membres actifs qui aident sans cesse les débutants comme moi!!!
Oups désolé, J'ai parlé un petit peu vite.
Ca fonctionne presque parfaitement :

Enfait, j'ai bien 5 résultats qui s'affichent mais le problème c'est que c'est 5 fois la 1ère entrée de la BDD.... Smiley sweatdrop Smiley bawling

Alors je vous remet le code pour la seconde fois (code corrigé grace à JCM)


<?php
$website=$_GET['page']; //tu récup dans une variable "nom" l'info que tu as passé grâce à l'url
?>
<?php
mysql_connect("*****", "****", "*****");
mysql_select_db("*****");
$query_clients = "SELECT * FROM mescreations WHERE `categorie` ='$page'";
$clients = mysql_query($query_clients) or die(mysql_error());
$row_clients = mysql_fetch_assoc($clients);
$totalRows_clients = mysql_num_rows($clients);
if ($totalRows_clients == 0) {
$tableau = '<div align=center><span class=texte1>Pas encore de créations dans cette galerie.</span></div>';
}
else {
// Récupération des résultats et affichage
$tableau = "<table width='580' height='250'  border='0' align='center' background='../../site/images/cadre3.jpg'>
  <tr ><td height='21' class='texte2'></td><td colspan='2' class='texte2'></td></tr><tr >
            <td class='texte2'><div align='center'><span class='style1'>";
			
$query_clients = "SELECT * FROM mescreations WHERE `categorie` ='$page'";
$clients = mysql_query($query_clients) or die(mysql_error());
$row_clients = mysql_fetch_assoc($clients);
$totalRows_clients = mysql_num_rows($clients);
mysql_fetch_assoc($clients);

		$nom = $row_clients['nom'];
		$photo = $row_clients['photo'];
        $description = $row_clients['description'];
		$liensite = $row_clients['liensite'];
		
$tableau .= $nom."</span></div></td><td colspan='2' class='texte2'></td></tr>
          <tr>
            <td width='34%' align='center' valign='top' class='texte2'>
<img width='150' border='1' src=".$photo."><div align='center'></div><div align='center'><br /><span class='texte1'>
<a href=".$liensite." target=\'_blank'>Visiter le site</a></span></div></td>
<td width='53%' valign='top' class='texte1'><span class='texte1'>".$description."</span></td>
            <td width='13%' valign='top' class='texte1'></td></tr><tr>
            <td colspan='3' class='texte2'></td></tr><tr>
            <td height='21' colspan='3' class='texte2'></td></tr>
		   </table>";

}
				
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Stéphane Gueulette</title>

<link href="../style_general.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style1 {
	font-size: 18;
	font-weight: bold;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<?php do { ?>
<table width="600"  border="0" align="center">
    <tr>
    <td><? echo $tableau ?></td>
	  </tr>
</table>
<?php } while ($row_clients = mysql_fetch_assoc($clients)); ?>
</body>
</html>
<?php
mysql_free_result($clients);
?>


Un grand merci d'avance.
Stéphane.
Oui, xzibit0007, il faut que ta seconde requête (qui fournit les données) soit une boucle qui devra tenir compte du nombre de résultats présents dans la base de données.

Ce qui signifie que tu auras :


for ( $i = 0; $i < count($totalRows_clients); $i++ ) {

Requête[$i], puis inclusion du résultat dans le tableau :

$tableau .= $resultat[$i]. "</td> (ou ce qu'il faut pour continuer le tableau);

                                                                     }

Puis cloture du tableau hors de la boucle :

$tableau .= "</td></tr></tbody></table>";


Et tu peux appliquer cette méthode à n'importe quel contenu, aux menus ...
Smiley confused Désolé mais là, j'ai un peu de mal à comprendre.... Smiley sweatdrop

Tu saurais me montrer avec le second code que j'ai poster, où placer ce que tu viens de mettre STP ? Smiley confused

Un tout grand merci pour l'aide que tu m'apporte!!!
Oui, bon, je n'ai pas pris un bon exemple de boucle avec "for", il te faut plutôt un "while" comme sur le code que tu verras ICI

Que tu devras modifier dans cette voie :

while($data = mysql_fetch_assoc($clients))
    {
    // on affiche les informations de l'enregistrement en cours
    $tableau .= '<balises de tableau>'.$data['nom de data'].' '.$data['autre nom de data'].'</balises de tableau>';

    }


Cela dit je ne vais plus me plonger dans les questions de "fetch" ceci ou cela puisque j'utilise un système de classes qui me libère totalement des questions de syntaxe MySql, donc je t'explique le principe mais sans plonger trop loin dans ton script.

Au passage merci à Felipe qui vient de donner une suite de liens parmi lesquels j'ai trouvé en 2 clics celui que je te donne plus haut !

Tu trouveras ces liens ICI