PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 09-10-2016 21:47:04

didhuche
Membre
Inscription : 09-10-2016
Messages : 1

Difficulté dans l'affichage d'un tableau

Bonsoir,

Je bute depuis plusieurs jours sur un problème de présentation sous forme d'un tableau. En gros, je récupère des données d’un formulaire que les gens complètent pour identifier des risques dans un lieu. Pour chaque danger identifié, il faut saisir une précision puis une proposition pour éviter le danger.
Je dois ensuite présenter ces données sous forme d’un tableau de synthèse. Voici comment s’organisent ces données dans ma table  :

danger1 - danger2 - danger3 - danger1_Precision - danger1_Proposition - danger2_Precision - danger2_Proposition - danger3_Precision - danger3_Proposition

Dans le tableau de synthèse, je souhaiterais que tous les dangers soient regroupés ainsi que les précisions et les propositions mais ils ne le sont pas... En fait, les dangers ne sont pas regroupés dans une seule cellule, il me crée une nouvelle ligne de tableau à chaque enregistrement dans la table.

Si quelqu'un a une idée...

Je vous remercie par avance pour votre aide.
Didhuche



Voici mon code (je débute !) :

fiche_test.php


<?php
require_once ('connexion.php');
?>
 
<?php
//Déclaration de toutes les variables
$table = "risques" ;
 
$danger1_libelle = "Danger n°1" ;
$danger2_libelle = "Danger n°2" ;
$danger3_libelle = "Danger n°3" ;
$aucun = "Aucun danger" ;
$lieu = "lieu1" ;
 
// Définition de la largeur des 3 colonnes des tableaux
$largeur_colonne1 = "170px";
$largeur_colonne2 = "415px";
$largeur_colonne3 = "415px";
?>
 
<!-- ------------------------------------- -->
 
<?php
 
// On compte chaque enregistrements de "1" dans chaque colonne pour savoir si on affiche le tableau ou pas...
 
$requete = "SELECT COUNT(danger1) AS nb_danger1 FROM $table WHERE lieu ='$lieu' AND danger1 = '1'  ";
$resultat = mysql_query($requete)  or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());
$columns = mysql_fetch_array($resultat);
$danger1 = $columns['danger1'];
 
$requete = "SELECT COUNT(danger2) AS nb_danger2 FROM $table WHERE lieu ='$lieu' AND danger2 = '1'  ";
$resultat = mysql_query($requete)  or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());
$columns = mysql_fetch_array($resultat);
$danger2 = $columns['danger2'];
 
$requete = "SELECT COUNT(danger3) AS danger3 FROM $table WHERE lieu ='$lieu' AND danger3 = '1'  ";
$resultat = mysql_query($requete)  or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());
$columns = mysql_fetch_array($resultat);
$danger3 = $columns['danger3'];
 
if (($danger1>0) or($danger2>0) or ($danger3>0))
{
include ("tableau_risque.php");
}
else
{
echo "";
}
 
mysql_close();
?>
 

Puis l'affichage de mon tableau de synthèse tableau_risque.php :


<?php
 
// Tableau risque
 
$requete = ("SELECT * FROM $table WHERE lieu ='$lieu' AND aucun !='1'");
$resultat = mysql_query($requete)  or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());
 
echo "<table cellpadding='5' border='1' width'auto'>";
 
// Les colonnes de titres
echo "
<tr align='center'>
<td width=$largeur_colonne1>Dangers identifiés</td>
<td width=$largeur_colonne2>Précisions</td>
<td width=$largeur_colonne3>Propositions</td>
</tr>\n"
;
 
while ($row = mysql_fetch_array($resultat))
{
$danger1=($row[danger1]);
if ($danger1=="0") {$danger1="";} else {$danger1=$danger1_libelle."<br>";}
 
$danger2=($row[danger2]);
if ($danger2=="0") {$danger2="";} else {$danger2=$danger2_libelle."<br>";}
 
$danger3=($row[danger3]);
if ($danger3=="0") {$danger3="";} else {$danger3=$danger3_libelle."<br>";}
 
 
 
$danger1_Precision=($row[danger1_Precision]);
if ($danger1_Precision!="") {$danger1_Precision=$danger1_Precision."<br>";}
$danger1_Proposition=($row[danger1_Proposition]);
if ($danger1_Proposition!="") {$danger1_Proposition=$danger1_Proposition."<br>";}
 
$danger2_Precision=($row[danger2_Precision]);
if ($danger2_Precision!="") {$danger2_Precision=$danger2_Precision."<br>";}
$danger2_Proposition=($row[danger2_Proposition]);
if ($danger2_Proposition!="") {$danger2_Proposition=$danger2_Proposition."<br>";}
 
$danger3_Precision=($row[danger3_Precision]);
if ($danger3_Precision!="") {$danger3_Precision=$danger3_Precision."<br>";}
$danger3_Proposition=($row[danger3_Proposition]);
if ($danger3_Proposition!="") {$danger3_Proposition=$danger3_Proposition."<br>";}
 
echo "
<tr>
<td>
$danger1
$danger2
$danger3
</td>
 
<td style='color:red;'>
$danger1_Precision
$danger2_Precision
$danger3_Precision
</td>
 
<td>
$danger1_Proposition
$danger2_Proposition
$danger3_Proposition
</td>
"
;
echo "</tr>";
}
echo "</table><br><br>";
 
?>
 

Voici ce qui s'affiche avec ce code :
Affichage actuel

Voici ce que je voudrais :
Affichage voulu

Hors ligne

#2 17-10-2016 08:57:45

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : Difficulté dans l'affichage d'un tableau

Bonjour,

Houlà, j'ai mal au crane d'un coup, entre danger1, Danger1, Danger n°1, on s'y perd un peu hmm

A vue de nez, je dirai que je ne vois que deux choix pour résoudre ce soucis convenablement :

a) regrouper les précisions / propositions dans un seul champs a chaque fois (le champs precision contient alors toutes les precisions du danger n° x, le champs proposition toutes les propositions du danger n° x, etc...). C'est simple, ça ne nécessite pas plusieurs tables, mais c'est un peu moche (il faut mettre les <br> en base de données, ça mélange présentation et données, il est complexe de gérer les modifications, la correspondance précision / proposition si nécessaire).

b) créer d'autres tables pour avoir un modèle de bdd qui tiens la route. Une table dangers, une table precisions, une table propositions, et des champs dans les tables precisions et propositions qui les relient à la table dangers. Au besoin d'autres liaison, un champs pour l'ordre, bref, un vrai modèle quoi smile

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

Pied de page des forums