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 :

Listes liées


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut Listes liées
    Bonjour à tous,

    J'ai deux tables (qualite_pole et qualite_processus).
    Dans la table qualite_pole, j'ai 3 champs: id_pole (Key),pole(une lettre), nompole (titre du pôle).
    Dans la table qualite_processus, j'ai plus de champs mais les principaux sont :
    id_proc( Key), id_pole (qui relie ma table qualite_pole), lettre_proc (sur 2 lettres) et nom_proc.

    Les 2 tables sont en pièces jointes.

    Mon code est le suivant:
    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
     
    <td>Processus :      
          <select name="id_processus" id="id_processus"<?php if ($attention AND empty($id_processus)) {echo " style=\"background-color:#FF0000\"";}?> onChange="proc()">
            <option value="" <?php if (empty($id_processus)) {echo "selected"; } ?>>A compl&eacute;ter ...</option>
            <?php
    				$sqlprocessus = "SELECT * FROM qualite_pole";
    				$resultatprocessus = mysql_query ($sqlprocessus, $connexion);
    				while ($tabprocessus = mysql_fetch_array($resultatprocessus, MYSQL_ASSOC)) {
    					echo "<option value=\"{$tabprocessus[nompole]}\"";
    					if ($id_processus==$tabprocessus[nompole]) {echo " selected";}
    					echo ">{$tabprocessus[nompole]}</option>";
    				}
    				?>
          </select>
    	  <select name="processus" id="processus" onChange="document.form1.description.value=this.value" style="display:none">
              <option selected>Précisez le pôle concerné ...</option>
              <?php $sql = "SELECT * FROM qualite_processus,qualite_pole WHERE qualite_processus.id_pole =qualite_pole.id_pole"; 
    			$resultat = mysql_query ($sql, $connexion);
    			while ($tabpole = mysql_fetch_array($resultat, MYSQL_ASSOC)) {?>
    		  <option value="<?php echo "$tabpole[lettre_proc] - $tabpole[nom_proc]"; ?>"><?php echo "$tabpole[lettre_proc] - $tabpole[nom_proc]"; ?></option>
              <?php } ?>
              <option value="Autre ">Autre</option>
            </select>
    </td>
    Ce que je souhaite, c'est que lorsque je choisis mon pole dans le 1er champ(situation administrative, conseils et information, etc.), que ca me filtre le 2eme champ.
    Exemple, si je choisis le pole A, situation administrative, ca met les deux processus A1 et A2, si c'est le pole B, ce sera B1, B2, etc.

    Je pensais que cette requete était bonne mais il semblerait que non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM qualite_processus,qualite_pole WHERE qualite_processus.id_pole =qualite_pole.id_pole
    Quelqu'un pourrait-il m'aider, car je tourne en rond depuis un moment dessus.

    D'avance merci !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    salut,
    a mon avis, ce que tu cherches est plus tourne vers le JS.
    ou sinon, en php, cela implique de recharger la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(1er formulaire non soumit)
    {
    //ton 1er formulaire pour determiner le pole
    }
    else
    {
    //ton 2eme formulaire avec une requete sql generee en fonction du pole recupere du 1er formulaire
    }
    pour eviter ce genre de contraintes, tu peux charger un 2eme formulaire sans avoir a cliquer ni recharger la page, mais c'est du coter du javascript
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Ca sera en PHP.
    Mais que veux-tu dire par recharger la page ? F5 ?

  4. #4
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    non je voulais dire
    <FORM>
    ton 1er formulaire
    </FORM>
    => le user choisi son pole puis valide le 1er formulaire...
    => ce meme 1er formulaire te redirige sur la meme page mais cette fois ci charge le 2eme formulaire
    <FORM>
    ton 2eme formulaire en fonction des donnees recuperees du 1er formulaire
    </FORM>

    je sais pas si je me suis bien exprime >_<

    edit :
    quelque chose comme ca :
    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
    <?php
    if(isset($_POST["bt_form1"]))//si on a clique sur le bonton submit du 1er formulaire
    {//on affiche le 2eme formulaire
    //c'est la que tu genere ta requete sql en fonction du pole choisi dans le 1er form
    ?>
    <FORM method="POST" action="une_autre_page.php">
    2eme partie du formulaire :<br />
    vous avez deja rempli votre nom : <?php echo $_POST["nom"]; ?><br />
    autre info : <INPUT type="text" name="test" value="" /><br />
    <INPUT type="submit" name="bt_form2" value="Valider" />
    </FORM>
    <?php
    }//fin 2eme formulaire
    else//sinon, c'est qu'on arrive sur cette page pour la 1ere fois
    {//on affiche le 1er formulaire
    ?>
    <FORM method="POST" action="cette_page.php"><!-- le nom de cette page -->
    1ere partie du formulaire :<br />
    votre nom : <INPUT type="text" name="nom" value="" /><br />
    <INPUT type="submit" name="bt_form1" value="Valider" />
    </FORM>
    <?php
    }//fin 1er formulaire
     
    ?>
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Salut,

    Bon donc, en définitive, ca m'a l'air plus compliqué que prévu.

    Mais ce que je ne comprends pas c'est pour quelle raison ma requête ne fonctionne pas. Les champs de mes tables sont bons, je les ai vérifiés via des requetes simples alors pourquoi il ne veut pas faire cette relation.

    SELECT * FROM qualite_processus,qualite_pole WHERE qualite_processus.id_pole =qualite_pole.id_pole

  6. #6
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    je t'avous que je ne sais pas (la requete a l'air correcte)
    t'as essaye de l'executer directement sur mysql ?
    ou alors le probleme vient d'ailleur
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  7. #7
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Alors j'ai testé ma requete directement dans MySQL, elle fonctionne et m'affiche tous mes poles, ce qui est normal.

    J'ai changé la requete en :
    SELECT DISTINCT lettre_proc, nom_proc FROM qualite_processus, qualite_pole WHERE qualite_processus.id_pole = 2

    Et la ca marche.

    Sauf que bien sur dans ma page php je ne veux pas mettre le 2 mais l'id du pole récupéré dans ce formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <select name="id_processus" id="id_processus"<?php if ($attention AND empty($id_processus)) {echo " style=\"background-color:#FF0000\"";}?> onChange="proc()">
            <option value="" <?php if (empty($id_processus)) {echo "selected"; } ?>>A compl&eacute;ter ...</option>
            <?php
    				$sqlprocessus = "SELECT * FROM qualite_pole";
    				$resultatprocessus = mysql_query ($sqlprocessus, $connexion);
    				while ($tabprocessus = mysql_fetch_array($resultatprocessus, MYSQL_ASSOC)) {
    					echo "<option value=\"{$tabprocessus[nompole]}\"";
    					if ($id_processus==$tabprocessus[nompole]) {echo " selected";}
    					echo ">{$tabprocessus[nompole]}</option>";
    				}
    				?>
          </select>
    Alors j'ai testé un code du genre :
    SELECT DISTINCT lettre_proc, nom_proc FROM qualite_processus2, qualite_pole WHERE qualite_processus2.id_pole = $id_processus

    mais ca m'affiche rien...

  8. #8
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    et en ajoutant des quotes simples ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT DISTINCT lettre_proc, nom_proc FROM qualite_processus2, qualite_pole WHERE qualite_processus2.id_pole = '".$id_processus."' ";
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  9. #9
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Ca ne marche pas non, ca me met uniquement "Autres".

    Du coup j'ai testé une autre facon de faire...
    Pour rappel, ma table qualite_processus contient les champs suivants (je ne les mets pas tous)
    id_proc (KEY)
    id_pole (INT)
    lettre_proc (sur 2 caractères, ex A1, B2 etc.)
    nom_proc

    Ma table qualite_pole:
    id_pole (KEY)
    pole (1 caractère A, B, etc.)
    nompole

    Je me dis que du coup je pourrais essayer une requete du genre
    SELECT DISTINCT lettre_proc, nom_proc FROM qualite_processus2, qualite_pole WHERE "qualite_processus.lettre_proc commence par qualite_pole.pole"

    (en gros me chercher les lettres_proc de la table qualite_processus qui commenceraient par la meme lettre que le pole de la table qualite_pole).

  10. #10
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    J'ai testé tout selon mes propres connaissances mais là je crois que je suis tombé sur un os. Personne n'aurait une idée pour m'aiguiller ?

  11. #11
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Eh bien je vois que mon post a du succès lol.

    Mon patron m'a expliqué qu'on pouvait récupérer les données de la première requete en utilisant une table temporaire.
    Et je me suis renseigné sur Internet et j'ai vu qu'il existait une fonction MySQL qui s'appelle CREATE TEMPORARY TABLE.

    Le souci c'est que je ne vois pas comment cela fonctionne, est ce que quelqu'un parmi vous a déjà eu ca ?

    D'avance merci pour votre aide.

Discussions similaires

  1. Pb listes liées javascript/php
    Par boo64 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2006, 12h35
  2. Deux listes lies et un lien
    Par arti2004 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2006, 16h44
  3. [MySQL] 1 table et 2 listes liées
    Par Ekik dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/02/2006, 16h47
  4. XMLHTTPRequest et listes liées
    Par ben23 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/12/2005, 16h32
  5. Problème avec listes liées entre elles et bouton "précé
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2005, 15h10

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