Autor Zpráva
special_mj
Profil
Ahoj, mám jednu otázočku ohladom skolskeho projektu:

mám select menu, v ktorom mám hodnoty vytiahnuté z DB. Po submite sa mi načíta stránka zadanyukol.php kde sa mi má vybraná hodnota zobraziť. Viete mi poradiť akým spôsbom zobraziť vybranú položku? V zadany ukol proste potrebujem na vystupe dve hodnoty - tu z o select menu (zatial nemam) a tu z input-u (tu mam). Dakujem za rady.

zadejukol.php:
<form action="zadany.php" method="get">
    <label for="select">
Komu zadat novej úkol:
        <select id="users">
<?php
$sql = "SELECT * FROM users";
$result = mysql_query($sql) or die (mysql_error());
while ($row = mysql_fetch_array($result))
{
    $id=$row["id"];
    $username=$row["username"];
    $options.="<OPTION VALUE=\"$id\">".$username;
}
?>
    <option>
        <? echo $options ?>
    </option>
</select>
<br />
Typ úkolu:


<input type="radio" name="ukol" value="bla1">Ukol 1</input>
<input type="radio" name="ukol" value="bla2">Ukol 2</input>
<input type="radio" name="ukol" value="bla3">Ukol 3</input>

<br />
<input type="submit" value="zadej úkol">

</form>

a potrebujem to dostať sem(udaje z input type su v pohode, tie mi idú):

zadanyukol.php

<?php
include 'core/init.php';
protect_page();
include 'includes/overall/header.php';


echo $_GET['users'];

switch ($_GET["ukol"]) {
    case "bla1":
        echo 'ukol 1';
        break;
    case "bla2";
        echo 'ukol 2';
        break;
    case "bla3":
        echo 'ukol 3';
        break;
    default: 
        echo 'nezadany ziadny ukol';
    }


    

include 'includes/overall/footer.php';
?>
Kajman
Profil
do <select id="users"> si přidejte atribut name. Ten pak bude také v poli $_GET.
special_mj
Profil
Ďakujem, ale stale mi to nezobrazuje želanu hodnotu. V zadanyukol.php to skusam volat len jednoducho
echo $_GET['users'];

no vracia mi to len hodnotu pre <input>
Kajman
Profil
A máte tam to name?
<select id="users" name="users">
special_mj
Profil
ano, samozrejme je to tam... čo by bolo optimálne spraviť podľa Vás?
han5vk
Profil
Máš niečo v <option value="?" atribúte? Čo vypíše var_dump($_GET)?
special_mj
Profil
nie, ten je prazdny.
...
$options.="<OPTION VALUE=\"$id\">".$username;
...
 <option>
        <? echo $options ?>
    </option>
han5vk
Profil
Je to nejaké divné. Vypisuješ celý option tag do ďalšieho option tagu. Čo to robí, keď to napíšeš takto:

<option value="<? echo $id; ?>">
<? echo $username; ?>
</option>

?
Samozrejme, keď tak pozerám na tvoj kód, tie optiony vypisuj v tom php cykle while():
while ($row = mysql_fetch_array($result))
{
    $id=$row["id"];
    $username=$row["username"];
    echo "<option value='".$id."'>".$username."</option>";
}

Prípadne, keď to chceš vypisovať až potom, tak to neuzatváraj do ďalšieho tagu <option>, a nastav id ako som napísal v prvom kóde. Malo by to fungovať.
special_mj
Profil
nie sú tam žiadne hodnoty.

čo odporúčaš teda?
han5vk
Profil
Kde nie sú hodnoty?
special_mj
Profil
cely kod mam je v prvom poste. nič som tam nemenil, pozri, prosím ťa, tam.
han5vk
Profil
Keď to máš presne ako v prvom poste, tak to ani nemôže fungovať, lebo tam select nemá name. Čo ti vypíše var_dump($_GET) po odoslaní formulára?
special_mj
Profil
array(1) { ["users"]=> string(0) "" }

som v tom kus novačik, takže sa ospravedlnujem, ak napíšem niečo odveci :)

upravil som to na : <select name="users"> a vysledok je rovnaky.
Kajman
Profil
special_mj:

A co to vypíše, když vyberete nějakého uživatele?
special_mj
Profil
zo select menu nevypíše žiadnu hodnotu, resp. echo nevypíše vybraného user-a. čo tam mám druhé menu - <input type="radio"> to mi vracia echo tak ako má.
han5vk
Profil
Opravil si si tie optiony, ako som ti písal v [#8]? Pretože do GET sa to očividne odosiela, čiže máš nastavené name pre select, ale neodošle sa hodnota. To $id čo nastavuješ pre value je zadané? Skús si na vygenerovanej stránke so selectom pozrieť zdroják. Ak v option value nebude nič, tak je premenná $id prázdna, a chyba je tam.
special_mj
Profil
Presne! a zistil som, že som pekný KÔŇ....úplne primitívna chyba tam bola. Ďakujem Vám za pomoc, veľmi ste mi pomohli. Vážim si to.

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: