J'ai deux tableaux pour afficher les services quotidiens de chaque employé inscrit. L'un des tableaux contient les services de jour en cours pour chacun, l'autre contient les services hebdomadaires de chacun et dans ce tableau chaque jour, il y a toujours plus d'un enregistrement à afficher, et c'est mon problème.

Le premier tableau fonctionne parfaitement, je récupère les données en utilisant GROUP CONCACT et grouper par nom d'employé, réparties aux heures correctes et les afficher sans problème. Dans le deuxième tableau, la solution semble devoir être différente, car je dois regrouper les données en fonction du nom de chaque employé et en même temps regrouper les données chaque jour de la semaine.

Voici mon code pour la première table:

$result_usuario = "SELECT
    events.date AS semana,
    employees.id_employee AS idemp,
    employees.nome AS nome,

    GROUP_CONCAT(employees.nome
        ORDER BY events.date, employees.nome, period) AS nome,
    GROUP_CONCAT(customers.nome
        ORDER BY events.date, employees.nome, period) AS nome2,
        GROUP_CONCAT(customers.id_customer
        ORDER BY events.date, employees.nome, period) AS id,
        GROUP_CONCAT(customers.adress
        ORDER BY events.date, employees.nome, period) AS address,
        GROUP_CONCAT(customers.phone
        ORDER BY events.date, employees.nome, period) AS phone,
        GROUP_CONCAT(events.id_event
        ORDER BY events.date, employees.nome, period) AS idevent,
        GROUP_CONCAT(events.price
        ORDER BY events.date, employees.nome, period) AS price,
        GROUP_CONCAT(events.frequence
        ORDER BY events.date, employees.nome, period) AS freq,
        GROUP_CONCAT(events.period
        ORDER BY events.date, employees.nome, period) AS period,
        GROUP_CONCAT(events.date
        ORDER BY events.date, employees.nome, period) AS dia
FROM
    events
        INNER JOIN
    employees ON employees.id_employee = events.id_employee
        INNER JOIN
    customers ON customers.id_customer = events.id_customer
    WHERE WEEK(events.date)=WEEK(NOW()) and employees.id_employee=events.id_employee
GROUP BY semana
ORDER BY semana, nome ASC"

$resultado_dados = mysqli_query($link, $result_dados);

if(($resultado_dados) AND ($resultado_dados->num_rows != 0)){
?>
<div class="logo">
    <img src="../assets/img/Logo.png" alt = "logojjl" style="padding-bottom:8px;"><br>
    <a class="btn btn-primary btn-sm"  name="print" href="#" type="button">Week</a>
</div>
<p class="card-category" style="padding-left: 13px; padding-top: 8px;">Date: <?php echo date("m/d/y") ?></p>

<table class="table table-sm table-hover">
    <thead>
       <tr>
          <th>Employee</th>
          <th>Customer</th>
          <th>Customer</th>
          <th>Customer</th>
       </tr>
    </thead>
    <tbody>
        <?php
           while($row_usuario = mysqli_fetch_assoc($resultado_dados)){
              $id = explode(',', $row_usuario['id']);
              $cust = explode(',', $row_usuario['nome2']);
              $phone = explode(',', $row_usuario['phone']);
              $address = explode(',', $row_usuario['address']);
              $idev = explode(',', $row_usuario['idevent']);
              $price = explode(',', $row_usuario['price']);
              $freq = explode(',', $row_usuario['freq']);
              $date = explode(',', $row_usuario['dia']);
              $period = explode(',', $row_usuario['period']);

         ?>


        <tr>
            <td><?php echo $row_usuario["nome"]; ?></th>

            <?php 
            for($i=0; $i < count($cust); $i++ ) { 
            ?>        
            <td><a type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#visu" value="<?php echo $id[$i]; ?>"><?php echo $cust[$i]; ?></a>


            </td>

Le code ci-dessus fait exactement ce dont j'ai besoin pour la vue quotidienne, mais je ne trouve pas de réponse basée sur ce code pour la vue hebdomadaire. J'ai essayé de faire quelques changements, mais les résultats sont toujours contraires à ce que je veux. Le premier tableau est plus facile car le contenu affiché est tout sur la même ligne et je peux fractionner les enregistrements sans problème, le problème avec le deuxième tableau est que chaque jour de la semaine il y a plus d'un enregistrement à afficher et chaque enregistrement doit être lié au bon employé.

Quelqu'un peut-il m'aider à trouver une solution basée sur ce code où je peux regrouper les enregistrements de chaque employé, et en même temps ces enregistrements regroupés par jour de la semaine? J'ai besoin de quelque chose qui considère la possibilité d'aucun enregistrement à un certain jour de la semaine, auquel cas l'espace table serait vide, cela doit également être pris en compte.

0
Wilson Neto 5 nov. 2019 à 01:09

1 réponse

utilisation

WEEK(events.date) AS semana 

dans votre code Select.

Cela vous donnerait le numéro de semaine à grouper et le commander

La fonction a une option pour sélectionner le premier jour de la semaine.

0
nbk 4 nov. 2019 à 22:43