Lista wyboru z bazy. Dlaczego nie pamieta mojego wyboru?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
joka2
Nowy
Nowy
Posty: 62
Rejestracja: śr lis 15, 2006 5:02 pm
Kontakt:

Lista wyboru z bazy. Dlaczego nie pamieta mojego wyboru?

Post autor: joka2 »

Tabela wyglada tak:

Kod: Zaznacz cały

liczba_porzadkowa | nazwa
-------------------------
1                 | jeden
2                 | dwa
3                 | trzy
4                 | cztery
Moim zadaniem jest wyświetlenie zawartosci tabeli w liście rozwijalnej, co mi się udało:

Kod: Zaznacz cały

<?php
  $dane = mysql_query("SELECT * FROM tabela");
  echo '<select name="liczba_porzadkowa">';
  while ($wiersz = mysql_fetch_assoc($dane))
  {
    echo '<option>'.$wiersz["nazwa"].'</option>';
  }
  echo '</select>';
?>
Z automatu, za pierwszym uruchomieniem strony, na liście wyboru pojawi mi się "jeden", ponieważ jest to pierwsza pozycja wybrana z bazy za pomoca SELECTa. Czyli tak, jak chcę. Po wyświetleniu listy mogę wybrać jedną z czterech pozycji, co robię. Następnie, po kliknięciu na button "Przeładuj stronę" znów mam na liście pierwszą pozycję. Dążę do tego, żeby skrypt "pamiętał" mój wybór.

Kod: Zaznacz cały

<?php
  echo '<form action="index.php" method="post">';
  $dane = mysql_query("SELECT * FROM tabela");
  echo '<select name="liczba_porzadkowa">';
  while ($wiersz = mysql_fetch_assoc($dane))
  {
    echo '<option>'.$wiersz["nazwa"].'</option>';
  }
  echo '</select>';
  echo '<input type="submit" name="przeladuj" value="Przeładuj stronę">';
?>
Domyślam się, że muszę sprawdzić, co znajduje się w "liczba_porzadkowa", co też robię, a także mogę ją przypisać do zmiennej:

Kod: Zaznacz cały

<?php
  echo $_POST['liczba_porzadkowa'];
  $zmienna = $_POST['liczba_porzadkowa'];
?>
Zastanawiam się, co zrobić, aby po wybraniu "Przełąduj stronę" wybór był taki, jaki wskazałem.
Bardzo proszę o podpowiedź aby rozwiązać mój problem.
gagata
Posty: 11
Rejestracja: pt paź 01, 2010 8:53 pm
Kontakt:

Re: Lista wyboru z bazy. Dlaczego nie pamieta mojego wyboru?

Post autor: gagata »

Hej
Ja bym to zrobiła tak:

Kod: Zaznacz cały

<?php
if (isset($_POST['liczba_porzadkowa'])) {
  $zmienna=$_POST['liczba_porzadkowa'];
} else {
  $zmienna=1; //albo po prostu zostaw $zmienna="";
}
  echo '<form action="index.php" method="post">';
  $dane = mysql_query("SELECT * FROM tabela");
  echo '<select name="liczba_porzadkowa">';
  while ($wiersz = mysql_fetch_assoc($dane))
  {
    if ($zmienna==$wiersz['liczba_porzadkowa']) echo '<option selected="selected">'; else echo '<option>';
    echo $wiersz["nazwa"].'</option>';
  }
  echo '</select>';
  echo '<input type="submit" name="przeladuj" value="Przeładuj stronę">';
?>
Albo jakoś tak. Najpierw sprawdzasz czy istnieje zmienna typu post i sprawdzasz jej wartość. A potem porównujesz - czy lp danego rekordu jest równa tej zmiennej. Jeśli tak - to zaznaczasz, jeśli nie - to lecisz dalej ;)
ODPOWIEDZ