4 votes

2 boîtes de dépôt ajax

Bonjour à tous,

Cette semaine, j'ai commencé à travailler pour la première fois avec une requête ajax, mais je n'ai aucune idée de la manière de l'utiliser correctement. Ma situation : J'ai 2 boîtes de dépôt, la première contient des données de la base de données, la seconde doit être remplie avec l'option que j'ai sélectionnée dans la première combobox (ex. select * from presents where city = '$_GET['city']' ).

J'ai le code suivant :

à partir de la section en-tête de index.php

    $('#woonplaats').change(function(){
        var woonplaats = $('#woonplaats').val();

        $.ajax({ 
        type: "GET", 
        url: "ajax.php?woonplaats="+woonplaats+"", 
        success: function(msg){
            $('#pandtype').html(msg);}
        });
    });

à partir de ajax.php

$_GET['woonplaats'] = mysql_real_escape_string($_GET['woonplaats']);

if(isset($_GET['woonplaats']))
{ 
    $query = "SELECT * FROM aanbod WHERE Plaats = '".$_GET['woonplaats']."'";
    $result = mysql_query($query);
    echo $query;

    echo "<select id='pandtype' name='pandtype'>";
    while($row = mysql_fetch_object($result))
    { 
        echo '<option value="'.ucfirst(strtolower($row->PandType)).'">'.ucfirst(strtolower($row->PandType)).'</option>';
    }
    echo "</select>";
}

Qu'est-ce qui me manque ? Et qu'est-ce que je dois faire avec le combobox original 2nd loaded ?

Sincères salutations !

0voto

Ed Meacham Points 106

En réponse à la réponse auto-répondante, j'ai un petit remaniement à proposer

Au lieu de créer un élément de remplacement et d'utiliser la méthode jQuery .html() :

$('#blaat').html(msg);

Vous pourriez créer dynamiquement l'élément que vous voulez que votre réponse ajax affiche dans...

Pour afficher après l'élément qui a créé la requête ajax (disons que c'était #woonplaats) :

$('<div>' + msg + '</div>').appendTo($('#woonplaats'));

Je préfère cette méthode parce que selon les règles css héritées, vous pouvez vous retrouver avec un peu de "wonk" dans l'affichage. C'est un peu plus de contenu dans la configuration script, mais cela peut éviter d'avoir à ajouter une autre classe css ou un style en ligne pour "display:none" sur l'élément.

0voto

phsaires Points 535

Utilisation de jquery

* * *dans la balise d'en-tête

<script language="JavaScript" type="text/javascript">
$(document).ready(function(){
            $('#states').change(function(){
                $('#cities').load('places.php?state='+$('#states').val() );
        $('#cities').focus();
            });
        });
</script>

* *Etats combo

<select name="states" id="states" onChange="" width="200px" style="width: 200px">
        <option value="">Select state</option>
        <?php
        $query_uf =  "SELECT * FROM states ORDER BY state ASC";
        $result = mysql_query($query_uf, $bd);
        while ($uf = mysql_fetch_assoc($result)) {
            echo "<option value='".$uf['cod']."'>".$uf['name_state']."</option>";
        }
?>
</select>

* *combo villes (il est rempli lorsque les états changent)

<select name="cities" id="cities" width="200px" style="width: 200px">
        <option value="">Choose a city</option>
      </select>

places.php

$id_state = $_GET['state'];
$result = mysql_query("SELECT * FROM cities WHERE cod_st = '".$id_state."' ORDER BY name_city ASC", $bd) or die(mysql_error());
echo "<option value=\"\">Select city.</option>";
while($row = mysql_fetch_array($result) ){
    echo "<option value='".$row['cod_city']."'>".$row['name_city']."</option>";
}

États de la table cod | nom_État


1 | Floride 2 | Californie

Tableau des villes cod_city | nom_city | cod_st


1 | Miami | 1 2 | Orlando | 1 3 | San Diego | 2 4 | San Francisco | 2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X