Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zapamiętywanie wyboru
Forum PHP.pl > Forum > PHP
mkzor56
Witam.
Mam taki problem. Nie wiem jak zrobić, aby po wysłaniu formularza i po powrocie na stronę został te same opcje co wybrałem wcześniej. Czasami jest do wprowadzenia dużo danych, a co chwila wybranie z list jest męczące. Z góry proszę o pomoc.

Przesyłam kod, może jakoś pomoże.

  1. <form action="dodaj_ocene_f5.php" method="post">
  2. <center><select name="nazwa">
  3. <?php
  4. require "connection.php";
  5. // wywołujemy funkcję connection()
  6. connection();
  7.  
  8. $wynik1 = mysql_query("SELECT * FROM users WHERE id>1")
  9. or die('Błšd zapytania');
  10.  
  11. if(mysql_num_rows($wynik1) > 0) {
  12. while($r = mysql_fetch_assoc($wynik1)) {
  13. echo "<option >".$r['numer'].".".$r['imie']." ".$r['nazwisko']."</option>";
  14. }}
  15. ?>
  16.  
  17.  
  18.  
  19. </select>
  20. </center><br>
  21.  
  22.  
  23. <center>&nbsp;&nbsp;Przedmiot:&nbsp;&nbsp; <select name="przedmiot">
  24. <?php
  25.  
  26.  
  27. $wynik1 = mysql_query("SELECT * FROM przedmioty order by nazwa ")
  28. or die('Błšd zapytania');
  29.  
  30. if(mysql_num_rows($wynik1) > 0) {
  31. while($r = mysql_fetch_assoc($wynik1)) {
  32. echo "<option >".$r['nazwa']."</option>";
  33. }}
  34. ?>
  35.  
  36.  
  37. </select>
  38. &nbsp;&nbsp;Ocena:&nbsp;&nbsp; <input type="text" name="ocena" /> <select name="ocena_cd">
  39. <option > &nbsp;</option>
  40. <option >+</option>
  41. <option >-</option>
  42. </select> <br><br>
  43. &nbsp;&nbsp;Typ:&nbsp;&nbsp; <select name="typ">
  44. <option >Zwykla</option>
  45. <option >Sprawdzian</option>
  46. </select>
  47. <br><br>
  48. <input type="submit" value="dodaj" class="button"/></center>
  49. </form>
Tomplus
Stwórz serię warunków które dodają do odpowiednich <OPTION> dodatkowy atrybut SELECTED

Kod
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="vw">VW</option>
  <option value="audi" selected>Audi</option>
</select>


np.
Kod
<?php
$option[$_POST['ocena_cd']] = 'selected';
?>
<select name="ocena_cd">
<option <?=$option[] ?> >  </option>
  <option <?=$option['+'] ?> >+</option>
  <option <?=$option['-'] ?> >-</option>
  </select>

mkzor56
ciężko mi jakoś to sobie wyobrazić jak to by mogło wyglądać .

Sorki nie widziałem że dopisałeś coś jeszcze
Tomplus
Dopisałem przykład, a kolejny:
  1. $option[$_POST['przedmiot']] = 'selected';
  2. while($r = mysql_fetch_assoc($wynik1)) {
  3.  
  4. echo "<option ".$option[$r['nazwa']]." >".$r['nazwa']."</option>";
  5. }


Chodziaż lepiej korzystać z kluczy numerycznych w <option> zamiast nazw. dodając po prostu atrybut value=""

np.
  1. echo "<option value='".$r['id']."' ".$option[$r['id']]." >".$r['nazwa']."</option>";


I w złym wątku napisałeś ten temat, takie rzeczy to w Przedszkolu należy się pytać.
mkzor56
Rozumiem. Dziękuje.

A mam jeszcze jedno pytanie bo niestety nie działa mi to poprawnie.
Bo jak wyśle formularz to na kolejnej podstronie mam zwykly link do strony poprzedniej gdzie znajduje się formularz. I niestety nie zapamiętało mi że wybrałem np. +.

  1. <a href="dodaj_ocene.php">Powrót </a>


Po kliknięciu niestety zostaje ponownie wybrana ta pierwsza opcja . Sorki za kłopot
Tomplus
Musisz rozbudować skrypty.

Mój przykład jest skuteczny jeżeli wykonujesz polecenie submit i wysyłasz metodą POST zawartość formularza, jeżeli klikasz na odnośniki to nie masz już wartości POST.
Jeżeli chcesz aby wartości były zapamiętywane bez względu na jakiej jesteś stronie musisz skorzystać albo z COOKIE albo SESSION

ale sposób jest prosty:

  1. if(isset($_POST)) {
  2. $_SESSION = $_POST;
  3. }


i w kolejnych krokach zamiast POST wpisujesz SESSION
Oczywiście musisz na początku strony dodać session_start(); [nie może być żadnych spacji, znaków przed tą zmienną bo wywali Ci błąd nagłówka]
mkzor56
Coś mi nie działa to bo mnie wylogowuje. bo mam coś takiego
na stronie gdzie jest formularz:

  1. <?php
  2.  
  3. if (!isset($_SESSION['zalogowany']) || $_SESSION['type'] != 1)
  4. {
  5.  
  6. header('Location: index.php');
  7. exit();
  8.  
  9. }
  10.  
  11. ?>


$_SESSION['type'] != 1 - tylko admin ma type 0

jak wkleje

  1. if(isset($_POST)) {
  2. $_SESSION = $_POST;
  3. }


to niestety nie trybi coś.



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.