Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z wyświetlaniem menu w formularzu.
Forum PHP.pl > Forum > Przedszkole
Kwant
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.
gulldarek
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. ?>
Kwant
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...
gulldarek
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".
Kwant
Dziękuje, działa.
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.