Diskuze: Problem s $_POST

PHP PHP Problem s $_POST American English version English version

Avatar
sunspinx
Člen
Avatar
sunspinx:

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. července 22:15
Avatar
Mego
Člen
Avatar
Mego:

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í
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 20. července 22:33
Radšej 15 minút skôr, ako 15 sekúnd neskoro...
Avatar
sunspinx
Člen
Avatar
Odpovídá na Mego
sunspinx:

Jej dakujem :D toto ma vobec nenapadlo

 
Nahoru Odpovědět 21. července 20:47
Avatar
sunspinx
Člen
Avatar
Odpovídá na Mego
sunspinx:

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

 
Nahoru Odpovědět 21. července 20:48
Avatar
Odpovídá na sunspinx
Martin Štěpánek (Enormyk):

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. července 17:45
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
Avatar
sunspinx
Člen
Avatar
Odpovídá na Martin Štěpánek (Enormyk)
sunspinx:

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

 
Nahoru Odpovědět 25. července 9:45
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na sunspinx
Jiří Gracík:

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

Nahoru Odpovědět 25. července 13:49
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na sunspinx
Martin Štěpánek (Enormyk):
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. července 15:13
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
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.