salut,
il faudrait faire un select * table1, table2, mais c'est scabreux.
ce que je vois là ressemble à un problème de modélisation de la base. Il ne faut pas une table par champ mais une table avec les champs et une avec les vérifications qui auras deux clef étrangère vers la table des utilisateurs et celle des champs (et une date).
cela va te simplifier la vie grandement.
exemple de MCD
mcd_brunoForum.png
ce qui donne le code SQL suivant
https://gist.github.com/anonymous/4ca16 ... 086d125825
avec cela la requête pour avoir les informations sur tout les champs est simple
select champ_lib, user_name, date_verification from Champs_verifie
join Users using(user_id)
join Champs using(champ_id)
ensuite pour l'affichage horizontale comme tu le souhaite il faut traiter une peu le résultat de la requête pour avoir un tableau contenant les données avec en index les libellés.
par exemple
<?php
$libelle = ['champ1','champ2' ...];
$data = [ 'champ1' => [['user_name'=> 'pierre','date_verification'=> '12/12/2016'] ] ,
'champ2' => [ ['user_name'=> 'pierre','date_verification'=> '12/12/2016'],['user_name'=> 'paul','date_verification'=> '12/11/2016'] ]];
il te faut aussi toute les dates de vérification dans un tableau (avec mon exemple de table : select distinct date_verification from champ_verifie )
<?php
$libelle = ['champ1','champ2'];
$data = [ 'champ1' => [['user_name'=> 'pierre','date_verification'=> '12/12/2016'] ] ,
'champ2' => [['user_name'=> 'pierre','date_verification'=> '12/12/2016'],['user_name'=> 'paul','date_verification'=> '12/11/2016']]];
$data = [];
// les dates sont dans $dates
echo '<table><thead><tr><th>date</th><th>';
echo implode($libelle,'</th><th>');
echo '</tr></thead><tbody>';
foreach($dates as $d) {
echo '<tr><td>',$d,'</td>';
foreach($libelle as $l) {
if(!empty($data[$l])){
$current = getData($data[$l],$d);
echo '<td>';
if(!empty($current)){
echo $current;
}
echo '</td>';
}
}
echo '</tr>';
}
echo '</tbody></table>';
function getData ($data,$date){
foreach ($data as $value) {
if($value['date_verification'] == date){
return $value['user_name'];
}
}
return null;
}
C'est à tester, mais le principe est la. Ceci ne fonctionne que si un champ n'est vérifiable que par une seule personne (ma structure sql permet plusieurs vérificateurs).
Dans tous les cas il faut trouver les données correspondant à chaque case. évite une requête SQL pour chaque case cela va vite être anti-performant.
ps or mis l'union est la jointure (ou from pulti table) il n'y a pas trop de solution SQL. Après il faut passer par une UDF (fonction utilisateur sur le SGBD) qui va retourner un curseau avec un jeux de résultat que tu auras en forme pour avoir ce que tu veux.
@+