2016-02-10 29 views
6

Ho creato la pagina del mio profilo con tutti i dati in forma di MySQL. Tutti i dati sono visualizzati correttamente nel modulo e anche nell'elenco a discesa. Ma il problema è che il valore selezionato viene mostrato due volte nell'elenco delle opzioni.PHP e MySQLi - Mostra due volte il valore selezionato nell'elenco a discesa

Ecco il mio codice:

<select class="form-control" name="country" id="country"> 
    <option value="">Select Country 
     <?php 
      //Get country list from Country master 
      $qry = "select * from country_master"; 
      //Execute query 
      $result = mysqli_query($conn, $qry); 
      //Assigned fetched array to $Country 
      while($country = mysqli_fetch_array($result)) 
      { 
       echo "<option value='$country[1]'>$country[1]</option>"; 
       //Compare User Country with country list. $row[4] is the country column in user table 
       if($row[4] == $country[1]) 
       echo "<option value='$country[1]' selected='selected'>$country[1]</option>"; 
      } 
     ?> 
     </option> 
</select> 
+0

Bhavin solo bisogno if else condizione in ciclo while –

+0

@ A-2-A destra, poteva a * almeno * me upvote per l'incidente se è intenzione di farlo -_- – Derek

+0

Non importa quale risposta sarà scelta, ma almeno sarà la prima risposta corretta e descrittiva. –

risposta

6

è necessario modificare il codice while come di seguito: -

while($country = mysqli_fetch_array($result)){ 
    //Compare User Country with country list. $row[4] is the country column in user table 
    if($row[4] == $country[1]){ 
     echo "<option value='$country[1]' selected='selected'>$country[1]</option>"; 
    }else{ 
     echo "<option value='$country[1]'>$country[1]</option>"; 
    } 
} 

Nota: Nel tuo codice prima viene creata l'opzione e quindi la condizione è selezionata, per questo motivo due volte mostrerà l'opzione selezionata.

+0

Grazie A-2-A, funziona. –

+0

Mi spiace A-2-A, succede per sbaglio. –

+0

Nessun problema, scusa anche per le mie parolacce :) –

2

La risposta corretta al problema che si trovano ad affrontare è fornito da A-2-A.

Inoltre Si stanno annidando tutte le opzioni in loop all'interno dell'opzione "Seleziona Paese". è necessario rimuovere l'ultimo </option> tag prima del tag </select> e spostarlo dopo "Select Country" in questo modo:

<option value="">Select Country</option>

1

Questo dovrebbe risolvere il problema:

<select class="form-control" name="country" id="country"> 
<option value="">Select Country 
    <?php 
     //Get country list from Country master 
     $qry = "select * from country_master"; 
     //Execute query 
     $result = mysqli_query($conn, $qry); 
     //Assigned fetched array to $Country 
     while($country = mysqli_fetch_array($result)) 
     { 
      echo "<option value='$country[1]'".($row[4] == $country[1] ? " selected" : "").">$country[1]</option>"; 
     } 
    ?> 
    </option> 

Il problema era che lei aveva fatto eco l'opzione selezionata in aggiunta all'opzione non selezionata. Ora aggiunge l'attributo 'selezionato' se l'opzione deve essere selezionata. (In base alle condizioni)

1

Dovrebbe essere impostato in questo modo:

<select class="form-control" name="country" id="country"> 
    <option value="">Select Country 
     <?php 
      //Get country list from Country master 
      $qry = "select * from country_master"; 
      //Execute query 
      $result = mysqli_query($conn, $qry); 
      //Assigned fetched array to $Country 
      while($country = mysqli_fetch_array($result)) 
      { 

       //Compare User Country with country list. $row[4] is the country column in user table 
       if($row[4] == $country[1]){ 
       echo "<option value='$country[1]' selected='selected'>$country[1]</option>"; 
       } 
       else{ 
       echo "<option value='$country[1]'>$country[1]</option>"; 
       } 

      } 
     ?> 
     </option> 
</select> 

Perché è necessario verificare se è selezionato il valore, quindi se non è visualizzare i dati di conseguenza.

0

Si hanno due problemi:

  • utilizzando l'opzione all'interno dell'opzione.
  • in secondo luogo è sufficiente stampare l'attributo selezionato anziché stampare l'opzione completa.

Esempio:

<option value="">Select Country 
</option> 
<?php 
//Get country list from Country master $qry = "select * from country_master"; 
//Execute query 
$result = mysqli_query($conn, $qry); 

//Assigned fetched array to $Country 

while($country = mysqli_fetch_array($result)) { 


if($row[4] == $country[1]) { 
$selected = 'selected=""'; 
} 
else{ 
$selected = ""; 
} 
?> 

<option <?php echo $selected;?> value='<?php echo $country[1];?>'> 
<?php echo $country[1];?> 
</option> 
<?php 
} 
?>