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 :

[Tableaux] [Liste déroulante] Plusieurs du même coup


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut [Tableaux] [Liste déroulante] Plusieurs du même coup
    Bonjour a tous
    J'ai une liste déroulante lstA1
    Et une 2e qui est remplis en fonction du choix de la premiere lstR1

    Pas de soucis ca fonctionne bien
    Ce que j'aimerais faire par contre...

    Je peux avoir plusieur fois la lst1...pour une autre utilité
    est ce que pour la remplir je doit faire une requete à chaque fois a ma bd?

    Voici comment je remplis la lstA1

    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
     
     
    <select name="lstA1" onChange="submitAssurance('newDossierSuite.php?cie=1#rev',this.name);">
     <option value="0" selected>Choix Assureur</option>
    <?
     //Remplir les champs des compagnies d'assurance
     $strScript = "Select cieAssuranceID,cieAssuranceNom ";
     $strScript .= "FROM tblcieassurance ";
     $strScript .= "WHERE assureurActif = '1' ";
     $strScript .= "ORDER BY cieAssuranceNom";
     
     $req = $objCon->dbQuery($strScript);
     
     while($lig = mysql_fetch_array($req)){
      if(isset($_GET["cie"])&&($_POST["cieAssurance"] == $lig['cieAssuranceID'])){
       echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
      }
      else if(isset($_GET['manquant'])&&($_POST["cieAssurance"] == $lig['cieAssuranceID'])){
       echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
      }
      else{
       echo"<option value=\"".$lig['cieAssuranceID']."\">".$lig['cieAssuranceNom']."</option>";
      }
     }
    ?>
    </select>
    je place la lstA1 dans une table avec d'autre champs a remplir sur la meme ligne
    Si j'ai une 2e ligne avec les memes champs, mais avec lstA2 comme nom de liste, je peux la remplir d'une autre manière sans utiliser une requete à la bd?

    merci beaucoup
    max
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    avec mysql_data_seek tu peux te replacer au premier enregistrement.

  3. #3
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    vraiment?
    cool alors suffit de garder la variable du query et de ne pas l'effacer...

    A et bien merci beaucoup la je viens d'aller lire je ne connaissais pas
    ca règle une partie de mon probleme en fait

    Le reste est dans un autre post
    j'apprécie ton aide
    bonne journée
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  4. #4
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    heu...

    t'as juste a garder $lig ...

    Si c'est le tableau qui contient toutes les variables de ton menuA...
    Ca t'evitera de faire des requetes inutiles...

    nan?
    n'oubliez pas la balise

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    non il faut que je garde le req c'est ce qui contient la requete
    ca fonctionne le post est résolu...
    faut replacer le pointeur au début pour pouvoir le réutiliser a nouveau

    merci quand meme
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    ouais mais je veux dire que si la requete ne change pas, et son contenu non plus, t'as pas besoin de la refaire...

    T'as juste a sauvegarder le tableau dan lequel tu mets le resultat...

    Apres, j'avoue ne pas avoir tres bien compris si le resultat de ta requete changeait entre 2 listbox ou pas :p
    n'oubliez pas la balise

  7. #7
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    eu non ben en fait je la change pas
    je ne la refait pas

    je garde $req qui contient le résultat du mysql_query($strScript)

    et c'est ce meme $req que je replace le pointeur au premier résultat..avec un mysql_data_seek($req,0)

    Ensuite je remplis a nouveau mes liste dans un while...car faut que j'affiche les options...
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Justement avec mysql_data_seek() tu ne refais pas la requête, tu te replaces dans le jeu d'enregistrements renvoyés par la requête.

    Quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $lig = mysql_fetch_array($req)
    $lig ne contient qu'un seul enregistrement.

  9. #9
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    bin dans ce cas, t'as carrement sauvegarder le $row contenant ta liste...

    Ca t'evitera de faire une requete pour... rien ( mysql_data_seek($req,0) puis mysql_fetch_row apres)
    Ca peut paraitre de rien comme ca...
    Mais c'est mieux d'en faire le moins possible ( puis tu gagne en rapidite :p )

    Ou alors y'a un truc qui m'echappe...
    n'oubliez pas la balise

  10. #10
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    ??
    mis la
    uvoudrais que je garde le row dans une variable php??

    Cé pas une requete a la bd de faire un mysql_data_seek...
    la requete est déjà fait, je ne fais seulement que replacer au début le pointeur de lecture

    OUi p-e qu'il y a quelque chopse que tu saisie mal..

    je te laisse du 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
    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
     
    // Premiere liste donc avec la requete
     
    <td align="center">
     <select name="cieAssurance1" id="_cieAssurance1" onChange="submitAssurance('newDossierSuite.php',this.name);">
      <option value="0" selected>Choix Assureur</option>
     <?
      //Remplir les champs des compagnies d'assurance
      $strScript = "Select cieAssuranceID,cieAssuranceNom ";
      $strScript .= "FROM tblcieassurance ";
      $strScript .= "WHERE assureurActif = '1' ";
      $strScript .= "ORDER BY cieAssuranceNom";
     
      $reqAss = $objCon->dbQuery($strScript);
     
      while($lig = mysql_fetch_array($reqAss)){
       if(isset($_POST['cieAssurance1']) && $_POST['cieAssurance1'] == $lig['cieAssuranceID']){
        echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
       }
       else{
        echo"<option value=\"".$lig['cieAssuranceID']."\">".$lig['cieAssuranceNom']."</option>";
       }
      }
     ?>
     </select>
    </td>
     
     
    (...)
     
    //2e liste
     
    <td align="center">
     <select name="cieAssurance2" id="_cieAssurance2" onChange="submitAssurance('newDossierSuite.php',this.name);">
      <option value="0" selected>Choix Assureur</option>
     <?
      //Remplir les champs des compagnies d'assurance           
      if(mysql_data_seek($reqAss,0)){
     
       while($lig = mysql_fetch_array($reqAss)){
        if(isset($_POST['cieAssurance2']) && $_POST['cieAssurance2'] == $lig['cieAssuranceID']){
         echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
        }
        else{
         echo"<option value=\"".$lig['cieAssuranceID']."\">".$lig['cieAssuranceNom']."</option>";
        }
       }
      }
     ?>
     </select>
    </td>
     
    (...)
    //Ainsi de suite pour les 6 listes avec les meme champs
    C'est pas correct?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  11. #11
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    bin disons, que si j'ai bien compris le mysql_data_seek va te servir a replacer le pointeur pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while($lig = mysql_fetch_array($reqAss))
    {
       if(isset($_POST['cieAssurance1']) && $_POST['cieAssurance1'] == $lig['cieAssuranceID']){
        echo"<option value=\"".$lig['cieAssuranceID']."\" selected>".$lig['cieAssuranceNom']."</option>";
    }
    Or pourquoi refaire ce whilem si tu a $lig ??
    si tu fais un print_r($lig); tu va voir ce qu'il Y'a dans $lig ( a savoir un tableau avec 1id + 1nom de champ associé a une valeur)

    Tu peux faire 95 requetes SQL, tant que t'ecrase pas $lig, t'aura toujours ton tableau...
    Avec toujours les memes valeurs dedans...
    Exactement comme si tu faisait une requete comportenant exactement le meme query...

    Donc je trouve absurde de vouloir essayer de faire un mysql_data_query alors que tu as les valeurs qui se baladent deja qque part :S
    ( si tu remplace $lig par $lig2 dans ta deuxieme liste of course ^^)

    Edit:
    Je peux te faire un bout de code pour te montrer ( en fait je me demande si je suis pas en erreur et si ce que je pense est possible)
    Fait voir un print_r($lig) apres ton while, et envoie STP

    (on peut meme continuer par MP si tu veux)
    n'oubliez pas la balise

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    $lig ne contient qu'un seul enregistement.

    Il est obligé de faire un while parce qu'il ya plusieurs enregistrements.

  13. #13
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par billoum
    $lig ne contient qu'un seul enregistement.

    Il est obligé de faire un while parce qu'il ya plusieurs enregistrements.
    Exactement, j'ai une 10zaine d'enregistrement a placer dans mon select
    donc c'est pour ca que je fait un while...

    Citation Envoyé par riesseg
    Or pourquoi refaire ce whilem si tu a $lig ??
    si tu fais un print_r($lig); tu va voir ce qu'il Y'a dans $lig ( a savoir un tableau avec 1id + 1nom de champ associé a une valeur)
    Et bien car je ne connais pas a l'avance comme j'ai d'enregistrement...et je dois tous les placer dans mon select...

    Et comme je ne connais pas les clé car elle ne se suivent pas nécessairement...faudrait que je valide la longueur de mon tableau $lig et ensuite afficher les résultat dans ma liste??

    Alors je te pose la question, disons que tu as 5 enregistrement de compagnie comme dans mon ex avec le id et le nom
    1 - cieBleu
    3 - cieRouge
    4 - cieVert
    7 - cieJaune
    11 - cieOrange

    tu fais comment pour mettre le tout dans chaque liste en gardant seulement le $lig?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  14. #14
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    De plus $lig est un tablea avec seulement 1 enregstrement... le tableau avec tous les enregistrement ces $reqAss
    le mysql_fetch_array($reqAss) est en fait pour parcourir le tableau $reqAss...pas $lig

    lig me sert comme affichage...

    voilà pourqui on lui atribut la aleur de eour de mysql_fetch_array dans le while...ce n'est pas un == mais plutot un =
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  15. #15
    Membre actif Avatar de riesseg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 415
    Points : 251
    Points
    251
    Par défaut
    Citation Envoyé par billoum
    $lig ne contient qu'un seul enregistement.

    Il est obligé de faire un while parce qu'il ya plusieurs enregistrements.
    vivi, j'ai rien dit de fait ^^
    Me souvenait plus de ca

    Mille excuses.
    n'oubliez pas la balise

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/03/2008, 17h38
  2. [Tableaux] liste déroulante et php
    Par kitty2006 dans le forum Langage
    Réponses: 28
    Dernier message: 24/10/2006, 17h04
  3. Réponses: 3
    Dernier message: 14/08/2006, 21h27
  4. [Tableaux] Liste déroulante
    Par Net dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 15h30
  5. Réponses: 4
    Dernier message: 23/09/2005, 13h29

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