Autor Zpráva
petrkolos
Profil
Zdravím mám formulář kde si uživatel zadá počet lidí se kterýma byl na akci (označení). Stránka se refreshne a zobrazí se přesný počet selectu, kde si uživatel vybere jména. Selecty jsou name="uzivatel-1" atd. Potřeboval bych nějaký nápad jak tenhle počet neznámích proměnných nasypat do databáte v poly $pole($uzivatel1,$uzivatel2,$uzivatel3,.....) Podle počtu lidí co si on zadal. Díky
Kcko
Profil
petrkolos:
Takhle nějak a $selectNum si nahraď tím čím nazýváš kde si uživatel zadá počet lidí

<? 
    $selectNum = 10;

    if (!empty($_POST))
    {
        foreach ($_POST['select'] as $select)
        {
            print_r($select); // hodnota jednotlivych nastavenych selectu .. s tím už si udělej co potřebuješ.
        }
    }
?>

    <form method="post">
<? 
    
    for ($i = 1; $i <= $selectNum; $i++)
    {
        ?>
        <select name="select[<?= $i?>]">
            <option value="1">Ahoj</option>
            <option value="2">Čau</option>
            <option value="3">Nazdar</option>
        </select>
        <?
    }

?>
    <input type="submit" value="Odeslat" />
    </form>
mimochodec
Profil
petrkolos:
zadá počet lidí se kterýma byl na akci (označení). Stránka se refreshne a zobrazí se přesný počet selectu, kde si uživatel vybere jména.

To mi připadá jako hodně nepohodlné. Nebylo by lepší fázi zadání počtu přeskočit, rovnou nabídnout všechny a k nim dá zatržítka?
juriad
Profil
mimochodec:
Nebo rovnou select multiple? Spolu s name="kamaradi[]", což PHP bude přímo interpretovat jako pole.
petrkolos
Profil
Jdu to zkusit ale vypadá to že to bude ono moc ti děkuji :)
mimochodec
Profil
juriad:
Nebo rovnou select multiple?

Já ho nemám moc rád. Znám dost lidí, kteří ho jako uživatelé neumí použít.
juriad
Profil
Kcko:
Nepoužívej zkrácené otevírací značky <?, spoustě lidí nebudou fungovat.
Po odeslání formuláře POSTem musíš přesměrovat. Jelikož se jedná o akci měnící stav aplikace, není možné použíť GET, který by jinak byl bezpečný.

mimochodec:
Stačí přeci dát poznámku pod/bokem, že má uživatel vybrat více položek s controlem.
Kcko
Profil
juriad:
Ok první připomínku beru, druhou ne. To už bysme do toho mohli zamíchat bezpečnost proměnných, logiku kódu atd.
petrkolos
Profil
Díky za pomoc už mi to funguje a nakonec jsem se na ty selecty vykašlal a udělal jsem tam checkbox
petrkolos
Profil
Ještě mám jeden problém. Jak mám udělat aby se mi ten array hodil do jedny bunky v mysql. Když dam insert tak se tam dá akorát první číslo a když insert hodím do toho cyklu tak se vytvoří několik nových řádků v tabulce. Díky :)
juriad
Profil
petrkolos:
Ale ty chceš vytvořit více řádků. Viz Diskuse JPW: Některé časteji řešené dotazy pro MySQL - FAQ » Více hodnot ve sloupci. Vkládat pole do jedné „buňky“ je vždy špatně.
petrkolos
Profil
Asi to udělám tak že vytvořím ještě jednu tabulku pro to označování :) A kdyby se to mělo hodit do jedny buňky tak by to vypadalo jak?
mimochodec
Profil
petrkolos:
V jedné buňce to nemá co dělat. Je to špatný postup, který určitě dokážeš vymyslet sám a jde jen o to, jestli ti jeho nevýhody dojdou předtím, než se do toho pustíš, nebo až během toho.
juriad
Profil
V PHP bys použil funkci implode.
Ale opravdu to nedělej, nezbylo by to pak nic jiného než hledat pokládat SQL dotazy pomocí operátoru LIKE '%hodnota%', což je ukrutně pomalé - rozdíl je v tom, že databáze musí projít úplně všechny záznamy oproti malého množství (logaritmického, pamatuješ-li si ze školy logaritmus). Navíc nějaké dotazy tak nejde vůbec zrealizovat.
petrkolos
Profil
Nechám si poradit :) Udělám ještě jednu tabulku. Díky

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: