2016-02-10 24 views
6

Stworzyłem moją stronę profilu z pokazaniem wszystkich danych w formie z MySQL. Wszystkie dane są przedstawione prawidłowo na formularzu, a także na liście rozwijanej. Ale problem jest wybrany wartość jest pokazywana dwa razy na liście opcji.PHP i MySQLi - Pokaż wybraną wartość dwa razy na liście rozwijanej

Oto mój kod:

<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 prostu potrzebne, jeśli warunek else w pętli while –

+0

@ A-2-prawo, mógł w * co najmniej * upvote mnie na nieszczęście, jeśli on zrobi to -_- – Derek

+0

Zobacz bez względu na to, jaka odpowiedź będzie wybrana, ale przynajmniej będzie to pierwsza poprawna i opisowa odpowiedź. –

Odpowiedz

6

Musisz zmienić swój kod while jak poniżej: -

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>"; 
    } 
} 

Uwaga: W kodzie pierwsza opcja jest tworzona, a następnie sprawdzany jest warunek, dlatego dwa razy wyświetli wybraną opcję.

+0

Dzięki A-2-A, działa. –

+0

Przepraszam A-2-A, To się stało przez pomyłkę. –

+0

Nie ma problemu, przepraszam za moje złe słowa też :) –

2

Prawidłowa odpowiedź na problem masz do czynienia jest przez A-2-A.

Dodatkowo Rozgałęziacie wszystkie zapętlone opcje wewnątrz opcji "Wybierz kraj". należy usunąć ostatni </option> tag przed znacznikiem </select> i przesunąć go po "Wybierz kraj" tak:

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

1

To powinno rozwiązać problem:

<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> 

Problem polegał na tym, że trzeba było echem wybraną opcję dodatkowo non-wybranej opcji. Teraz dodaje atrybut "wybrany", jeśli opcja powinna zostać wybrana. (Na podstawie stanu)

1

Należy skonfigurować tak:

<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> 

Bo trzeba sprawdzić, czy jest wybrana wartość, a następnie, jeśli nie jest wyświetlanie danych odpowiednio.

0

Masz dwie kwestie:

  • używając opcji wewnątrz opcja.
  • sekund wystarczy wydrukować wybrany atrybut zamiast opcji pełnej.

Przykład:

<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 
} 
?> 
Powiązane problemy