Sujet : liste liés

bonjour à toutes et tous.

Voilà sur le soucis que j'ai avec deux liste lié avec jquery , c'est de faire passé la deuxième des valeurs  dans mon formulaire d'ajout d'annonce immobilier.

J'ai un champs province qui est drop_1 celui la pas de soucis le second tier_two. c'est lui qui me pose un gros soucis je n'arrive pas à le faire passer.

voilà les script jquery  puis ma func.php pour les liste liées et enfin le html


    $(document).ready(function() {
    $('#wait_1').hide();
    $('#drop_1').change(function(){
      $('#wait_1').show();
      $('#result_1').hide();
      $.get("func.php", {
        func: "drop_1",
        drop_var: $('#drop_1').val()
      }, function(response){
        $('#result_1').fadeOut();
        setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
      });
        return false;
    });
});

function finishAjax(id, response) {
  $('#wait_1').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
}

le php

<?php
//**************************************
//     Page load dropdown results     //
//**************************************
function getTierOne()
{
    $result = mysql_query("SELECT DISTINCT tier_one FROM two_drops") 
    or die(mysql_error());

      while($tier = mysql_fetch_array( $result )) 
  
        {
           echo '<option value="'.$tier['tier_one'].'">'.$tier['tier_one'].'</option>';
        }

}

//**************************************
//     First selection results     //
//**************************************
if($_GET['func'] == "drop_1" && isset($_GET['func'])) { 
   drop_1($_GET['drop_var']); 
}

function drop_1($drop_var)
{  
    include_once('db.php');
    $result = mysql_query("SELECT * FROM two_drops WHERE tier_one='$drop_var'") 
    or die(mysql_error());
    
    echo '<select name="tier_two" id="tier_two">
          <option value=" " disabled="disabled" selected="selected">Choose one</option>';

           while($drop_2 = mysql_fetch_array( $result )) 
            {
              echo '<option value="'.$drop_2['tier_two'].'">'.$drop_2['tier_two'].'</option>';
            }
    
    echo '</select> ';
}
?>

une partie de mon formulaire avec la méthode POST

          <tr>
            <td><b>Province :</b></td>
            <td><select class="select" name="drop_1" id="drop_1">    
             <option value="" selected="selected" disabled="disabled">Select a Category</option>
             <?php getTierOne(); ?>
             </select>
            </td>
            <td><b>Ville :</b></td>
            <td><span id="wait_1" style="display: none;">
                <img alt="Please Wait" src="cssstyle/imdesign/ajax-loader.gif"/>
                </span>
                <span id="result_1" style="display: none;"></span>
            </td>
          </tr>
          <tr>

Re : liste liés

Salut, je ne suis pas sur d'avoir bien compris le problème.
Peux tu détailler un peu plus ?

Quand tu dis

c'est lui qui me pose un gros soucis je n'arrive pas à le faire passer

, qu'entends tu par "faire passer", où, sur quel évenement, de quel objet...

Ca nous permettra probablement de t'aider smile

Re : liste liés

bonsoir,

j'ai un formulaire d'ajout d'annonce avec deux liste joint avec jquery , j'arrive a faire passe drop_1 sans mon formulaire d'insertion en appelant la func.php qui gère les deux listes déroulante mes cette valeur ne passe pas dans l'insertion $drop_2['tier_two'].

En gros

Re : liste liés

Bonjour , toujours a la recherche de ma solution  le jquery fait passé la variable ville mais pas sa valeur par rapport à drop_1 dont la variable passe et sa valeur dans mon formulaire d'insertion .

Toujours personne pour une solution svp

Re : liste liés

Honnêtement, ton problème est hyper difficile a comprendre tant il est mal décrit smile
Je vois bien que tu fait des efforts pour expliquer le truc, mais au final plus tu donnes de détails, plus le problème devient nébuleux (pour moi en tout cas).

Bon toujours est-il que je vais essayer de te trouver une solution par rapport a ce que j'ai compris (je t'explique ce que j'ai compris et ensuite je te donne ma solution par rapport à ça):

Donc tu as une liste dont l'id est drop_1, quand tu change la valeur de cette liste, tu veux faire un appel ajax, qui en fonction de la valeur sélectionnée dans drop_1, te crée une liste tiers_two qui sera affichée dans ta div result_1, jusque là je pense ne pas m’être trompé ( a toi de me dire).

Ensuite, dans ta nouvelle liste tiers_two, tu veux que quand ta valeur change, tu puisse refaire un appel ajax en passant la valeur sélectionnée de cette liste ?

Si c'est bien ça, tu peux rajouter ce bout de code dans ton JS

    $('#tiers_two').live('change',function(){
      $('#wait_1').show();
      $('#result_1').hide();
      $.get("func.php", {
        func: "drop_1", // Modifie ici avec le nom de la fonction php que tu veux
        drop_var: $('#tiers_two').val()
      }, function(response){
        $('#result_1').fadeOut();
        setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400); // Ici n'oublie pas de modifier l'id de la div qui recevra le résultat au cas ou
      });
        return false;
    });

Voila, utilise le .live() (ou son successeur .on() en fonction de ta version de jquery) pour bien que l’évènement change de ton select soit écouté (étant donné qu'il est ajouté dynamiquement au DOM).

Cette solution te convient-elle, et ai-je bien compris le problème ? big_smile