Autor Zpráva
martin_k
Profil *
Dobrý den vsem, mam jeden malý problém s programováním v php:
Potrebuji t pole select, které mam definované v xhtml následovně:

<select name="obor[]" multiple>
<option value="L">Lyceum</option>
<option value="E">ELN</option>
<option value="S">Stojař</option>
<option value="B">Babovky</option>
</select>

po kliknuti na submit aby formulář vypsal dané zvolené políčko, php script který jsem si udelal vypadá takhle:

for($i=0;$i<=4;$i++) {
  switch($_POST["obor[$i]"]) 
  {
    case 'L': echo "Tvuj obor je lyceum</br>" ; break;
    case 'E': echo "Tvuj obor je eln</br>" ; break;
    case 'S': echo "Tvuj obor je strojar/br>" ; break;
    case 'B': echo "Tvuj obor je babovka</br>" ; break;
  }
}

Ale píse mi to nsledujíci chybu:

Notice: Undefined index: obor[0] in C:\Program Files (x86)\UsbWebserver\Root\leaving.php on line 44
Notice: Undefined index: obor[1] in C:\Program Files (x86)\UsbWebserver\Root\leaving.php on line 44
Notice: Undefined index: obor[2] in C:\Program Files (x86)\UsbWebserver\Root\leaving.php on line 44
....
panther
Profil
martin_k:
Ta chyba říká, že nejsou definovány indexy 0-2 v poli, čiliže pole je prázdné. Vypiš si
var_dump($_POST)
a uvidíš, co se ti odešle/odeslalo.


Tady ti bude stačit
<select name="obor">...</select>
<?php
if(!empty($_POST['obor'])) {
    switch ($_POST['obor']) {
        case 'L': echo '...'; break;
        ....
    }
}
?>


EDIT: přehlédl jsem multiple. Omlouvám se.
martin_k
Profil *
Vypsal tohle:

["obor"]=> array(1) { [0]=> string(1) "S" }
martin_k
Profil *
Jinak potrebuji aby si mohl uzivatel mohl zvolit vice oborů ze select, nevim jestli to tvuj vyseuvedeny skript řeší, já to řešil cyklusem FOR
Jake898
Profil
Takto by to mělo jít.
for($i=0; $i<=4; $i++)
{
  switch($_POST["obor"][$i])  // zde je zmena
  { 
    case 'L': echo "Tvuj obor je lyceum</br>" ; break; 
    case 'E': echo "Tvuj obor je eln</br>" ; break; 
    case 'S': echo "Tvuj obor je strojar/br>" ; break; 
    case 'B': echo "Tvuj obor je babovka</br>" ; break; 
  } 
} 


A možná bych to udělal takto:
$obory = Array('L' => 'lyceum', 'E' => 'eln', 'S' => 'strojar', 'B' => 'babovka');

foreach ($_POST['obor'] as $key)
{
  echo 'Tvůj obor je ' . $obory[$key] . '.<br />';
}
martin_k
Profil *
Vyreseno nasledovně:
  

foreach($_POST["obor"] as $num => $key) {   // projede hodnoty v poli obor// num je cislo cyklu 0,1,2,3  // key je hodnota v poli
     switch($key) 
  {
    case 'L': echo "Tvuj obor je lyceum</br>" ; break;
    case 'E': echo "Tvuj obor je eln</br>" ; break;
    case 'S': echo "Tvuj obor je strojar</br>" ; break;
    case 'B': echo "Tvuj obor je babovka</br>" ; break;
  }
  }


Dekuji vsem za pomoc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: