Récupération de données

Eléphanteau du PHP | 16 Messages

09 févr. 2009, 18:49

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
      {
      }
} 
?>
Modifié en dernier par Dipsy le 10 févr. 2009, 10:21, modifié 2 fois.

Eléphant du PHP | 139 Messages

09 févr. 2009, 22:23

Ben sort ça de ton while.
 echo"<div id=\"conteneur\">"; 
 echo"<h3>Titre du bloc</h3>"; 

Eléphanteau du PHP | 16 Messages

10 févr. 2009, 10:26

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 {}
} 
?>

Eléphant du PHP | 139 Messages

10 févr. 2009, 16:35

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>";  
}

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

10 févr. 2009, 17:13

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.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 16 Messages

11 févr. 2009, 12:37

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

11 févr. 2009, 18:11

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.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.