2016-06-17 31 views
1

Ich habe 20 Dropdown-Box, die eine einzelne Tabelle und das gleiche Feld abfragt, schrieb ich die folgende Abfrage, die gut funktioniert. Ich bin sicher, dass es eine gewisse Möglichkeit gibt, diese sich wiederholenden Dropdown-Boxen zu optimieren, was mir nicht bewusst ist.Wiederholen Dropdown-Felder - 20 insgesamt - Mysql - PHP

soll ich schreiben Sie eine Funktion und die Pass-Parameter von jedem <select><? functioname() ?></select> enter image description here

<div class="form-group"> 
       <label>Split 1</label> 
       <select class="form-control required" name='distance[]' id='distance' > 
        <option value="-1">Select Distance</option> 
        <?php 
                $plan_sql="select * from mytable"; 
                $plan_res=mysqli_query($con,$plan_sql); 
                while($row=mysqli_fetch_array($plan_res,MYSQL_BOTH)) 
                { 
                 ?> 
        <option value="<?php echo $row['id'];?>"><?php echo $row['name'];?></option> 
        <?php 
                } 
               ?> 
        </select> 
       </div> 
       <div class="form-group"> 
       <label>Split 2</label> 
       <select class="form-control required" name='distance[]' id='distance' > 
        <option value="-1">Select Distance</option> 
        <?php 
                $plan_sql="select * from mytablename"; 
                $plan_res=mysqli_query($con,$plan_sql); 
                while($row=mysqli_fetch_array($plan_res,MYSQL_BOTH)) 
                { 
                 ?> 
        <option value="<?php echo $row['id'];?>"><?php echo $row['name'];?></option> 
        <?php 
                } 
               ?> 
        </select> 
       </div> 

enter image description here

+0

Sie eine andere Tabelle für jede Gruppe haben? – chris85

+2

Es hört sich so an, als würden Sie dieselbe Abfrage wiederholt ausführen. Ich würde die Abfrage einmal ausführen und die Ergebnisse speichern, so dass sie für jede Auswahl wiederverwendet werden können. –

+0

@ chris85 keine gleiche Tabelle – user580950

Antwort

3
<?php 

// Run your query once and store the results 

$plan_sql = "select id, name from mytable"; 
$plan_res = mysqli_query($con, $plan_sql); 
while ($row = mysqli_fetch_array($plan_res, MYSQLI_ASSOC)) { 
    $result[] = $row; 
}; 

// then you can add your selects without running the query repeatedly 

for ($i=1; $i <= 20; $i++):?> 
<div class="form-group"> 
    <label>Split <?php echo $i; ?></label> 
    <select class="form-control required" name='distance[]' id='distance' > 
     <option value="-1">Select Distance</option> 
     <?php foreach ($result as $row): ?> 
      <option value="<?php echo $row['id'];?>"><?php echo $row['name'];?></option> 
     <?php endforeach ?> 
    </select> 
</div> 
<?php endfor; ?>  
+1

Ich würde nur 'MYSQL_BOTH' in' MYSQLI_ASSOC' ändern. – chris85

+0

@ chris85 Guter Punkt. Zu viel Copypasta. –

Verwandte Themen