NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Problem s $_POST

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Vladislav Domin:20.7.2016 22:15

Mam jeden problem, ktory sa tyka inputov a $_POST, ked upravujem len jedneho uzivatela, tak je vsetko v poriadku, akonahle ale idem upravit viac ako jedneho uzivatela naraz, tak sa vzdy upravi len ten prvy uzivatel a druhy ostane nezmeneny ... Bol by som rad ak by mi niekto vysvetlil preco to nefunguje + ak by sa mi dostalo pomoci ako to fixnut :-)

<?php
if($_POST) {
    $id_string = $_GET['id'];
    $ids = explode(',', $id_string);
    foreach ($ids as $id) {
        Db::query('UPDATE users SET email = ?, meno = ?, priezvisko = ?, admin = ? WHERE user_id = ?', $_POST['email-' . $id], $_POST['meno-' . $id], $_POST['priezvisko-' . $id], $_POST['admin-' . $id], $id);
    }
}
<?php
$id_string = $_GET['id'];
$ids = explode(',', $id_string);
foreach($ids as $id):
    $user = Db::queryOne('SELECT * FROM users WHERE user_id = ?', $id);
    if($user):?>
        <form method="post" name="form" id="useradd">
            <div class="nadpis_small"><h2>Uživateľ ID: #<?=$user['user_id'] ?></h2></div>
            <table class="tabulka_small" border="0" cellpadding="0" cellspacing="0">
                <tr>
                    <th>Typ</th>
                    <th>Hodnota</th>
                    <th>Status</th>
                </tr>
                <tr>
                    <td class="bold">Email: </td>
                    <td><input type="email" name="<?='email-'.$id ?>" id="email" value="<?=$user['email'] ?>"</td>
                    <td>
                        <div id="status"></div></td>
                </tr>
                <tr>
                    <td class="bold">Heslo: </td>
                    <td><input type="password" name="<?='heslo-'.$id ?>" placeholder="Zadajte len v pripade zmeny!"></td>
                    <td></td>
                </tr>
                <tr>
                    <td class="bold">Meno: </td>
                    <td><input type="text" name="<?='meno-'.$id ?>" value="<?=$user['meno'] ?>"</td>
                    <td></td>
                </tr>
                <tr>
                    <td class="bold">Priezvisko </td>
                    <td><input type="text" name="<?='priezvisko-'.$id ?>" value="<?=$user['priezvisko'] ?>"</td>
                    <td></td>
                </tr>
                <tr>
                    <td class="bold">Admin </td>
                    <td>
                        <select name="<?='admin-'.$id?>" form="useradd">
                            <option selected disabled>Vyberte možnosť</option>
                            <option value="1">Áno</option>
                            <option value="0">Nie</option>
                        </select>
                    </td>
                    <td></td>
                </tr>
            </table>
        </form>
    <?php endif;
endforeach;
?>
 
Odpovědět
20.7.2016 22:15
Avatar
Lava
Člen
Avatar
Lava:20.7.2016 22:33

Ty pre každého užívateľa vygeneruješ vlastný formulár a tak sa ti odošle iba pre toho užívateľa, v ktorého <form> klikneš na button. Potrebuješ povkladať týchto užívateľov do jedného <form> a odosielať ich jedným buttonom.

Vlastne tam nikde nevidím submit button... ako to odosielaš?

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
20.7.2016 22:33
Aspartám, sacharín, to je môj vitamín
Avatar
Odpovídá na Lava
Vladislav Domin:21.7.2016 20:47

Jej dakujem :D toto ma vobec nenapadlo

 
Nahoru Odpovědět
21.7.2016 20:47
Avatar
Odpovídá na Lava
Vladislav Domin:21.7.2016 20:48

Odosielam to cez link, ktory je mimo formu (metodou onclick="docu­ment.forms['for­m'].submit();)

 
Nahoru Odpovědět
21.7.2016 20:48
Avatar
Odpovídá na Vladislav Domin
Martin Štěpánek :24.7.2016 17:45

Ještě bych ti doporučil místo ukládání mail-id atd.. prostě odesílat pole mail[] atd... a v postu to jen projet přes foreach() ;-)

Nahoru Odpovědět
24.7.2016 17:45
Všechno jde naprogramovat, chce to jen čas a chuť...
Avatar
Odpovídá na Martin Štěpánek
Vladislav Domin:25.7.2016 9:45

To som uz skusal, len som nevedel ako prejst vsetky inputy cez foreach, po jednom viem :D

 
Nahoru Odpovědět
25.7.2016 9:45
Avatar
Odpovídá na Vladislav Domin
Neaktivní uživatel:25.7.2016 13:49

Nemůžeš. Musíš použít for nebo nějakou hezkou funkci na iteraci pole s indexem jako parametr.

Nahoru Odpovědět
25.7.2016 13:49
Neaktivní uživatelský účet
Avatar
Odpovídá na Vladislav Domin
Martin Štěpánek :25.7.2016 15:13
if($_POST){
        foreach($_POST['jmeno'] as $radek){
                //nějaká práce s $radek, ve kterém je uloženo jméno
        }
}
<input name="jmeno[]" type="text"><br>
<input name="jmeno[]" type="text"><br>
<input name="jmeno[]" type="text"><br>
<input type="submit" value="Odeslat"><br>
Nahoru Odpovědět
25.7.2016 15:13
Všechno jde naprogramovat, chce to jen čas a chuť...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.