Page 1 sur 1

Afficher une seule fois le titre

Posté : 27 janv. 2021, 13:04
par Thomstp
Bonjour à tous,

Je me permets de venir vous embêtez afin d'avoir un petit coup de pouce.

Tout d'abord, j'ai deux tables une service qui contient id, idcat, nomservice et une autre table catégorie contenant idcat, namecat.

J'ai une page (generer.php) qui contient par exemple deux blocs contenant dans chacun le titre d'une catégorie, dans un bloc j'ai des checkboxes avec le titre du service en fonction bien évidemment de la catégorie.

Je voudrai donc afficher dans une autre page (report.php) les services qui ont été cochés.

Ex:

Catégorie Web (qui est le namecat dans la bdd)

html (le service qui a été coché)

php (le service qui a été coché)

css (le service qui a été coché)



Catégorie Print (qui l'autre bloc de catégorie)

impression (le service qui a été coché dans cette catégorie)



Mon problème et que je n'arrives pas lors du rapport, à afficher juste une seule fois le namecat.

Ça me met :

Catégorie Web

html



Catégorie Web

php



Catégorie Web

css



En espérant avoir été assez claire dans mes explications.

Je vous remercie par avance pour vos réponses.

Code : Tout sélectionner

<?php if(isset($_POST['check'])){ // Pour chaque élément récupérer du formulaire foreach ( $_POST['check'] as $check => $val){ //1. Creation de la requette $service1 = $bdd->query("SELECT DISTINCT s.idcat, c.namecat FROM service s, category c WHERE s.idcat = c.idcat AND idservice =".$val); //2. Execution de la requette préparé ci dessus while($s1 = $service1->fetch()){ echo "<div style='color: #000000; font-size: 20px;padding-bottom: 10px;'>Catégorie ".$s1["namecat"]."</div>"; //1. Creation de la requette $service2 = $bdd->query("SELECT * FROM service WHERE idservice =".$val); //2. Execution de la requette préparé ci dessus while($s2 = $service2->fetch()){ echo "<div style='color: #4098ef; padding-bottom: 5px; font-size: 17px;'>".$s2["title"]."</div><div style='font-size: 13px;'>".$s2['description']."</div>"; if ($s2["idimportance"]==1){ echo "<div style='color: red; padding-top: 5px; font-size: 14px;'><i class='fas fa-exclamation-circle'></i> Importance capitale</div>"; }elseif ($s2["idimportance"]==2){ echo "<div style='color: orange; padding-top: 5px; font-size: 14px;'><i class='fas fa-exclamation-circle'></i> Recommandée</div>"; }else{ echo "<div style='color: #4cc26b; padding-top: 5px; font-size: 14px;'><i class='fas fa-exclamation-circle'></i> Optionnelle</div>"; } ?><br><br> <?php } } } }else{ header('Location: generate.php'); } ?>

Re: Afficher une seule fois le titre

Posté : 27 janv. 2021, 13:41
par Ryle
Salutations !

Le problème vient du fait que tu vas chercher et afficher le nom de la catégorie pour chacune des cases qui ont été cochées. S'il y a 3 cases de cochées, tu vas donc chercher la catégorie 3 fois et tu l'affiches 3 fois, même s'il s'agit de la même à chaque fois.

Il faudrait donc idéalement regrouper les éléments par catégorie avant de les afficher. Si c'est déjà le cas parce que tes cases sont déjà regroupées par catégories dans ton formulaire, tu peux créer une variable dans laquelle tu va stocker le nom de la catégorie. Tu vas ainsi pouvoir contrôler le contenu de cette variable et vérifier s'il correspond à une catégorie dont tu as déjà affiché le titre ou pas encore.

En gros, avec un simple if(), tu vas contrôler si la variable est vide ou que son contenu est différent de la catégorie qui est parcourue. Si oui, alors tu affiches ton titre et tu mets à jour la variable avec la catégorie concernée. Si non, le contenu de la variable est identique, c'est que tu as déjà affiché le titre, il est donc inutile de l'afficher à nouveau.

Re: Afficher une seule fois le titre

Posté : 27 janv. 2021, 14:00
par Thomstp
Bonjour Ryle,
Je comprends tout à fait ce que tu me dis, je mets en pratique et te tient au courant.
Merci pour ta réponse.

Re: Afficher une seule fois le titre

Posté : 28 janv. 2021, 13:27
par Thomstp
Bonjour Ryle, sujet résolu merci à toi j'ai bien pris en compte ce que tu m'as dit et j'ai réussi ! Merci beaucoup pour tes explications

Re: [RESOLU] Afficher une seule fois le titre

Posté : 28 janv. 2021, 13:45
par Ryle
Super !

Content que tu ais pu en venir à bout :)