function ta_fonction(var tri , var ec)
{
return '<tr><th>' . TRI . '</th><th>' . EC . '</th></tr>';
}
(n'oublie pas de délimiter par '<table>' ... '</table>)
ce sont des exemple, comme dit précédemment, sans connaitre le code et la structure de ta table c'est délicat de t'aider.
naga
PS : pour plus de mise en forme, tu peux rajouter les caractères : '\n' pour le saut de ligne et '\t' pour la tabulation (il me semble qu'en php et mysql ils sont bien acceptés ... tu t'en rendra vite compte ^^)
jordane45
Messages postés38111Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention28 mars 2024344 16 sept. 2013 à 17:19
Bonjour,
Je ne suis pas sûr que ta solution corresponde à sa demande...(à lui de nous le dire..mais bon..)
D'après ce que j'ai compris (vu la forme de sa Table qu'il nous a donné en exemple), il semble qu'il veuille:
afficher un tableau de deux colonnes qui aura en en-tête:
COS | TAM
Puis sur chaque ligne en dessous la valeur 'EC' correspondant
Pour la colonne COS
ASDER
DERTI
...
Pour la colonne PAM
FOLTI
PIROU
...
Donc je ne vois pas comment un simple CONCAT pourrait faire ceci.. :-(
Pour moi, il vaut mieux faire un GROUP_CONCAT pour récupérer pour chaque TRI ( COS, PAM) les valeurs EC correspondantes, puis les traiter via un Explode.. non ?
nagaD.scar
Messages postés4272Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202317 16 sept. 2013 à 17:29
le group concat sera util dans le cas ou il souhaitera regrouper des lignes de résultats, ce qui ne semble pas être le cas ici vu que justement une ligne représente un enregistrement.
Utiliser le concat lui servira juste à écrire son flux via la requête plutot que par le code (c'est pour ca que j'ai proposé la seconde solution) .
mais je me suis en effet trompé, je n'avais pas calculé que la première info représentais le tire de colonne. Donc je pense que la solution se présentera plutot par le code : un group_concat lui permettra d'avoir tous les COS regroupé avec un séparateur , et un autre résultat avec les tam.
Je me suis trompé car ce qu'il souhaite est ... étrange : comment identifie tu les couple de ton tableau ? c'est à dire que ok COS et TAM son des en-tête, mais comme savoir si ASDER va avec FOLTI ou plutot PIROU ?
je sais pas si je suis super clair dans ma démarche ^^ (mais en gros j'ai l'impression que soit la structure qu'il donne est incomplète, soit elle est inappropriée )
naga
jordane45
Messages postés38111Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention28 mars 2024344 16 sept. 2013 à 17:41
Je pense que la structure est inapropiée.. mais bon,
Avec un Group_Concat il peut récupérer toutes les valeurs EC pour COS et idem pour TAM.
Il obtient donc un array à deux dimensions avec une colonne contenant
COS et TAM
Et dans une deuxième colonne, toutes les valeurs EC appartenant à ces TRI..
COS => ADSER,DERTI,...,...
TAM=> PIROU,FOLRI,...,...
il n'a plus qu'à faire un explode de ces colonnes pour récupérer chaque valeur et les mettre dans son tableau..
select distinct 'TRI' , group_concat('EC') from SaTable
group by 'TRI'
nagaD.scar
Messages postés4272Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202317 16 sept. 2013 à 18:22
je suis d'accord sur le principe mais c'est en mon sens un peu lourd ^^. Quoi qu'il en soit il n'obtiendra surement pas les meilleurs résultats s'il ne revois pas sa structure ;) (ou qu'il en dise plus =p)
jordane45
Messages postés38111Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention28 mars 2024344 16 sept. 2013 à 18:31
Je n'ai jamais dis que j'allais faire un miracle. ..juste proposer une réponse à sa question telle qu'elle est énoncée. . ;-)
Bonsoir,
Après quelques test sj'ai tester en ajoutant un enregistrement POY dans la colonne TRI.
J'obtiens avec group_concat les valeurs suivantes :
COS ASDER,DERTI
POY
TAM FOLTI,PIROU
Mais maintenant comment puis-je afficher le résultat dans un tableau HTML avec la colonne TRI (donc COS, POY et TAM) en entête?
GOOGLE est ton AMI utilise le !!!!!!!!!!
Ta requête te sort un array (un tableau) à deux dimensions..
*Voir : mysqli-result.fetch-array ou équivalent PDO
La première colonne contient tes entêtes (COS, PAM, POY)
La deuxième colonne contient les valeurs (associées à chaque entête)
ASDER,DERTI Pour la ligne correspondant à COS
"" pour POY
FOLTI,PIROU pour TAM
Tu peux reconvertir ces lignes en tableau en utilisant la fonction explode -> Tu auras donc autant de tableaux que de libellés (COS,PAM,POY)
Appuies toi sur les liens que je viens de te donner.
Tu as toutes les infos nécessaires à la réalisation de ton code.
Si tu rencontres des soucis, présentes nous le code que tu as essayé de réaliser, nous verrons si nous pouvons te le corriger
Coucou à tous.
Désolé de pas donner de nouvelle plutôt !
J'ai revu mon organisation pour mieux analyser les résultats.
Ce code me donne le résultat de trois tableaux coller au lieu d'un seul.
jordane45 : Je recherche à faire le plus possible du code industriel et évolutif, cette exemple concerne 5-6 enregistrement, mais en fait il y en a plus d'une centaine.
J'espère ne pas arriver à alourdir mon code en mettant dans une variable une chaine de caractères très, très longue pour ensuite la "sliter". (ce serra mon dernier recourt :) )
J'espère qu'avec mon code vous pourrez mieux m'aider à tous rassembler en un seul tableau HTML.
Je vous laisse regarder :
<?php
try {
$connect = new PDO('mysql:dbname=test;host=127.0.0.1', 'xxxxx', 'xxxxxx');
$sqlTRI = 'SELECT * FROM ttri WHERE 1';
$resultTRI = $connect->prepare($sqlTRI);
$resultTRI->execute();
$arrTRI = $resultTRI->fetchAll(PDO::FETCH_OBJ);
//RESULTAT :
//object(stdClass)[8]
// public 'IDTRI' => string '1' (length=1)
// public 'NOM' => string 'COS' (length=3)
//
//object(stdClass)[9]
// public 'IDTRI' => string '3' (length=1)
// public 'NOM' => string 'POY' (length=3)
//
//object(stdClass)[10]
// public 'IDTRI' => string '2' (length=1)
// public 'NOM' => string 'TAM' (length=3)
$sqlEc = 'SELECT * FROM tec WHERE 1';
$resultEc = $connect->prepare($sqlEc);
$resultEc->execute();
$arrEc = $resultEc->fetchAll(PDO::FETCH_OBJ);
//RESULTAT :
//object(stdClass)[3]
// public 'IDEC' => string '1' (length=1)
// public 'TRI' => string '1' (length=1)
// public 'VALEUR' => string 'ASDER ' (length=6)
//
//object(stdClass)[4]
// public 'IDEC' => string '2' (length=1)
// public 'TRI' => string '1' (length=1)
// public 'VALEUR' => string 'DERTI' (length=5)
//
//object(stdClass)[5]
// public 'IDEC' => string '3' (length=1)
// public 'TRI' => string '2' (length=1)
// public 'VALEUR' => string 'FOLTI' (length=5)
//
//object(stdClass)[6]
// public 'IDEC' => string '4' (length=1)
// public 'TRI' => string '2' (length=1)
// public 'VALEUR' => string 'PIROU' (length=5)
foreach ($arrTRI as $tri) {
echo '<table border="1" style="display:block;float:left;">';
echo '<tr><th>' . $tri->NOM . '</th></tr>';
foreach ($arrEc as $ec) {
if ($tri->IDTRI === $ec->TRI) {
echo '<tr><td>' . $ec->VALEUR . '</td></tr>';
}
}
echo '</table>';
}
} catch (PDOException $e) {
echo 'Connexion échouée : ' . $e->getMessage();
}
?>