Autor Zpráva
tess
Profil *
Zdravím,
řeším tu checkbox ve formuláři. Formulář se zpracuje a ty položky u kterých je zaškrtnutý checkbox by se měly smazat. Jenže problém je v tom, že pokud není zaškrtnutý, tak se jak víte, vůbec neodesílá. Proto se pak při zaškrtnutí jednoho checkboxu (např. třetího) a následného mazání cyklem, smaže první položka v databázi. Jak se dá toto ošetřit?

A ještě jak se vyhnout hlášení "Undefined index: smazat in ... on line 7", které samozřejmě vznikne při nezaškrtnutí žádného políčka? Děkuji

<?php
  include("connect.php");
  $auto=$_POST['auto'];
  $vykon=$_POST['vykon'];
  $rychlost=$_POST['rychlost'];
  $id=$_POST['id'];
  $checked=$_POST['smazat'];
  
  $connect=mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
  mysql_select_db($db);
  $rows=mysql_num_rows(mysql_query("select * from auta"));
  
  for ($i=0;$i<$rows;$i++) {
    if ($checked[$i]!=null){
      mysql_query("delete from auta where id='".$id[$i]."'",$connect);
    }
    $update="update auta set auto='".$auto[$i]."',vykon='".$vykon[$i]."',rychlost='".$rychlost[$i]."' where id='".$id[$i]."'";
    mysql_query($update,$connect);
  }
   
  mysql_close($connect);
  header("Location:formular.php");
  exit;
?>
Alphard
Profil
Pojmenujte si ho s id. name="del[$id]"
Tori
Profil
tess:
Udělejte z checkboxů pole, kde indexy budou odpovídat ID v databázi:
while($row = mysql_fetch_assoc($nejakydotaz))  {
  echo "<input type='checkbox' name='smazat[" . $row['id'] . "]' value=1>";
}
Při zpracovávání formuláře jen projdete pole $_POST['smazat'] (případně použijte array_keys).
tess
Profil *
Alphard, Tori
Super, děkuji vám oběma za popostrčení.
CZechBoY
Profil
místo Foru s MySQL_Query je lepší udělat jeden dotaz s
MySQL_Query("DELETE FROM xxx WHERE id IN('".Implode("','",$idecka)."') ");
radas
Profil *
Tori:
taky se může stat že $row['id'] nemusi byt chronologicky zasebou (1,2,3,4)..a for byl mimo rozsah idček...když už tak tak přes foreach nebo vytvařet input s vlastnimi indexy name='smazat[]' ale asi bych to dělal tak jak píše CZechBoY
Tori
Profil
radas:
Proč reagujete na mne, když o for vůbec nemluvím?

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:

0