2011-03-10 15 views
5

Siento que hay tiene que ser una mejor manera de hacer esto para poblar el seleccionado ....mejor manera de hacer este bloque en php

<p> 
    <label for="industry" class="medium">Industry</label> 
    <select name="industry" > 
     <option value="" selected="<?php if($_POST['industry'] =="") { echo "selected";} ?>">-- Select Industry --</option> 
     <option value="Retail" selected="<?php if($_POST['industry'] =="Retail") { echo "selected";} ?>">Retail</option> 
     <option value="Restaurant" selected="<?php if($_POST['industry'] =="Restaurant") { echo "selected";} ?>">Restaurant</option> 
     <option value="Salon" selected="<?php if($_POST['industry'] =="Salon") { echo "selected";} ?>">Salon</option> 
     <option value="Pizza Delivery" selected="<?php if($_POST['industry'] =="Pizza Delivery") { echo "selected";} ?>">Pizza Delivery</option> 
     <option value="Grocery" selected="<?php if($_POST['industry'] =="Grocery") { echo "selected";} ?>">Grocery</option> 
     <option value="Quick Service" selected="<?php if($_POST['industry'] =="Quick Service") { echo "selected";} ?>">Quick Service</option> 
     <option value="Liquor Store" selected="<?php if($_POST['industry'] =="Liquor Store") { echo "selected";} ?>">Liquor Store</option> 
     <option value="Tobacco" selected="<?php if($_POST['industry'] =="Tobacco") { echo "selected";} ?>">Tobacco</option> 
     <option value="Video Store" selected="<?php if($_POST['industry'] =="Video Store") { echo "selected";} ?>">Video Store</option> 
     <option value="Other" selected="<?php if($_POST['industry'] =="Other") { echo "selected";} ?>">Other</option> 
    </select> 
</p> 
+2

la salida siguiente: http://stackoverflow.com/questions/5249904/how-to-populate-listbox-drpdown-box-select-box-from-php-array/5249998#5249998 – amosrivera

+0

Uso CodeIgniter. Tienen un form_helper que hará esto por ti. :-D –

Respuesta

3

Al crear la matriz $selected se recorta lo visual y faff computacional de tener que verificar $_POST cada vez.

$selected = array(); 
$selected[$_POST['industry']] = "selected='selected'"; 
//all others will be nothing 
$industries = array(); //populate with options 

foreach($industries as $i){ 
    echo "<option value='$i' ".$selected[$i].">$i</option>"; 
} 
+0

gracias de nuevo gracias .. – Trace

6

Puede crear matriz con valores como la

$options = array(
    'Retail', 'Restaurant', 'Salon' 
); 

A continuación, realice sencilla for a valores de salida en forma de

<select name="industry"> 
    <?php for ($i = 0; $i < count($options); $i++) { ?> 
    <option value="<?php echo $options[$i]; ?>"<?php echo $_POST['industry'] == $options[$i] ? ' selected="selected"' : ''; ?>><?php echo $options[$i]; ?></option> 
    <?php } ?> 
</select> 
+0

Todavía requiere un montón de habilidad para comprobar '$ _POST' cada vez. – fredley

+0

Bueno, sí, sin embargo, me gusta ver a primera vista lo que está pasando. En su respuesta, tuve que pensar un poco para ver cómo se ve la matriz '$ selected'. Pero uno prefiere la técnica a la que está acostumbrado :) – rdamborsky

0

Solo voy a hacer una matriz de los valores de opción y de bucle a través y echo el código necesario. Es un poco más limpio de mirar.

$optionValues = //blag 

foreach($optionValues as $optionValue) 
    echo //option tag stuff 
0
<p> 
    <label for="industry" class="medium">Industry</label> 
    <select name="industry" > 
     <option value="">-- Select Industry --</option> 
     <?php 
      $Industries = Array 
      (
       "Retail", 
       "Restaurant", 
       "Salon", 
       "Pizza Delivery", 
       "Grocery", 
       "Quick Service", 
       "Liquor Store", 
       "Tobacco", 
       "Video Store", 
       "Other" 
      ); 

      foreach($Industry as $Industries) 
      { 
       $Selected = ($_POST['industry'] == $Industry) ? 'selected="selected"' : ""; 
       echo '<option value="' . $Industry . '" ' . $Selected . '>' . $Industry . '</option>' 
      } 
     ?> 
    </select> 
</p> 
Cuestiones relacionadas