Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2010, 08h03   #1
Invité régulier
 
Inscription : juin 2009
Messages : 57
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 57
Points : 9
Points : 9
Par défaut Resultat sql en ligne

Bonjour,
Après avoir fait une demande sur le forum sql, on m'a conseillé d'effectuer ce travail de cosmétique dans le langage de mon dev.

Je souhaite faire afficher la liste des colonnes en ligne. Voici ma requete :


Et donc je voudrais obtenir quelque chose comme ça :


J'ai passé une après midi sur le problème, mais j'ai du mal a trouver un bon algo.

Le mieux serait-il de faire plusieurs requete sql ou de travailler sur le premier résultat qui est sous la forme d'un ArrayObj?

Merci à vous
colas31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 08h35   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Un truc comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
// recolte les valeurs
while ($row=mysql_fetch_assoc($sql)) {
if (!in_array($row['caracteristique'], $tblCaracteristiques)) {  $tblCaracteristiques[] = $row['caracteristique']; }
 
$tblEquipements[$row['Nom_equipement']][$row['caracteristique']] = $row['valeur'];
}
 
//affiche le resultat
echo '<table>';
foreach ($tblEquipements as $nom => valeurs) {
echo '<tr><td>' . $nom .'</td>';
foreach ($tblCaracteristiques as $caracteristique) {
echo '<td>' . (isset($valeurs[$caracteristique)) ? $valeurs[$caracteristique) : ''  . '</td>';
}
echo '</tr>';
}
echo '</table>';
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 08h49   #3
Invité régulier
 
Inscription : juin 2009
Messages : 57
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 57
Points : 9
Points : 9
Houa merci, je vais regarder ca, et essayer de l'adapter à ma bd et de le comprendre. parce que je suis sur sql server en pdo.
colas31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 10h44   #4
Invité régulier
 
Inscription : juin 2009
Messages : 57
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 57
Points : 9
Points : 9
J'ai fais ca mais je doute que le code ne soit pas très optimisé.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
$iterator =new RecursiveArrayIterator(new ArrayObject($arrayObj));
    /*** traverse the $iterator object ***/
 
 
    while($iterator->valid())
    {
        $iteratorbis = new RecursiveArrayIterator($iterator->current());
 
 
        if ($iterator->key()!=0)
        {
 
             foreach($iteratorbis as $keys=>$values)
            {
                if ($keys == "Caracteristique" AND !in_array($values, $tblCaracteristiques))
                {
                    $caract = $values;
                    $tblCaracteristiques[] = $values;
                }
                if ($keys == 'Type'){
                    $type = $values;
                }
                if ($keys == 'Nom_equipement'){
                    $nom = $values;
                }
                if ($keys == 'Valeur'){
                    $valeur = $values;
                }
 
            }
            $tblEquipements[$type][$nom][$caract] = $valeur;
            $tblTypes[$type][$caract]=$caract;
 
        }
 
        $iterator->next();
    }
 
    /*Parcours de la table de tous les type associé aux caractéristiques*/
    foreach ($tblTypes as $type => $valeur){
        /* Creation d'un table par type*/
        echo"<table class=\"donnees\" border=\"1\" cellspacing=\"1\">";
        echo '<thead><tr><td></td>';
        /*Affichage des caractéristiques sur une ligne*/
        foreach ($valeur as $carac )
            {
              echo "<th>$carac</th>";
            }
        echo "</tr></thead>";
        /* Affichage du nom de l'equipement et des valeurs associé au caractéristique*/
        foreach ($tblEquipements[$type] as $nom => $valeurs)
        {
            echo '<tr><td>';
            echo "$nom</td>";
 
            foreach ($tblTypes[$type] as $cacracteristique)
            {
                if (isset($valeurs[$cacracteristique])){
                      echo '<td>' .  $valeurs[$cacracteristique] .'</td>';
                    }
                    else{
                        echo '<td>&nbsp;</td>';
                }
             }
        }
        echo "</tr>";
 
        echo "</table>";
    }
 
}
colas31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h24.


 
 
 
 
Partenaires

Hébergement Web