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: Checkbox a PHP

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

Aktivity
Avatar
David
Člen
Avatar
David:3.4.2017 14:44

Zdravím, nevím si rady s uvedeným problémem. Z databáze si vypíšu data do tabulky a každý údaj obsahuje checkbox. Chtěl bych smazat vybrané (podle checkboxu) údaje z DB na kliknutí tlačítka. Když dumpnu proměnou $selected,tak je prázdná. Díky za info.

          <?php
                $query = $spojeni->prepare("SELECT id, nameUser, passwordUser FROM uzivatelebezpecne");
                $query->execute();
                $row = $query->fetch (PDO::FETCH_OBJ);

                if (isset($_POST['sent'])) {
                    $selected = $_POST['selected'];
                        for($i=0;$i<count($selected);$i++){
                            $del_id = $selected[$i];
                            $query = $spojeni->prepare("DELETE FROM uzivatelebezpecne WHERE id='$del_id'");
                            $query->execute();

                        }

                        if($query){echo"Smazano";
                        }

                }


                echo "<table class=\"table table-striped\">
<thead>
    <tr>
      <th>Id</th>
      <th>Jméno</th>
      <th>Heslo</th>
      <th>Výběr</th>
    </tr>
  </thead>
<tbody>";
                while ($row = $query->fetch(PDO::FETCH_OBJ)) {
                    echo " <tr>
      <td>$row->id</td>
      <td>$row->nameUser</td>
      <td >$row->passwordUser</td>
      <td><input name='selected[]' type='checkbox'  value=".$row->id."></td>
    </tr>";
                }
                echo "</table>
</tbody>";
                ?>
Editováno 3.4.2017 14:46
 
Odpovědět
3.4.2017 14:44
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na David
David Hynek:3.4.2017 17:21

jestli se nepletu tak i checkboxu je selected rezervovaný slovo. Jako jméno je tedy nevhodné. Navíc nevidím prvky jako form a input se submitem. Navíc, měl bys odlišit generování formuláře a jeho zpracování. A pro úpravu v tabulce, nejdřív zpracuj příkaz a pak jej prováděj. Když budeš mazat 1 položku tak je to v pohodě, ale když jich budeš mazat 100 tak ti DB poděkuje za rychlost.

Nahoru Odpovědět
3.4.2017 17:21
Čím víc vím, tím víc věcí nevím.
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na David
David Hynek:3.4.2017 17:42

tak zpět, selected se jako název fakt dá použít, ale být tebou tak jej změním.
Jinak po odeslání formuláře bys mohl vytáhnout "checknuté" inputy do výpisu a pak je vložit rovnou do dotazu pěkně najednou:

if(isset($_POST["sent"]))
{
if(isset($_POST["selected"]))
  {
  $dotaz = implode(", ",$_POST["selected"]);
  echo $dotaz; // jen pro příklad, budeš tam mít něco jako 1, 2, 5 atd.
  }

}
Editováno 3.4.2017 17:42
Nahoru Odpovědět
3.4.2017 17:42
Čím víc vím, tím víc věcí nevím.
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 3 zpráv z 3.