Page 1 sur 1

Récupération de données

Posté : 09 févr. 2009, 18:49
par Dipsy
Bonjour à tous.

Bon je débute en php et je galère sur un truc qui va vous sembler super simple, je pense.

Voilà, j'ai une base donnée qui contient 3 champs (id, titre et texte)
Ce que je souhaite réaliser, c'est un bloc qui n'existe que s'il y a des entrées dans ces tables.
Jusque là ça va. Mais où cela se complique, c'est que je voudrais utiliser une div avec un titre.

ce que je veux obtenir :

Code : Tout sélectionner

<div id"conteneur"> <h3>Titre du bloc</h3> <h4>Titre de la première entrée</h4> <p>Texte de la première entrée</p> <h4>Titre de la deuxième entrée</h4> <p>Texte de la deuxième entrée</p> ... </div>
or pour l'instant, j'obtiens ceci :

Code : Tout sélectionner

<div id"conteneur"> <h3>Titre du bloc</h3> <h4>Titre de la première entrée</h4> <p>Texte de la première entrée</p> </div> <div id"conteneur"> <h3>Titre du bloc</h3> <h4>Titre de la deuxième entrée</h4> <p>Texte de la deuxième entrée</p> </div>
Si quelqu'un peut me donner un coup de pouce.
Voilà mon code
<?php
{
require_once('config.php');
$requetebd = mysql_query("SELECT * from promo") or die ($errormessage);
while($data = mysql_fetch_array($requetebd))

      if (($requetebd != '') && (strtolower($requetebd) != 'null') && (strlen(trim($requetebd)) > 0))
      {
		echo"<div id=\"conteneur\">"; 
		echo"<h3>Titre du bloc</h3>";
			
			if (($requetebd != '') && (strtolower($requetebd) != 'null') && (strlen(trim($requetebd)) > 0))
		      {
				echo"<h4>$data[titre]</h4>"; 
				echo"<p>$data[texte]</p></br>"; 
		      }
		      else
		      {
		      }
			echo"</div>"; 		      
      }
      else
      {
      }
} 
?>

Posté : 09 févr. 2009, 22:23
par rolusseum
Ben sort ça de ton while.
 echo"<div id=\"conteneur\">"; 
 echo"<h3>Titre du bloc</h3>"; 

Posté : 10 févr. 2009, 10:26
par Dipsy
Rolusseum, merci de ta réponse mais ça ne solutionne pas mon pb.
Même s'il n'y a pas d'entrée dans mes tables, je me retrouve toujours avec ma div "conteneur" et mon titre de bloc visible sur le site. Or, je souhaite que ce pavé disparaisse s'il n'y pas d'entrée. C'est vraiment à ce niveau que le pb se situe, sinon le reste ça va.

Donc, je souhaiterai savoir s'il existe une fonction pour tester si la table contient des données,
si oui, elle execute un echo""
si non, elle ne fait rien

Merci quand même

-----------------
Bon voici la solution
<?php
{
require_once('config.php');
$Resultat = mysql_query("SELECT * from table");
$num_rows = mysql_num_rows($Resultat);

if ($num_rows > 0) {
			echo"<div id=\"conteneur\">"; 
			echo"<h3>Titre de la box</h3>"; 
	}
else {}
} 
?>

<?php
{
$requetebd = mysql_query("SELECT * from table") or die ($errormessage);
while($data = mysql_fetch_array($requetebd))

      if (($requetebd != '') && (strtolower($requetebd) != 'null') && (strlen(trim($requetebd)) > 0))
      {
			echo"<h4>$data[titre]</h4>"; 
			echo"<p>$data[texte]</p></br>"; 
      }
      else
      {
      }
} 
?>
<?php
{
$Resultat = mysql_query("SELECT * from table");
$num_rows = mysql_num_rows($Resultat);

if ($num_rows > 0) {
			echo"</div>"; 
	}
else {}
} 
?>

Posté : 10 févr. 2009, 16:35
par rolusseum
Ben met une condition
$requetebd = mysql_query("SELECT * from table") or die ($errormessage);
$affected_rowsExist = mysql_num_rows($requetebd);
//si un enregistrement existe
if($affected_rowsExist!=null){
   echo"<div id=\"conteneur\">"; 
   echo"<h3>Titre de la box</h3>";  
}

Posté : 10 févr. 2009, 17:13
par mere-teresa
Pourquoi ne pas mettre une clause WHERE à ta requête SQL. De cette manière, tu ne ramèneras que des entrées.

A moins que j'ai mal compris la question.

Posté : 11 févr. 2009, 12:37
par Dipsy
Merci pour vos réponses à tous les 2,

J'avais également trouvé la réponse, posté dans mon second message.
La solution était bien le if couplé à mysql_num_rows.

Posté : 11 févr. 2009, 18:11
par mere-teresa
Modération :
Dipsy, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.