Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Lista select, powtórzone elementy
Forum PHP.pl > Forum > Przedszkole
krzyszbi
witam
robię dodawanie danych do bazy i przy walidacji formularza mam sie na pewien problem a mianowicie w tym kodzie jak pierwszy raz się wejdzie na stronke to każda opcja w selekcie wyświetla sie tylko raz i tak powinno byc ale jak juz wybiore jakąś opcje ( strona się przeładuje i formularz zostanie wysłany(do tej właśnie strony) ) to zaznaczona opcja pojawie się dwa razy
co tu jes źle
  1. <?php
  2.  
  3. echo '<select name="stan" onchange="document.dodaj_transakcje.submit();">';
  4. echo'<option value="0">Wybierz stan .';
  5. $query_s = "SELECT * FROM stan";
  6. $result_s = mysql_query ($query_s);
  7. while ($row_s = mysql_fetch_array($result_s))
  8. {
  9.  if (isset($_POST['stan']) AND !empty($_POST['stan']))
  10. {
  11. if (($_SESSION['stan']==$row_s['id_s']) OR ($_POST['stan']==$row_s['id_s']))
  12. echo'<option value="'.$row_s['id_s'].'" selected="selected">'.$row_s['symbol_stan'].'</option>';
  13. }
  14.  elseif (isset($_SESSION['stan']) AND !empty($_SESSION['stan']))
  15. {
  16. if (($_SESSION['stan']==$row_s['id_s']) OR ($_POST['stan']==$row_s['id_s']))
  17. echo'<option value="'.$row_s['id_s'].'" selected="selected">'.$row_s['symbol_stan'].'</option>';
  18. }
  19. elseif ($row_umowa['id_s']==$row_s['id_s'])
  20. {
  21. echo'<option value="'.$row_s['id_s'].'" selected="selected">'.$row_s['symbol_stan'].'</option>';
  22. }
  23. echo'<option value="'.$row_s['id_s'].'">'.$row_s['symbol_stan'].'</option>';
  24. }
  25. echo'</select><br />';
  26.  
  27. ?>


jak po ostatnim elseif dam else to pojawie sie tylko jedna opcja
nospor
Cytat
jak po ostatnim elseif dam else to pojawie sie tylko jedna opcja
No i daj wlasnie else po ostatnim elseif winksmiley.jpg
Przeciez teraz ty zawsze wyswietlasz opcję, a dodatkowo jesli opcja byla wybrana, to jeszcze ją wyswietlasz raz z parametrem selected

pozatym wogole sposob jaki to robisz, jest zly
powinno byc tylko jedno option i wzaleznosci od warunkow to dadajesz mu selected:
  1. <?php
  2.  
  3. echo '<option value="blabla" '.($jakieswarunkispelnione ? 'selected="selected"' : '').'>blabla</option>';
  4.  
  5. ?>
Dostosuj se to do twoich warunkow smile.gif
krzyszbi
dzieki
ale mam prośbe jak bys mógł mi wytłumaczyś co dokładnie robi $jakieswarunkispelnione bo mi jakos to nie wychodzi a próbuje tak ( i czy to jest dobry kierunek )
  1. <?php
  2.  
  3. if (isset($_POST['stan']) AND !empty($_POST['stan']))
  4. {
  5. if (($_SESSION['stan']==$row_s['id_s']) OR ($_POST['stan']==$row_s['id_s']))
  6. $jest = 0;
  7. } 
  8. elseif (isset($_SESSION['stan']) AND !empty($_SESSION['stan']))
  9. {
  10. if (($_SESSION['stan']==$row_s['id_s']) OR ($_POST['stan']==$row_s['id_s']))
  11. $jest = 1;
  12. }
  13.  elseif ($row_umowa['id_s']==$row_s['id_s'])
  14. {
  15.  $jest = 0;
  16. } 
  17.  else $jest = 0;  
  18. echo '<option value="'.$row_s['id_s'].'" '.($jest ? 'selected="selected"' : '').'>'.$row_s['symbol_stan'].'</option>';
  19.  
  20.  
  21. ?>

z góry dzięki
nospor
byles blisko, nie wiem czemu tylko raz piszesz $jest=0 a raz $jest=1, gdy chcesz zaznaczyc winksmiley.jpg

  1. <?php
  2.  
  3. echo '<option value="'.$row_s['id_s'].'" '.(((!empty($_POST['stan']) && $_POST['stan']=$row_s['id_s']) || (!empty($_SESSION['stan']) && $_SESSION['stan']=$row_s['id_s']) || $row_umowa['id_s']==$row_s['id_s']) ? 'selected="selected"' : '').'>'.$row_s['symbol_stan'].'</option>';
  4.  
  5. ?>
krzyszbi
wielkie dzięki
przerobiłem to i działa
mam teraz tak
  1. <?php
  2.  
  3. if (isset($_POST['stan']) AND !empty($_POST['stan']) AND ($_POST['stan']==$row_s['id_s']))
  4. $jest = 1;  
  5.  elseif (isset($_SESSION['stan']) AND !empty($_SESSION['stan']) AND ($_SESSION['stan']==$row_s['id_s']))
  6.  $jest = 1;
  7.  elseif ($row_umowa['id_s']==$row_s['id_s'])
  8. $jest = 1;
  9.  else $jest = 0;  
  10. echo '<option value="'.$row_s['id_s'].'"'.($jest ? 'selected="selected"' : '').'>'.$row_s['symbol_stan'].'</option>';
  11.  
  12. ?>

twój sposób nie wiem dlaczego ale mi nie dzała a to wyżej piknie śmiga biggrin.gif
nospor
sorki, moj glupi blad. dawale ci wszedzie zamiast porownania - przypisanie:
$_POST['stan']=$row_s['id_s'], powinno byc: $_POST['stan']==$row_s['id_s'])
podobnie w innych. tak to jest jak sie z palca pisze winksmiley.jpg

Co do twoich ifow:
  1. <?php
  2. if (isset($_POST['stan']) AND !empty($_POST['stan']) AND ($_POST['stan']==$row_s['id_s']))
  3. ?>

jest rownowazne:
  1. <?php
  2. if (!empty($_POST['stan']) AND $_POST['stan']==$row_s['id_s'])
  3. ?>

podobnie inne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.