KAVALEK.NET 
-Blog
Linux Web development C/C++ Python LaTeX Rallye Ostatní
-Projekty
PyGaM PHP WIS Class PHP Atom Class
-Webdesign
Nabídka Reference
-Ostatní
Aktuality Odkazy Informace
-Osobní
Kontakt CV
-Intranet
Mail server Print server Security camera

KUBUNTU
XHTML Valid
Smarty
jQuery
View Tomáš Kavalek's profile on LinkedIn

Web development: Hromadné zpracování checkboxů

Zobrazit obsah
Zobrazit komentáře | Zobrazit pouze komentáře

Jak vyřešit odeslání zaškrnutých checkboxů z formuláře, která se vhodně používá např. pro hromadné mazání položek z databáze. Nejznámějším příkladem z praxe je použití ve webových rozhraních e-mailů. Pro demonstraci použijeme ukázkový formulář checkBoxes-Form.php. Odkaz na ukázkový kód, který obsahuje i demonstraci správného označování, resp. odznačování, všech checkboxů pouze daného formuláře. Ostatní checkboxy nejsou ovlivněny.

checkBoxes-Form.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  <title>KAVALEK.NET - Check Boxes</title>
 </head>
<body>
 <form id="checkBoxesForm" method="post" action="checkBoxes-Action.php">
  <div>
   <input type="checkbox" name="checkbox[]" id="checkbox_1" value="1" /> Check box 1<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_2" value="2" /> Check box 2<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_3" value="3" /> Check box 3<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_4" value="4" /> Check box 4<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_5" value="5" /> Check box 5<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_6" value="6" /> Check box 6<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_7" value="7" /> Check box 7<br />
   <input type="checkbox" name="checkbox[]" id="checkbox_8" value="8" /> Check box 8<br />
  </div>
  <input type="submit" name="action" value="Upload" />
 </form>
</body>
</html>

checkBoxes-Action.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  <title>KAVALEK.NET - Check Boxes</title>
 </head>
<body>
<?php
  if(isset($_POST["checkbox"]) && isset($_POST["action"]) && ($_POST["action"] == "Upload")) {
    printf("<h1>Checked checkboxes</h1>");
    foreach($_POST["checkbox"] as $key => $value) {
      printf("Checkbox with value %s was checked!<br />", $value);
    }
    printf("<br />");
    // Show SQL delete command
    $sql_where = "id='" . implode("' OR id='", $_POST["checkbox"]) . "'";
    printf("DELETE FROM test_table WHERE %s", $sql_where);
  }
?>
</body>
</html>

Největší využití nabízí výše uvedený skript zejména při hromadném odstraňování záznamů z databáze (jak již bylo výše uvedeno). Jako ukázka slouží pouze výpis tohoto příkazu v souboru checkBoxes-Action.php v části okomentované jako Show SQL delete command. Pomocí funkce implode a malé úpravy (prefix a sufix) docílíme požadovaného tvaru klauzule WHERE. Jednoduchý a transparentní kód a stejně takové je i jeho použití. Pro hromadné odstraňování se bude hodit i následující kód, tentokrát v JavaScriptu, pro označení, resp. zrušení označení, všech checkboxů. Uvedený kód můžeme vložit přímo do souboru checkBoxes-Form.php, případně uložit do samotného souboru a poté vložit pomocí <script type="text/javascript" src="checkBoxes.js"></script> (s tím si ale určitě každý poradí). Důležité je procházet pouze checkboxy daného formuláře (jediný parametr funkcí), abychom neovlivňovali i jiné checkboxy, které by se mohly na stránce vyskytovat. Obě funkce projdou všechny elementy daného formuláře a pokud se jedná o checkbox, změní hodnotu checked na true, resp. false.

checkBoxes.js

function select_all(e) {
  for(var i = 0; i < document.getElementById(e).elements.length; i++) {
    if(document.getElementById(e).elements[i].type == "checkbox")
      document.getElementById(e).elements[i].checked = true;
  }
}

function unselect_all(e) {
  for(var i = 0; i < document.getElementById(e).elements.length; i++) {
    if(document.getElementById(e).elements[i].type == "checkbox")
      document.getElementById(e).elements[i].checked = false;
  }
}

Nyní lze kdekoliv v kódu formuláře vytvořit ovládací prvek, např. takto:

<a href="javascript:void(0);" title="Select all" onclick="select_all('checkBoxesForm');">Select all</a>
<a href="javascript:void(0);" title="Unselect all" onclick="unselect_all('checkBoxesForm');">Unselect all</a>

29.12.2006 12:26:23 - 1700x
Hodnocení (187)

Rating - 55% 55%

DOBRÉ | ŠPATNÉ

Komentáře k tématu 'Hromadné zpracování checkboxů' (0 komentářů)

Vložit komentář | Zobrazit pouze komentáře | Nahoru
Ještě nebyl vložen žádný komentář. Pro vložení prvního komentáře klikněte zde.

Vyhledávání

 
Google

Reklama

Knihy
© 2004 - 2008 Tomáš Kavalek - Obsah webu, zdrojové kódy a projekty lze používat a dále šířit dle GNU GPL. V diskuzích mně můžete tykat.