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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 46
    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 : 46
    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 : 46
    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.

+ 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, 02h50
  2. creer champ avec valeur constante dans resultat de requete
    Par freejeje dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/05/2005, 10h52
  3. Resultats de requetes vides et pourtant !!
    Par ahage4x4 dans le forum ASP
    Réponses: 2
    Dernier message: 19/05/2005, 15h30
  4. [C#] Affichage resultat de requete dans 2 Labels
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 20h07
  5. resultat de requete jointe
    Par jjn1er dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/09/2003, 10h50

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