2016-08-02 6 views
-3

Ich versuche eine verschachtelte Auswahlliste zu erstellen, die nicht funktioniert Die Werte der zweiten Auswahlliste werden nicht aufgefüllt. Hier ist mein Code. Ich bevölkern das erste Auswahl und basierend auf seinen Wert getter.php wird dynamisch das zweite Auswahlfeld (die nicht funktioniert) aufzufüllen genanntFüllen Sie die zweite Auswahlliste basierend auf dem ersten Auswahllistenwert

<div class="col-sm-3"> 
    <label for="rg">Region</label> 
</div> 
<div class="col-sm-9"> 
    <select id="region" name="region"> 
     <option value="">Select Region</option> 
     <option value="AR">Ashanti</option> 
     <option value="BRONG+AHAFO">Brong Ahafo</option> 
     <option value="CENTRAL">Central</option> 
     <option value="EASTERN">Eastern</option> 
     <option value="GREATER+ACCRA">Greater Accra</option> 
     <option value="NORTHERN">Northern</option> 
     <option value="UPPER+EAST">Upper East</option> 
     <option value="UPPER+WEST">Upper West</option> 
     <option value="VOLTA">Volta</option> 
     <option value="WESTERN">Western</option> 
    </select> 
</div> 

<div class="col-sm-3"><label for="tw">Town</label></div> 
<div class="col-sm-9"> 
    <select id="town" name="town"> 
     <option value="">Select Town</option> 

    </select> 
</div> 


<script type="text/javascript"> 
$(document).ready(function() { 
    $("#region").change(function() { 
     $("#town").load("getter.php?choice=" + $("#region").val()); 
    }); 
}); 
</script> 

Hier getter.php ist

<?php 
include "../areashoppers/includes/cs_functions.php"; 
$sql = "SELECT distinct town FROM oic_areas_full WHERE region = '".$choice."' ORDER BY town ASC"; 
$st = $sc_conn->query($sql); 
while ($r = $st->fetch()) { 
    echo "<option>" . $r['town'] . "</option>"; 
} 
?> 

Dies ist, was zeigt im Fehlerprotokoll

[02-Aug-2016 18:39:50 UTC] PHP Notice: Undefined variable: choice in /home/areashoppers/public_html/nylb/getter.php on line 3

[02-Aug-2016 18:39:50 UTC] PHP Fatal error: Call to a member function fetch() on boolean in /home/areashoppers/public_html/nylb/getter.php on line 5

$ sc_conn ist mein DSN in cs_functions definiert

+2

der Fehler ist offensichtlich; Wo weisen Sie einen Wert für $ Choice zu? Sobald Sie das behoben haben, sollte der zweite Fehler verschwinden und Magie kann passieren. –

+0

Entschuldigung, aber ich bin neu in Javascript. Wie erstelle ich es zu getter.php – user3449007

+1

Dies beantwortet nicht Ihre Frage, aber Sie sollten sich der Sicherheitsrisiken bewusst sein, die mit der Struktur verbunden sind, die Sie verwenden. '$ _GET'-Variablen und Verkettungsvariablen in einer SQL-Zeichenfolge sind Öffnungen für bösartige Angriffe. –

Antwort

0

Sie die Wahl aus der URL durch GET-Methode bekommen haben.

<?php 
include "../areashoppers/includes/cs_functions.php"; 
$choice = $_GET['choice']; 
$sql = "SELECT distinct town FROM oic_areas_full WHERE region='$choice' ORDER BY town ASC"; 
$st = $sc_conn->query($sql); 
while ($r = $st->fetch()) { 
    echo "<option>" . $r['town'] . "</option>"; 
} 
?> 
+1

Schauen Sie noch einmal, es gibt einen wopping Fehler hier, der nicht in der ursprünglichen Frage war – RiggsFolly

+0

Das ist es, _DV removed_ – RiggsFolly

+0

Danke für die Info @RiggsFolly –

2

Undefined variable: choice verursacht höchstwahrscheinlich auch den zweiten Fehler, da die Abfrage fehlschlägt, wenn $choice nicht definiert ist.

am Anfang des PHP-Skript sollte den Fehler aufräumen.

Einschließlich einer Variablen in dem Query-String wie getter.php?choice=something nicht automatisch eine $choice Variable erstellen, aber es tut speichert der Wert in $_GET['choice'].

Wenn Sie die Variable $choice in Ihrer Abfrage sicher verwenden möchten, machen Sie sich keine Sorgen darüber, sie zu umgehen, verwenden Sie einfach eine vorbereitete Anweisung. Unter der Annahme, $sc_conn ist eine funktionierende PDO-Verbindung, die wie folgt sein würde:

$sql = "SELECT distinct town FROM oic_areas_full WHERE region=? ORDER BY town ASC"; 
$st = $sc_conn->prepare($sql); 
$st->execute([$choice]); 
+0

Ich werde Urlencode ($ _ GET ['Choice']) zu Sonderzeichen – user3449007

+1

@ user3449007 zu tun Nein, tun Sie nicht, dass $ _GET und $ _POST bereits eine 'urldecode()' auf alle dort Inhalte von PHP – RiggsFolly

+0

getan haben Das ist nicht der richtige Ort, um 'urlencode' zu ​​verwenden. –