Tableau PHP ligne non répétée

Résolu/Fermé
hardgratte
Messages postés
446
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
19 mai 2022
- Modifié par hardgratte le 28/04/2012 à 20:26
hardgratte
Messages postés
446
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
19 mai 2022
- 29 avril 2012 à 13:21
Bonjour,

Je voudrais faire un tableau de la sorte (difficile a expliquer donc voici un schéma) :

aaaaa zzzzzz eeeeee
--------- rrrrrrrr ttttttttt
--------- ddddd ggggg

C'est à dire que les "aaaa" ne se répètent pas dans toutes les lignes en dessous.
Y a t-il une fonction qui permet de dire : si la ligne du dessus est la même, on ne réécrit pas dans la cellule?

J'espère avoir été compréhensible.

Merci d'avance
^^


4 réponses

Utilisateur anonyme
28 avril 2012 à 20:27
Oui mais difficile de te donner une solution sans savoir comment c'est codé.
0
hardgratte
Messages postés
446
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
19 mai 2022
73
28 avril 2012 à 20:32
C'est codé de la sorte
Je vous donne un exemple de code

----------------------------------------------------------------------
$sql = "SELECT A1.NomMat MATIERE, A2.PrixUnitaire PRIX, A3.NomFour FOURNISSEUR
FROM matiere_premiere A1, stock_fournisseur A2, fournisseur A3
WHERE A1.IDMat=A2.IDMat AND A2.IDFour=A3.IDFour
ORDER BY A1.NomMat ASC, A2.PrixUnitaire ASC";


$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());




echo "Récapitulatif des prix matière pratiqués par les fournisseurs : "."<br />";
echo "<br />";

echo "<table border=\"1\" cellpadding=\"1\">";
echo "<tr>";
echo "<td width=\"150\"align=\"center\" bgcolor=\"#FB0011\">Matière première</td>";
echo "<td width=\"120\"align=\"center\" bgcolor=\"#FB0011\">Prix</td>";
echo "<td width=\"120\"align=\"center\" bgcolor=\"#FB0011\">Fournisseur</td>";

echo "</tr>";
echo "</table>" ;


while ($data = mysql_fetch_array($req))
{
echo "<table border=\"1\" cellpadding=\"1\">";

echo "<tr>";

echo "<td width=\"150\"align=\"center\">".$data['MATIERE']."</td>";
echo "<td width=\"120\"align=\"center\">".$data['PRIX']." €"."</td>";
echo "<td width=\"120\"align=\"center\">".$data['FOURNISSEUR']."</td>";


echo "</tr>";
echo "</table>" ;

}

--------------------------------------------------------------------------------------------------
0
Donc tu souhaites que lorsque le nom de la matière est affiché une fois il ne se raffiche pas pour chaque lignes si j'ai bien compris?

Dans ce cas là il faudrait plutôt faire un for au lieu d'un while. Ou sinon tu continues avec ton while mais tu dois utiliser une variable en tant que compteur par exemple :
$i = 0 (initialisation avant ton while).
$i++ (dernière instruction de ton while).

Dans ta boucle for, il faudrait que tu fasse un if du genre :
si le compteur == 0 (si ton compteur commence à 0) {
t'affiche la ligne qui contient la matière
} sinon si (la matière de la ligne actuelle <> la matière de la ligne précédente) {
t'affiche la ligne qui contient la matière
} else t'affiche un <td></td> vide.
et là t'affiches la ligne du prix et du fournisseur.

En gros, tu fais un if qui affiche obligatoirement le premier élément qui passe dans la boucle (sinon ca posera problème avec le 2ème if car il essayera de comparer le premier élément avec son précédent qui n'existe pas). Si ce n'est pas le premier élément alors tu regardes si la matière de l'élément courant est différent de l'élément précédant. Si c'est le cas, t'affiches la matière, si ce n'est pas le cas, t'affiches un <td></td> vide.
0
hardgratte
Messages postés
446
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
19 mai 2022
73
29 avril 2012 à 13:21
Merci j'ai essayer de bidouiller dans ce sens la et ça marche.
0