Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Zapamiętywanie wyboru
mkzor56
post 18.10.2016, 18:17:08
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.10.2016

Ostrzeżenie: (0%)
-----


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>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Tomplus
post 18.10.2016, 18:24:18
Post #2





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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>



Ten post edytował Tomplus 18.10.2016, 18:27:31
Go to the top of the page
+Quote Post
mkzor56
post 18.10.2016, 18:27:48
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.10.2016

Ostrzeżenie: (0%)
-----


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

Sorki nie widziałem że dopisałeś coś jeszcze

Ten post edytował mkzor56 18.10.2016, 18:29:39
Go to the top of the page
+Quote Post
Tomplus
post 18.10.2016, 18:31:07
Post #4





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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

Ten post edytował Tomplus 18.10.2016, 18:32:13
Go to the top of the page
+Quote Post
mkzor56
post 18.10.2016, 18:37:57
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.10.2016

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Tomplus
post 18.10.2016, 20:50:26
Post #6





Grupa: Zarejestrowani
Postów: 1 875
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
mkzor56
post 19.10.2016, 11:34:11
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 9.10.2016

Ostrzeżenie: (0%)
-----


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



Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 08:06