hromadny formular
hromadny formular
Da sa spravit taky formular, kde po odoslani ulozi do databazy hodnoty roznym ID v tabulke? napr. vytiahnem si z databazy 5 mien, ku kazdemu menu mam textarea, upravim ich v textarea dam submit a upravi tie mena naraz a v jednom formulari, bez nejakeho preklikavania
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
Kód: Vybrať všetko
echo "<form action=edit.php method=post>";
echo "<p><table cellspacing=1 width=40% align=center cellpading=5 bgcolor=000000>";
while($row = MySQL_Fetch_Array($result))
{
$id = $row['id'];
$meno = $row['meno'];
echo " <tr><td class=b align=center>$meno<input type=hidden value=$id name=id>
Zverejniť<input type=checkbox value=1 name=active> ";
}
echo "<tr><td class=b><input type=submit name=submit value=Uprav>";
echo "</table>";
echo "</form>";no pouzivam to pri UPDATE,
Update:
form:
Update:
Kód: Vybrať všetko
function uprav() {
$id=$_POST["id"];
$active=$_POST["active"];
$sql = "UPDATE tabulka set active='$active'...... WHERE id=$id ";
$res = mysql_query($sql);
if($res) echo "Upravené";
else echo "Chyba!";
}Kód: Vybrať všetko
echo "<form action=edit.php method=post>";
echo "<p><table cellspacing=1 width=40% align=center cellpading=5 bgcolor=000000>";
while($row = MySQL_Fetch_Array($result))
{
$id = $row['id'];
$meno = $row['meno'];
echo " <tr><td class=b align=center>$meno<input type=hidden value=$id name=id[]>
Zverejniť<input type=checkbox value=1 name=active[]> ";
}
echo "<tr><td class=b><input type=submit name=submit value=Uprav>";
echo "</table>";
echo "</form>";Ja by som radšej odporúčal ten prvý spôsob, ale keď chceš ten druhý, tak to musíš urobiť takto:(alebo niečo podobné)
Kód: Vybrať všetko
function uprav() {
$id=$_POST["id"];
$active=$_POST["active"];
for ($i = 0; $i < count($id) {
$sql = "UPDATE tabulka set active='$active[$i]'...... WHERE id=$id[$i]";
$res = mysql_query($sql);
if($res) echo "Upravené";
else echo "Chyba!";
}
}Je tam chyba:
Kód: Vybrať všetko
for ($i = 0; $i < count($id); $i++) {cez echo to vypisalo ked som oznacil 3 mena taketo nieco:
takze ono to zobere vsetky ID aj ked nebudu oznacene a preto upravi prve alebo posledne ID, nedalo by sa s tym nieco robit?
Kód: Vybrať všetko
ID:1
Meno:meno1
ID:2
Meno:meno2
ID:3
Meno:meno3
ID:4
ID:5
Otestuj, či $action[$i] niečo obsahuje. Napr. tam pridaj riadok (do toho cyklu for)
Kód: Vybrať všetko
if ($action[$i] == "") continue;Môžeš v tom value v použiť priamo id. Potom bude pole $active[] obsahovať id tých položiek, ktoré chceš meniť.
Kód: Vybrať všetko
<input type=checkbox value=$id name=active[]>Stale je nejaky problem. Na priklad: mam 3 mena ku kazdemu menu 2 checkboxy, jeden checkbox s hodnotou 1 a druhy ma hodnotu 3, ked kazdemu menu oznacim len checkbox s hodnotou 1 vsetko je v poriadku, ale ked dam napriklad prve meno - checkbox1 a druhe meno - checkbox2 tak prvemu menu prideli hodnotu checkboxu1 + checkboxu2 cize 4 a to druje ignoruje, neviem ci to tymto sposobom pojde spravit?
Takto nejako by to bolo tou prvou metódou:
Kód: Vybrať všetko
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>
<body>
<?php
if (isset($_POST['submit'])) {
$i = 0;
while (isset($_POST["id_" . $i])) {
$id = $_POST["id_" . $i];
$check1 = isset($_POST["check1_" . $i]) ? TRUE : FALSE;
$check2 = isset($_POST["check2_" . $i]) ? TRUE : FALSE;
echo "ID: ", $id, "; checkbox-1: ", $check1 ? "true" : "false", "; checkbox-2: ",
$check2 ? "true" : "false", "<br>";
$i++;
}
} else {
echo '<form method="post">';
for ($i = 0; $i < 10; $i++) {
$id = "id-$i";
echo "Meno$i <input type=hidden value=\"$id\" name=id_".$i.">".
"Zverejnit<input type=checkbox value=\"1\" name=check1_$i> ".
"Nieco ine<input type=checkbox value=\"1\" name=check2_$i><br>";
}
echo "<input type=submit name=submit value=Uprav>";
echo "<form>";
}
?>
</body>
</html>