Opracowuję pudełko Combo, gdy wybiorę coś w kolumnie Wykonawcy (zgodnie z Dołączeniem w linku), pole Combo pojazdu pobiera informacje z bazy danych opartej na wyborze wykonawcy.

Problemy z napisem:
Pudełko Combo pojazdu nie może wyświetlać danych na podstawie wyboru wykonawcy.

Ilustracja O projekcie interfejsu:

illustration about the interface design


Załączam w pierwszej części kodu, który jest moim kodem tabel HTML.

<td>
    <select class="form-control" name='opt_contractor[]' id='opt_contractor' onChange="getState(this.value);" <?php if ($view==1) {?> disabled <?php }?> >
    <option>-- Select One --</option>
    <?php 
    foreach ($get_contractor as $contractor ){
    ?>
    <option value='<?php echo $contractor->ref_id;?>'<?php if($contractor->ref_id == $reqtype){echo ' selected';}?>><?php echo $contractor->ref_desc;?>
    </option>
    <?php } ?>
    </select>
</td>
<td>
    <select class="form-control" name="opt_vehicle[]" id="opt_vehicle" >
    <option value="">-- Select Vehicle --</option>
    </select>
</td>

Scenariusz

function getXMLHTTP() { //fuction to return the xml http object
    var xmlhttp=false;  
    try{
        xmlhttp=new XMLHttpRequest();
    }
    catch(e)    {       
        try{            
            xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e){
            try{
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(e1){
                xmlhttp=false;
            }
        }
    }

    return xmlhttp;
}


function getState(countryId)
{
   var strURL="refresh.php?country="+countryId;
   var req = getXMLHTTP();
   if (req)
   {
      req.onreadystatechange = function()
      {
        if (req.readyState == 4)
        {
        // only if "OK"
        if (req.status == 200)
        {
          document.getElementById('opt_vehicle').innerHTML=req.responseText;
        } else {
          alert("There was a problem while using XMLHTTP:\n" + req.statusText);
        }
        }
      }
      req.open("GET", strURL, true);
      req.send(null);
   }
}

Kod PHP.

$query ="SELECT ref_id, ref_desc FROM ref_mst WHERE ref_val5 = '" . $country . "'";
$result = $db->query($query);

?>
<select name="opt_vehicle" >
<option>Select State</option>
<?php while($row=mysqli_fetch_assoc($result)) { ?>
<option value=<?php echo $row['ref_id'] ?> ><?php echo $row['ref_desc'] ?>
</option>
<?php } ?>
</select>

W tej części (skieruj kod PHP), dokonałem kilku próby rozwiązania problemu, załączyłem również problem poniżej.

1. <?php while($row=mysqli_fetch_assoc($result)) { ?>
2. <?php while($row=mysqli_fetch_array($result)) { ?>
3. <?php while($row=mysqli_fetch_object($result)) { ?>

Ilustracja o błędzie: Wpisz opis obrazu tutaj

2
Nian 8 wrzesień 2017, 11:55

2 odpowiedzi

Najlepsza odpowiedź

Rozwiązałem mój problem, zamiast używać

<?php while($row=mysqli_fetch_assoc($result)) { ?>

Użyłem tej metody

$results = $db->get_results($query);
<?php
foreach($results as $vhc) {
 ?>
<option value='<?php echo $vhc->ref_id;?>'><?php echo $vhc->ref_desc; ?> </option>

Dołączyłem do modyfikacji kodów, które wykonałem, aby rozwiązać mój problem.

if(!empty($contract)) {
$query = "SELECT ref_id, ref_desc FROM ref_mst WHERE ref_val5 = '" .$contract. "'";
$results = $db->get_results($query);
?>
<select name="opt_vehicle" >
<option value="">Select Vehicle ....</option>
<?php
foreach($results as $vhc) {
 ?>
<option value='<?php echo $vhc->ref_id;?>'><?php echo $vhc->ref_desc; ?> </option>
<?php
} ?>
<select>
<?php }

Dziękuję jeszcze raz do Ajmal Praveen za pomoc.

1
Nian 11 wrzesień 2017, 02:18

Wystarczy oglądać kod PHP

Myślę, że istnieje problem w swoim kodzie PHP, zastępuje go moim kodem poniżej

    <?php
//re updated the query code instead , now used the AND and markers
    $query ="SELECT `ref_id` AND `ref_desc` FROM `ref_mst` WHERE `ref_val5` = '.$country.'";
    $result = $db->query($query);
    ?>
    <select name="opt_vehicle" >
    <option>Select State</option>
    <?php while($row=mysqli_fetch_assoc($result)) { ?>
    <?php
        foreach ($row as $key => $value) {
            echo $value;
            echo $tableRow[$key];
        }
    ?>
    <option value="<?php echo $tableRow['ref_id']; ?>"><?php echo $tableRow['ref_desc']; ?></option>
    <?php } ?>
    </select>

Debugować siebie, byłem tam echo

echo $value;

Istnieją problemy z cytatem, które myślę .. więc spróbuj mnie zaktualizować .. Dziękuję ..

I uprzejmie spróbuj użyć przygotowanych oświadczeń PDO lub przygotowanych oświadczeń MySQLI, w normalnym kodzie używasz bezpośrednich zapytań do DB.

1
Ajmal Praveen 8 wrzesień 2017, 15:18