Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z wyświetlaniem menu w formularzu., Za pomocą tablicy asocjacyjnej.
Kwant
post 3.05.2009, 10:24:50
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.05.2009

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


Witam. Uczę się pisać w PHP. Po kilku działach chciałem w końcu coś samemu napisać.

No i wszystko było fajnie dopóki nie chciałem zrobić rozwijanego menu w formularzu z danymi w tablicy asocjacyjnej. No niby to menu zrobiłem, ale kiedy wybieram opcję, to zamiast pokazania się potem odpowiedniego tekstu np. piłka nożna, to pojawia się wybrana opcja (piłka).

Nie mam pojęcia co zepsułem. Proszę o pomoc, ponieważ jestem "żółtodziobem".

Oto kod:
  1. <?
  2. $opcje = array ('slonik'=>'slon', 'slonko'=>'slonce');
  3.  
  4. if ($_POST['opcja']) {
  5. $znal = 0;
  6. foreach ($opcje as $klucz => $wartosc) { if ($klucz == $_POST['opcja']) {$cowybrano = $wartosc; $znal =1; }}
  7. if (!$znal) { $cowybrano = 'no'; }
  8. echo "$cowybrano <br><br><a href='ucze.php'>X</a>";
  9. } else {
  10. echo "<form action='ucze.php' method='post'><select name='opcja'><option value=''>ZAL!!!";
  11. foreach ($opcje as $klucz => $wartosc) { echo"<option value=\"$klucz\">".$wartosc; }
  12. echo "</select><input type='submit' value='wyslij'></form>"; }
  13. ?>


P.S To jest testowy kod, który napisałem, gdy zobaczyłem, że coś zepsułem. Niestety, on też dobrze nie działa.

Ten post edytował Kwant 3.05.2009, 10:30:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
gulldarek
post 3.05.2009, 11:13:42
Post #2





Grupa: Zarejestrowani
Postów: 156
Pomógł: 15
Dołączył: 13.09.2003
Skąd: London

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


Nie do konca rozumiem co stanowi dla Ciebie problem. Kod ktory napisales wykonuje sie poprawnie.

Jesli chcesz, zeby po wyslaniu formularza pokazal sie tekst z wybranym kluczem tablicy, to zmieniasz linie 12 na:

$cowybrano = $klucz;

  1. <?php
  2. $opcje = array ('slonik'=>'slon', 'slonko'=>'slonce');
  3.  
  4. if ($_POST['opcja'])
  5. {
  6.  $znal = 0;
  7.  foreach ($opcje as $klucz => $wartosc)
  8.  {
  9.    if ($klucz == $_POST['opcja'])
  10.    {
  11.      $cowybrano = $wartosc;
  12.      $znal = 1;
  13.    }
  14.  }
  15.  
  16.  if (!$znal)
  17.  {
  18.    $cowybrano = 'no';
  19.  }
  20.  
  21.  echo $cowybrano . ' <br /><br /><a href="ucze.php">X</a>';
  22. }
  23. else
  24. {
  25.  echo "<form action=\"ucze.php\" method=\"post\"><select name=\"opcja\"><option value=\"\">ZAL!!!</option>";
  26.  foreach ($opcje as $klucz => $wartosc)
  27.  {
  28.    echo "<option value=\"$klucz\">" . $wartosc . '</option>';
  29.  }
  30.  
  31.  echo "</select><input type=\"submit\" value=\"wyslij\" /></form>";
  32. }
  33. ?>


Ten post edytował gulldarek 3.05.2009, 11:14:12
Go to the top of the page
+Quote Post
Kwant
post 3.05.2009, 11:26:03
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.05.2009

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


Dziękuję za pomoc, ale nadal to nic nie dało.

Tzn. Gdy wybieram w formularzu np. slon, to po wysłaniu formularza wyskakuje slon zamiast slonik. Być może wina serwera...
Go to the top of the page
+Quote Post
gulldarek
post 3.05.2009, 11:34:40
Post #4





Grupa: Zarejestrowani
Postów: 156
Pomógł: 15
Dołączył: 13.09.2003
Skąd: London

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


Oczywiscie, ze wyskakuje slon zamiast slonik, bo:

W formularzu drukujesz pole typu select w nastepujacy sposob:

<option value="slonik">slon</option>

Po wybraniu tej opcji i wyslaniu formularza zmienna $_POST['opcja'] przymie zgodnie z prawda wartosc "slonik".

Nastepnie jedziesz petla po mozliwych wartosciach i sprawdzasz, czy $_POST['opcja'] nie jest przypadkiem rowne kluczowi danego elementu tablicy. $_POST['opcja'] jest rowne slonik, wiec wykonuje sie nastepujacy fragment kodu: $cowybrano = $wartosc;

I tu jest Twoj problem, bo jesli chcesz w zmiennej $cowybrano miec "slonik" to jako jej wartosc musisz uzyc zmiennej $klucz: $cowybrano = $klucz;

Czyli:

  1. <?php
  2. $opcje = array ('slonik'=>'slon', 'slonko'=>'slonce');
  3.  
  4. if ($_POST['opcja'])
  5. {
  6. $znal = 0;
  7. foreach ($opcje as $klucz => $wartosc)
  8. {
  9.   if ($klucz == $_POST['opcja'])
  10.   {
  11.     $cowybrano = $klucz;
  12.     $znal = 1;
  13.   }
  14. }
  15.  
  16. if (!$znal)
  17. {
  18.   $cowybrano = 'no';
  19. }
  20.  
  21. echo $cowybrano . ' <br /><br /><a href="ucze.php">X</a>';
  22. }
  23. else
  24. {
  25. echo "<form action=\"ucze.php\" method=\"post\"><select name=\"opcja\"><option value=\"\">ZAL!!!</option>";
  26. foreach ($opcje as $klucz => $wartosc)
  27. {
  28.   echo "<option value=\"$klucz\">" . $wartosc . '</option>';
  29. }
  30.  
  31. echo "</select><input type=\"submit\" value=\"wyslij\" /></form>";
  32. }
  33. ?>


Po wybraniu "slon" i wyslaniu formularza wyswietli Ci sie "slonik".
Go to the top of the page
+Quote Post
Kwant
post 3.05.2009, 11:40:02
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.05.2009

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


Dziękuje, działa.
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: 14.08.2025 - 06:55