HTML CSS MYSQL PHP

Résolu
deep_sea Messages postés 215 Statut Membre -  
deep_sea Messages postés 215 Statut Membre -
bonjour ,
j'ai envie d'afficher dans un tableau pour chaque employé les équipements qui lui sont affecté
exemple
Employé xx
-PC
-Dique dure
-Imprimante
Employé yy
-Fax
-Scanner
-Ordinateur de bureau

mon problème les équipements s'affichent mais a chaque fois le nom de employé se répète au nombre des équipements qui sont affecté
exemple :
xx
-PC
xx
-Disque dure
xx
-Imprimante

donc ma question ou le problème au niveau des css ou bien HTML ou bien l'affichage

      <table class="table table-hover" id="task-table" border=1>
            <thead>
   
                               <tr style="" >
                                  <th Style="font-family:Times; font-style: italic; font-size: 15px;text-align:center">Désignation </th>                               
                                  <th Style="font-family:Times; font-style: italic; font-size: 15px;text-align:center">Quantité</th>
                                  <th Style="font-family:Times; font-style: italic; font-size: 15px;text-align:center">Code équipement</th>
                                </tr>
       
        
               </thead>
            <tbody>
<?php
$requete="SELECT `equipement`.`code_equip`,`quantite`,`equipement`.`designation_sous_categorie`,`designation_marque`, `Nom_emp`,`Prenom_emp`,`serie` FROM `sous_categorie` INNER JOIN `equipement` INNER JOIN `equip_affect_emp` INNER JOIN `employé` ON `sous_categorie`.`designation_sous_categorie`=`equipement`.`designation_sous_categorie` AND `equipement`.`code_equip`=`equip_affect_emp`.`code_equip` AND `equip_affect_emp`.`Id_emp`=`employé`.`Id_emp` WHERE `sous_categorie`.`id_categorie`=3 order by `Nom_emp`";
  $resultat = $conn->query($requete) or die ('Erreur '.$requete.' '.$conn->error);
 while($row = mysqli_fetch_assoc($resultat))
 {
  echo '
                 <tr> <td colspan=12 style="background-color: #808080">'.$row['Nom_emp'].' '.$row['Prenom_emp'].' </td></tr>
    
      <td>'.$row['designation_sous_categorie'].'   '.$row['designation_marque'].'   '.$row['serie'].'    </td>
       <td>'.$row['quantite'].' </td>
       <td>'.$row['code_equip'].' </td>';
 }
 ?>
            </tbody>
                         </table>


1 réponse

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Une première solution serait d'utiliser un IF pour vérifier si le nom précédent correspond au nom actuel. Si tel est le cas... ne pas le réafficher.

    Une autre solution est de reconstruire un array un peu mieux ordonné
    par exemple :
    $requete="SELECT `equipement`.`code_equip`,`quantite`,
                     `equipement`.`designation_sous_categorie`,
                     `designation_marque`, 
                     `Nom_emp`,
                     `Prenom_emp`,
                     `serie` 
              FROM `sous_categorie` INNER JOIN `equipement` 
              INNER JOIN `equip_affect_emp` 
              INNER JOIN `employé` ON `sous_categorie`.`designation_sous_categorie`=`equipement`.`designation_sous_categorie` 
                AND `equipement`.`code_equip`=`equip_affect_emp`.`code_equip` 
                AND `equip_affect_emp`.`Id_emp`=`employé`.`Id_emp` 
              WHERE `sous_categorie`.`id_categorie`=3 
              ORDER BY `Nom_emp`";
    if(!$resultat = $conn->query($requete)){ 
      die ('Erreur '.$requete.' '.$conn->error);
    }
    
    //On commence par recréer un Array contenant les informations mieux ordonnées...
    $aUserMat = array();
     while($row = mysqli_fetch_assoc($resultat))
     {
        $aUserMat[$row['Nom_emp'].' '.$row['Prenom_emp']] = array('designation_sous_categorie'=>$row['designation_sous_categorie'], 
                                                                'designation_marque'=>$row['designation_marque'], 
                                                                'serie'=>$row['serie'],
                                                                'quantite'=>$row['quantite']
                                                                'code_equip'=>$row['code_equip']);
      }
     
     //on utilise cet array pour générer l'affichage
     foreach($aUserMat as $User=>$aMat){
       echo '<tr> 
               <td colspan="12" style="background-color: #808080">'.$User.' </td>
            </tr>';
        foreach($aMat as $mat){
           echo '<tr> 
                   <td>'.$mat['designation_sous_categorie'].'   '.$mat['designation_marque'].'   '.$mat['serie'].'    </td>
                   <td>'.$mat['quantite'].' </td>
                   <td>'.$mat['code_equip'].' </td>
                 </tr>';
        }
     }
    
    


    Au passage, je t'invite vivement à lire ceci :
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    .

    0
    1. deep_sea Messages postés 215 Statut Membre 1
       
      Merci car le nom s'affiche une fois , mais pleins d'érreur
      Warning: Illegal string offset 'designation_sous_categorie' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\bst_gestion\BST\liste_inforrmatique.php on line 84
      
      Warning: Illegal string offset 'designation_marque' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\bst_gestion\BST\liste_inforrmatique.php on line 84
      
      Warning: Illegal string offset 'serie' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\bst_gestion\BST\liste_inforrmatique.php on line 84
      
      Warning: Illegal string offset 'quantite' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\bst_gestion\BST\liste_inforrmatique.php on line 85
      
      Warning: Illegal string offset 'code_equip' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\bst_gestion\BST\liste_inforrmatique.php on line 86
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Petite erreur
        $aUserMat[$row['Nom_emp'].' '.$row['Prenom_emp']][] = array('designation_sous_categorie'=>$row['designation_sous_categorie'], 
                                                                  'designation_marque'=>$row['designation_marque'], 
                                                                  'serie'=>$row['serie'],
                                                                  'quantite'=>$row['quantite']
                                                                  'code_equip'=>$row['code_equip']);
        
      
      0
    3. deep_sea Messages postés 215 Statut Membre 1
       
      Merci infiniment
      0
    4. deep_sea Messages postés 215 Statut Membre 1
       
      oui mon souci est résolu merci
      c'est fait
      0