Page 1 sur 1
enregistrements rgroupé sous un titre
Posté : 01 oct. 2008, 16:25
par pascalbm
Bonjour,
jai une table avec 4 champs dont un "type" qui se rtrouve dans plusieurs enregistrement. j'aimerai éviter de répéter le titre et de l'afficher qu'une seul fois pour les enregistrements du meme type.
En plus j'aimerai éviter les tableaux et donc utiliser que le css et php.
Voici un exemple n html :
Code : Tout sélectionner
<table width="32%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Cuisine</td>
<td> </td>
</tr>
<tr>
<td>Gazinière</td>
<td>100</td>
</tr>
<tr>
<td>Frigo</td>
<td>400</td>
</tr>
<tr>
<td>micro ondes</td>
<td>200</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Salon</td>
<td> </td>
</tr>
<tr>
<td>Canapé</td>
<td>300</td>
</tr>
<tr>
<td>fauteuil</td>
<td>75</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Chambres</td>
<td> </td>
</tr>
<tr>
<td>lits</td>
<td>200</td>
</tr>
<tr>
<td>armoire</td>
<td>150</td>
</tr>
</table>
Est ce que quelqu'un pourrait m'indiquer comment faire s'il vous plait car j'ai cherché sur les mais pas trouvé
Meci d'avance
Posté : 01 oct. 2008, 16:36
par guilt92
C'est pas rès clair tout ca, mais bon peut etre que le mot DISTINCT dans ta requete sql te permettra de faire ce que tu veux.
En effet si tu fais
tu n'auras qu'une fois chaque type...
Apres pour utiliser les css bah tu fais par exemple un <div class="titre"> pour chaque titre et tu personnalise la classe .titre dans le fichier css...
Posté : 01 oct. 2008, 16:40
par AB
Une autre solution
Tu enregistres le premier titre dans une variable, et si les titres suivants correspondent à cette variable, tu ne les affiche pas...
Posté : 01 oct. 2008, 16:48
par pascalbm
Merci pour ses réponses rapide.
Pour un complément d'info, voici d'abord le code que j'utilise actuellment :
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
$titre = '';
$i = 0 ;
do
{
?>
<tr onmouseout="this.style.backgroundColor = ''" onmouseover="this.style.backgroundColor = '#0066FF'" bgcolor="<?php echo (((++$AltColors1) % 2) == 0) ? "#77A8ED" : "#1B4792"; ?>">
<td><?php echo $row_tarif_act['type']; ?></td>
<td><?php echo $row_tarif_act['intitule']; ?></td>
<td><?php echo $row_tarif_act['tarif']; ?> €</td>
</tr>
<?php
$i++;
}
while ($row_tarif_act = mysql_fetch_assoc($tarif_act));
?>
</table>
Et ce que je voudrai, 'est mettre le type, qui est identique pour plusieurs enregistrement, en titre avec un regroupement des enregistrement correspondant en dessous.
Désolé, j'espere avoir été un peu plus clair
merci
Posté : 01 oct. 2008, 17:06
par AB
Ma solution est adaptée dans ton cas.
Essaies de la mettre en application ce n'est pas compliqué
Ensuite si ça ne marche pas montres-nous ce que tu as essayé.
EDIT pour être plus précis dans nos réponses, il faudrait que tu nous montre ta requête.
Posté : 01 oct. 2008, 18:03
par pascalbm
J'ai progressé mais c'est pas encore ça. Le regroupement ne s'effecue pas.
Voici le modifs effectué :
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<?php
$titre = '';
$i = 0 ;
do
{
?>
<?php
if ($titre != $row_tarif_act['id_activite'])
{
if($i != 0)
echo '</ td></ tr>';
echo '<tr><td colspan="2">';
$titre = $row_tarif_act['id_activite'];
$i = 0;
echo $row_tarif_act['type'];
} ?>
<tr onmouseout="this.style.backgroundColor = ''" onmouseover="this.style.backgroundColor = '#0066FF'" bgcolor="<?php echo (((++$AltColors1) % 2) == 0) ? "#1B4792" : "#77A8ED"; ?>">
<td><?php echo $row_tarif_act['intitule']; ?></td>
<td><?php echo $row_tarif_act['tarif']; ?> €</td>
</tr>
<?php
$i++;
}
while ($row_tarif_act = mysql_fetch_assoc($tarif_act));
?>
</table>
Meric pour ton aide
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 01 oct. 2008, 20:56
par AB
Ton code est certainement mal interprété par exemple if($i != 0) ... si tu veux plusieurs exécutions dans cette condition il faut utiliser des accolades if($i != 0) {...;}
Ensuite il faudrait que tu nous montre ta requête. Le conseil que je t'ai donné précédemment n'est pas adapté dans tous les cas.
Posté : 02 oct. 2008, 17:02
par pascalbm
bonjour,
voci la requete :
<?php
mysql_select_db($database_base, $base);
$query_tarif_act = "SELECT * FROM tarif_activite ORDER BY type ASC";
$tarif_act = mysql_query($query_tarif_act, $base) or die(mysql_error());
$row_tarif_act = mysql_fetch_assoc($tarif_act);
$totalRows_tarif_act = mysql_num_rows($tarif_act);
?>
Meric
Posté : 02 oct. 2008, 21:57
par AB
Oui je m'en doutais un peu...
Ce serait plus classique et aussi plus facile à programmer si tu faisais une deuxième table avec les différents types.
Ensuite il te resterait à lire cette table de type avec une petite jointure vers la table "tarif_actualité". Eventuellement tu pourrais créer un type "divers" pour les éléments non typés.
Sinon ça va te faire un gros traitement php derrière... et ça sera assez compliqué à gérer.