IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Affichage requête SQL dans tableau


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut Affichage requête SQL dans tableau
    Bonjour,
    j'ai un petit souçi avec l'affichage d'une requête dans un tableau.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $header = false;
    if (is_array($result)) {
    	echo '<table style="border-collapse: collapse">';
    	foreach($result as $row) {
    		if (!$header) {
    			echo '<tr bgcolor=#f4e7ca>';
    			$keys = array_keys($row);
    			foreach($keys as $col) {
    			if ($col != 'couleur' ) {
    				echo '<td style="border: solid 1px #DDDDDD; font-weight: bold; text-align: center; padding: 3px">' . $col . '</td>';
    				}
    			}
    			echo '</tr>';
    			$header = true;
    		}
    		echo '<tr>';
    		foreach($row as $value) {
    			echo '<td style="border: solid 1px #DDDDDD; padding: 3px; white-space: nowrap">' . $value . '</td>';
    		}
    		echo '</tr>';
    	}
    	echo '</table>';
    }
    et mon problème est à ce niveau là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($row as $value) {
    	echo '<td style="border: solid 1px #DDDDDD; padding: 3px; white-space: nowrap">' . $value . '</td>';
    }
    J'aimerai avant d'afficher les "$value", savoir sur quel champ je me trouve...
    En fait, je veux afficher tous les champs sauf le champ 'couleur', mais je ne peux pas le supprimer de la requête car j'en ai besoin pour l'affichage de mon tableau.
    J'ai bien essayé de faire quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($row as $value) {
    if ((strpos($value,'#')) === false) {
    echo '<td style="border: solid 1px #DDDDDD; padding: 3px; white-space: nowrap">' . $value . '</td>';
    }
    }
    pour contrôler si le champ en cours est un code couleur ou non, et si non alors j'affiche la valeur. Mais ce n'est pas très propre, et rien ne garantie qu'il n'y aura pas de # dans les autres champs...

    Merci beaucoup

  2. #2
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Si tu es sur que ta couleur est au format "#FFFFFF" tu peux utiliser une regex, cela réduit les autres champs a n'être qu'une couleur, ce qui est plutot rare.

    Sinon, tu peux compter sur ta première requête à quel place est la couleur (un i++ dans ton foreach, et tu stocke dans la variable "position" la valeur du i quand ça passe pas dans ton if.
    Ce qui te permet dans ton 2ème foreach de tester si le i est égal à la position, alors tu n'affiche rien

    Deux solutions qui me sont venu à l'esprit, peut être pas les meilleurs mais bon...

  3. #3
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Salut Simdu80,
    merci de ta réponse.

    Je connais effectivement la position du champ couleur (c'est le 1er champ de ma requête), mais je ne vois pas trop comment tester la position...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $keys = array_keys($row);
    foreach($row as $value) {
    	if ($keys != 'couleur') {
    	echo '<td style="border: solid 1px #DDDDDD; padding: 3px; white-space: nowrap">' . $value . '</td>';
    	}
    }
    ne marche pas (bien evidement )

    (et il faudrait effectivement que je parte sur une solution comme celle-ci, plutôt que les RegEx, car j'ai également les champs 'prenom' et 'nom' dans ma requête, et je voudrais les concaténer dans une seule colonne. il faut donc que je trouve comment savoir que la valeur 'en cours' correspond à tel ou tel champ...)

  4. #4
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $header = false;
    if (is_array($result)) {
            $i = 0;
    	echo '<table style="border-collapse: collapse">';
    	foreach($result as $row) {
    		if (!$header) {
    			echo '<tr bgcolor=#f4e7ca>';
    			$keys = array_keys($row);
    			foreach($keys as $col) {
    			if ($col != 'couleur' ) {
    				echo '<td style="border: solid 1px #DDDDDD; font-weight: bold; text-align: center; padding: 3px">' . $col . '</td>';
    				}
                            else{
                                     $position_couleur= $i;
    			}
                            $i++;
    			echo '</tr>';
    			$header = true;
    		}
                    $i = 0;
    		echo '<tr>';
    		foreach($row as $value) {
                            if($i != $position_couleur) {
    			         echo '<td style="border: solid 1px #DDDDDD; padding: 3px; white-space: nowrap">' . $value . '</td>';
                            }
                            $i++;
    		}
    		echo '</tr>';
    	}
    	echo '</table>';
    }
    Essaie un truc dans le genre (Désolé si y'a des erreurs, sans colorisation syntaxique et connaissance du projet, je suis un peu une daube :p)

  5. #5
    Membre habitué Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Points : 180
    Points
    180
    Par défaut
    Oui, je me suis rendu compte que c'était vers ce genre de code qu'il fallait partir (j'ai modifié le code de mon message précédent dans ce genre d'ailleurs)

    Donc j'ai trouvé ce qu'il me fallait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $keys = array_keys($row);
    $i = 0 ;
    foreach($row as $value) {
    	echo 'KEY='.$keys[$i].'<br />';
    	if ($keys[$i] != 'couleur') {
    	echo '<td style="border: solid 1px #DDDDDD; padding: 3px; white-space: nowrap">' . $value . '</td>';
    	}
    $i++;
    }
    echo '</tr>';
    J'ai un peu adapté ton code parce que je dois ensuite contrôler les champs nom et prenom pour la concaténation.

    Je te remercie vraiment pour le coup de pouce

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage requête SQL dans un tableau
    Par roxise dans le forum Débuter
    Réponses: 2
    Dernier message: 01/12/2013, 09h39
  2. Résultat requête SQL dans tableau
    Par hauser11 dans le forum C#
    Réponses: 0
    Dernier message: 16/05/2013, 16h25
  3. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 14h26
  4. [MySQL] probleme affichage requete sql dans tableau
    Par johan0510 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/04/2010, 21h14
  5. [SQL-Server] Pb affichage requete sql dans tableau manque 1 ligne
    Par danny3107 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/12/2009, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo