2016-06-20 7 views
2

Wenige Tage versuche ich, Problem zu lösen, aber kein Glück. Problem ist weiter:Ajax PHP abhängige Dropdown-Auswahl - Wie Name der Stadt statt ID in Datenbank (senden von Daten)?

  • Web-Formular mit abhängigen ausgewählten Drop-Down-Box, wo Benutzer seine Ort, PLZ und Straße und diese Arbeit aber auswählen kann.
  • Wenn ich Formular in meiner Datenbank einreichen city_name (Text) - nur city_id (Anzahl/Wert).

Also, Frage ist - Wie city_name in der Datenbank zu buchen? Benutzer ist aus Rom und ich Rom (Text) ist nicht city_id (Nummer) eingereicht.

Select-Eingang:

<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> 

Wenn ich einige Änderungen an "Select city part" (I m beginner and really I m in all dem verloren) mache, kann ich den zip nicht passieren.

Also, bitte sagen Sie mir, wo alle Änderungen vorgenommen werden, um alle diese Dinge passieren und city_name, zip (Name ... Ich mache es als "xxxx - Stadt") und Straßenname. Bitte helfen Sie mir, ich habe gegoogelt und hier ein paar Tage über Probleme gelesen und kann nicht weiter an meinem Projekt arbeiten, bis ich das repariere. Danke im Voraus.

+0

verketten die ID mit dem Wert wie diese mit Trennzeichen wie diese JYoThI

+0

Danke jothi aber ist möglich Nummer (id) irgendwie aus 6_Rom entfernen und nur Rom posten? – Falcon

+0

in PHP verwenden $ SS = explodieren ('_', '6_Rome'); so und print_r ($ ss); echo $ ss [0]; – JYoThI

Antwort

0

Verwenden Sie den Balg Select Tag. Es kann nützlich für Sie


<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>

+0

Danke für die Antwort, aber ... ich habe gleiche Auswahloptionen auf diesem Weg und wieder auf submit "6" wird eingereicht nicht "Rom". – Falcon

+0

Standardmäßig wird nur Wert gesendet werden. Wenn Sie Ihre Option (Text) in db speichern möchten, verwenden Sie var cname = $ ("# city_name option: selected"). Text(); Es gibt ausgewählten Optionstext zurück. Speichern Sie cname in Ihre db –

+0

wo zu verwenden (Teil meines Codes) diese var cname = $ ("# city_name option: ausgewählt"). text(); oder wie man es einbezieht? Vielen Dank. – Falcon

0

holen Stadt Name aus der Datenbank auf der Grundlage der Stadt ID in Ihrem POST-Array vor INSERT-Abfrage.

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

dann verwenden Sie den Namen der Stadt in Ihrer einfügen Abfrage.

+0

Wie hole ich es vor Abfrage? Entschuldigung, aber kannst du mir bitte erklären. Wenn ich das nutze, wähle KEINE Städte aus. – Falcon

+0

Sie müssen diese Abfrage nach dem Absenden des Formulars in Ihrer Aktionsseite verwenden –

0

Concatenate die ID mit dem Wert wie diese mit Trennzeichen wie diese

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

In PHP explode()

Die Funktion explode() einen String in ein Array bricht.

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

    print_r($ss); 

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

In jquery Verwendung split()

Split eine Zeichenfolge in ein Array von Teilstrings: Verwendung Split()

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