2016-07-04 25 views
0

Ich gehe ein bisschen verrückt hier. Ich weiß, dass dies schon einige Male beantwortet wurde, aber ich kann es nicht verstehen. Ich muss etwas sehr Offensichtliches vermissen.füllen eine zweite Auswahlbox basierend auf der ersten mit Ajax und PHP

Ich brauche die Optionen des zweiten Auswahleingangs, der dynamisch aus einem DB basierend auf der Auswahl des 1. Auswahleingangs gefüllt wird. Ich habe den getShowByBand.php Code getestet und es produziert die beabsichtigten Ergebnisse. Meine Vermutung ist das Problem liegt in der Javascript-Datei. Bitte sehen Sie sich meinen Code an und schauen Sie, ob Sie mir helfen können.

testForm.php

<form role="form"> 
    <div class="well" id="generalIDRows"> 
     <div class="row"> 
     <div class="col-md-6 padding-top-10"> 
      <div class="form-group"> 
      <label for="band">Choose Band:</label> 
      <select id="band" name="band" class="form-control"> 
       <option value="">Band Name</option> 
       <?php 
         $sql = "SELECT bandID,bandName FROM Band"; 
          $bandq = mysqli_query($link, $sql);     
         while($row = mysqli_fetch_array($bandq)) 
       { 
       $band_ID=$row["bandID"]; 
       $band=$row["bandName"];      
       echo '<option value="' . $band_ID . '">' . $band .'</option>'; 
       } 
       ?> 
      </select> 
      <script src="js/getShowByBand.js" type="text/javascript"></script> 
      </div> 
     </div> 
     <div class="col-md-6 padding-top-10"> 
      <div class="form-group"> 
      <label for="show">Choose Show:</label> 
      <select id="show" name="show" class="form-control"> 
       <option value="">--Select Show--</option> 
      </select> 
      </div> 
     </div> 
     </div> 
    </div> 
    </form> 

getShowByBand.js

$(document).ready(function() 
{ 
$(".band").change(function() 
{ 
    var id=$(this).val(); 
    var dataString = 'id='+ id; 

    $.ajax 
    ({ 
    type: "POST", 
    url: "womhScripts/getShowByBand.php", 
    data: dataString, 
    cache: false, 
    success: function(html) 
    { 
     $(".show").html(html); 
    } 
    }); 
    }); 
}); 

getShowByBand.php

<?php 
$link=mysqli_connect("localhost","womhproduction","Derkadeepd0ng","womh"); 
if (mysqli_connect_errno()) 
    echo "failed to connect" . mysqli_connect_error(); 
if($_POST) 
{ 
    $id=$_POST['id']; 
    $showSQL = mysqli_query($link,"SELECT showID FROM Act WHERE bandID =" . $id . ";"); 
    $showResults = mysqli_num_rows($showSQL); 
    if($showResults > 0) 
    { 
     echo "<option selected disabled>--Select show--</option>"; 
     while($showRow = mysqli_fetch_array($showSQL)) 
     { 
      $showID= $showRow['showID']; 
      $showNameSQL = mysqli_query($link, "SELECT showName FROM Shows WHERE showID=". $showID . ";"); 
      $showNameResults = mysqli_num_rows($showNameSQL); 
      if($showNameResults > 0) 
      { 
       while($showNameRow = mysqli_fetch_array($showNameSQL)) 
       { 
        $showName = $showNameRow['showName']; 
        echo '<option value= "' . $showID . '">' . $showName . '</option>'; 
       }  
      }  
     }  
    } 
} 
?> 
+0

fügen Sie einen Fehler Callback, lassen Sie uns sehen, was es sagt? –

Antwort

2

Verwenden Sie $("#band").change ... dot wird zur Auswahl der Klasse verwendet.

+0

Vielen Dank! Ich musste das gleiche auch für ".show" tun, wie du sicher wusstest. –

+0

Yup du musst, ich habe mir das nicht angesehen. – Red

2

try t o ändere dieses $ (". band") zu diesem $ ("# band") auf deinem Javascript, für das du eine Änderung einforderst, für die Klasse solltest du es per ID machen.

Verwandte Themen