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

PHP & Base de données Discussion :

resultats de requete imbriqués


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Par défaut resultats de requete imbriqués
    Bonjour,

    j'y connais pas grand chose en PHP et je souhaite remplir un select pour chaque éléments comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	while ($res_eq = $r_eq->fetch_array()) {
    		echo '<li>'.$res_eq['Name'];
     
    		echo '&emsp;<SELECT name="infra" size="1">';
    		while ($res_infra = $r_infra->fetch_array()) {
    			echo '<option>'.$res_infra['Name'].'</option>';
    		}
    		echo '</SELECT>';
    	}
    	$r_eq->close();
    la première liste déroulante est bien remplie, par contre toutes les suivantes sont vide.
    comment faire pour que chaque liste déroulante possède les même éléments ?

    Merci

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Salut,

    Tu codes est clairement incomplet...

    On peut voir qu'il y a un soucis mais avec un code incomplet, il est impossible de dire à quel niveau...

    Toujours est-il qu'actuellement, tous tes <select> on le même attribut name.
    Donc si tu soumets ton formulaire, tu vas avoir un problème : seule la valeur du dernier <select> sera retournée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Par défaut
    en fait, je me répond, car j'ai résolu le soucis


    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
     
    	$r_eq = getEqByType($simplyDB, $_POST['resource']);
     
    	while ($res_eq = $r_eq->fetch_array()) {
    		echo '<li>'.$res_eq['Name'];
     
    		$r_infra = getAssetByType($simplyDB,INFRA);
    		echo '&emsp;<SELECT name="infra" size="1">';
    		while ($res_infra = $r_infra->fetch_array()) {
    			echo '<option>'.$res_infra['Name'].'</option>';
    		}
    		echo '</SELECT>';
    		$r_infra->close();
    	}
    	$r_eq->close();
    il fallait faire la requête de remplissage du select a chaque itération du while.
    je trouve pas ca optimal mais ca marche ...

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    HA ! La requête, je pensais que tu l'avais effacée, tout comme la 1ère qui n'était pas présente ^^

    A voir s'il faut vraiment le faire à chaque fois.
    C'est étrange d'avoir INFRA (qui est une constante) pour la définition d'une requête.

    En tout cas, si c'est tout le temps la même chose, c'est qu'il n'y a clairement pas besoin de l'exécuter à chaque boucle mais une seule fois AVANT les boucles.

    Toujours est-il que ton problème d'attribut name n'est toujours pas réglé donc, quoi qu'il arrive, ton formulaire ne te retournera pas ce que tu espères.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Par défaut
    INFRA est un test, ça viendra d'une autre requête mais pour le moment, c'est un UUID .... la constante est plus facile a manipuler

    la requête était effacée a la fin de la boucle principale, mais ça marchait pas :/
    avant, je faisais comme ça :
    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
     
     
    	$r_eq = getEqByType($simplyDB, "valeur_de_recherche");
    	$r_infra = getAssetByType($simplyDB,"myType");
     
    	while ($res_eq = $r_eq->fetch_array()) {
    		echo '<li>'.$res_eq['Name'];
     
    		echo '&emsp;<SELECT name="infra" size="1">';
    		while ($res_infra = $r_infra->fetch_array()) {
    			echo '<option>'.$res_infra['Name'].'</option>';
    		}
    		echo '</SELECT>';
    	}
    	$r_infra->close();
    	$r_eq->close();
    Par contre, je ne comprends le soucis avec le name.
    J'ai modifié le code pour le rendre plus lisible.

  6. #6
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    Afin de ne pas effectuer plusieurs fois la requête, tu peux faire ta requête en dehors du while, et mettre les résultats dans une variable tableau à part. Tu pourras utiliser cette variable dans ton while sans avoir à refaire la requête.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- -Rpass-

    2- par contre... La balise <li> n'est jamais fermée...

  8. #8
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    2- par contre... La balise <li> n'est jamais fermée...
    Ce n'est pas obligatoire avec HTML5, de plus en plus de sites pour économiser la bande passante s'affranchissent de la fermeture d'un bon nombre de tags.
    D'ailleurs il existe deux écoles à ce sujet :

    Et comme souvent, c'est Google qui l'emporte...

    Le problème c'est les parseurs de code HTML comme DOMDocument qui se trouvent à la peine dans bon nombre de situations

    Un autre lien par ici

  9. #9
    Invité
    Invité(e)
    Par défaut
    @rawsrc
    Oui, je sais ça.
    Mais à mon avis, il n'a pas fait exprès !

    • Sinon, autant lui dire de supprimer aussi le </option> ! (en omettant au passage de dire qu'il est préférable de mettre un attribue value)
    • Et pourquoi pas tout écrire en majuscules, comme le <SELECT> ?

    On peut aussi se passer de dire "Bonjour / Bonsoir / Merci"...

    Perso, je préfère les bonnes habitudes, le respect des conventions et les codes bien formés.


    N.B. Ils viennent de passer une loi pour les trottinettes électriques :
    Le port du casque est "recommandé" mais pas obligatoire ......
    ...... Jusqu'au jour où tu te fais renverser ......

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    On peut aussi se passer de dire "Bonjour / Bonsoir Merci"...
    T'as vu c'est exactement ce que j'ai fait, grands esprits rencontre tout ça

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 115
    Par défaut
    comme précisé plus haut, c’était une découverte du langage ...

    Bien noté pour les balises qui ne se ferment pas, corrigé. Pareil pour les mots clé en majuscules.
    mes 2 "select" ont des "name" différents et j'ai rajouté des "value" pour chaque "option".

    Par contre, je suis obligé de l’exécuter a chaque passage dans le "while" car le résultat est vide au deuxième passage.
    Mais bon, comme je ne recherche pas les performances ... (ie. ça marche, et c'est plus proche du test que du proto...)

    du coup, pas de merci pour votre aide

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

Discussions similaires

  1. [debutant]Est-ce possible un tel resultat de requete???
    Par kenzo080 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/07/2005, 03h50
  2. creer champ avec valeur constante dans resultat de requete
    Par freejeje dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/05/2005, 11h52
  3. Resultats de requetes vides et pourtant !!
    Par ahage4x4 dans le forum ASP
    Réponses: 2
    Dernier message: 19/05/2005, 16h30
  4. [C#] Affichage resultat de requete dans 2 Labels
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 21h07
  5. resultat de requete jointe
    Par jjn1er dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/09/2003, 11h50

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