2 votes

Ajax Php dependent dropdown select - Comment afficher le nom de la ville au lieu de l'identifiant dans la base de données (soumettre à partir des données) ?

J'ai essayé de résoudre le problème pendant quelques jours, mais sans succès. Le problème est le suivant :

  • Formulaire Web avec boîte de sélection à liste déroulante dépendante où l'utilisateur peut sélectionner son ville, le code postal et la rue et cela fonctionne mais.
  • Lorsque je soumets le formulaire dans ma base de données, aucun city_name (texte) - uniquement city_id (nombre/valeur).

Donc, la question est - Comment poster city_name dans la base de données ? L'utilisateur est de Rome et I Rome (texte) n'est pas soumis à la base de données. city_id (numéro).

Sélectionnez l'entrée :

<div class="form-group">
    <label class="col-md-4 control-label" for="grad">City:*</label>
    <div class="col-md-4">
        <select type="text" name="city_name" id="city_name" class="form-control input-sm">
                    <option value=""></option>
                    <option value="999">---Enter city yourself---</option>
                    <?php $sql_query="SELECT * FROM city_table order by city_id asc";
                          $result=mysqli_query($dbconfig,$sql_query);
                          while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){
                    ?>
                    <option value="<?php echo $row['city_id'].'_'.$row['city_name'];?>"><?php echo $row['city_name'];?></option>
                    <?php }?>
                </select>
       </div>
</div>

<!-- Select Basic -->
<div class="form-group">
    <label class="col-md-4 control-label" for="post_no">ZIP code:*</label>
    <div class="col-md-4">
        <select name="zip_name" id="zip_name" class="form-control input-sm" onchange="recalculate_price();">

        </select>
    </div>
</div>

<!-- Select Basic -->
<div class="form-group">
    <label class="col-md-4 control-label" for="address">Street:*</label>
    <div class="col-md-4">
        <select name="street_name" id="street_name" class="form-control input-sm" onchange="recalculate_price();">

        </select>
    </div>
</div>

get_zip_php

<?php
include('db_config.php');
if($_POST['id'])
{
 $id=$_POST['id'];

 $sql_query="SELECT * FROM zip_table where city_id='$id' order by zip_name asc";
 $result=mysqli_query($dbconfig,$sql_query);
 ?>
 <option selected="selected">Select ZIP code :</option><?php
 while($row=mysqli_fetch_array($result,MYSQLI_ASSOC))
 {
  ?>
        <option value="<?php echo $row['zip_id']; ?>-<?php echo $row['limousine']; ?>-<?php echo $row['kombi']; ?>-<?php echo $row['mini_van']; ?>"><?php echo $row['zip_name']; ?></option>
        <?php
 }
}
?>

get_street_php

<?php
include('db_config.php');
if($_POST['id'])
{
 $id=$_POST['id'];

 $sql_query="SELECT * FROM street_table where zip_id='$id' order by street_name asc";
 $result=mysqli_query($dbconfig,$sql_query);
 ?>
 <option selected="selected">Select street please :</option><?php
 while($row=mysqli_fetch_array($result,MYSQLI_ASSOC))
 {
  ?>
        <option value="<?php echo $row['street_id']; ?>"><?php echo $row['street_name']; ?></option>
        <?php
 }
}
?>

Ajax :

    <script>
$(document).ready(function()
{
$("#city_name").change(function()
     {
      var id=$(this).val();
      var data = 'id='+ id;

      $.ajax
      ({
       type: "POST",
       url: "get_zip.php",
       data: data,
       cache: false,
       success: function(html)
        {
            $("#zip_name").html(html);
            recalculate_price();
        } 
    });
});

$("#zip_name").change(function()
    {
      var id=$(this).val();
      var data = 'id='+ id;

      $.ajax
      ({
       type: "POST",
       url: "get_street.php",
       data: data,
       cache: false,
       success: function(html)
       {
        $("#street_name").html(html);
        recalculate_price();
       } 
       });
    });
});
</script>

Si j'apporte des modifications à l'option "select city part" (je m beginner and really I Je suis perdu dans tout ça) Je ne peux pas passer la fermeture éclair.

Alors, s'il vous plaît, dites-moi où faire tous les changements pour passer toutes ces choses et poster city_name Je l'ai fait comme "xxxx - ville") et le nom de la rue. S'il vous plaît aidez-moi, j'ai googlé et lu ici sur les problèmes quelques jours et ne peut pas continuer à travailler sur mon projet jusqu'à ce que je fixe ce problème. Merci d'avance.

0voto

Vinit Singh Points 438

Récupérer le nom de la ville depuis la base de données sur la base de l'identifiant de la ville dans votre tableau POST avant la requête INSERT.

SELECT `city_name` FROM `city_table` WHERE `city_id`='".$_POST['city_name']."'

puis utilisez ce nom de ville dans votre requête d'insertion.

0voto

Utilisez la balise de sélection ci-dessous. Il peut vous être utile

<select type="text" name="city_name" id="city_name" class="form-control input-sm">
    <option value=""></option>
    <option value="999">---Enter city yourself---</option>
    <?php 
        $sql_query="SELECT * FROM city_table order by city_id asc";
        $result=mysqli_query($dbconfig,$sql_query);
        while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){
            echo  "<option value='".$row['city_id']."'>".$row['city_name']."</option>";
        }
    ?>
</select>

0voto

JYoThI Points 10817

Concaténer l'id avec la valeur comme ceci en utilisant le délimiteur comme ceci

<option value="<?php echo $row['city_id'].'_'.$row['city_name'];?>"><?php echo $row['city_name'];?></option>

En php, utilisez explode()

La fonction explode() décompose une chaîne de caractères en un tableau.

    $ss = explode('_','6_Rome'); 

    print_r($ss); 

    echo $ss[0];  //6 pass the value into query 

Dans jquery, utilisez split()

Divise une chaîne de caractères en un tableau de sous-chaînes : utiliser split()

    $vv = variable_name.split("_");

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