| Autor | Zpráva | ||
|---|---|---|---|
| Ghosting Profil |
#1 · Zasláno: 27. 3. 2009, 16:24:42
Zdravím zkouším rozjet mazání dat metodou _post, poskládal jsem si tento kód:
<?
$output.="<form action='' method='post' name='mazat'>\n";
//Mazání
if(isset($_POST['mazat']))
{
$delete=Mysql_query ('DELETE FROM `"._mysql_prefix."-emaily` WHERE id = "' .$_POST['mazat']. '"; ');
}
//Výpis
$dotaz="SELECT * FROM `"._mysql_prefix."-emaily`";
$vysledek = MySQL_Query($dotaz);
while ($zaznam = MySQL_Fetch_Array($vysledek))
{
$email_smellter = $zaznam["email_smellter"];
$id = $zaznam["id"];
$output.="<input type='checkbox' name='".$id."' /> ".$email_smellter."<br />\n";
}
$output.="<input type='submit' name='mazat' value='Smazat'>\n";
$output.="</form>\n";
?>Data se nesmažou, nevíte ke by mohl být problém? |
||
| Watchick Profil |
#2 · Zasláno: 27. 3. 2009, 16:37:12
Nejsem si tedy jist, ale vy pouze nastavite promennou $delete, ale nikde ji neprovedete, pokud s tim delete prikazem nehodlate nadale pracovat, tak doporucuji dat misto
$delete=Mysql_query ('DELETE FROM `"._mysql_prefix."-emaily` WHERE id = "' .$_POST['mazat']. '"; ');Mysql_query ('DELETE FROM `"._mysql_prefix."-emaily` WHERE id = "' .$_POST['mazat']. '"; '); |
||
| Mastodont Profil |
#3 · Zasláno: 27. 3. 2009, 16:41:32
Připojení k databázi je voláno někde jinde?
|
||
| Ghosting Profil |
#4 · Zasláno: 27. 3. 2009, 16:42:41
Mastodont
Ano, je. Watchick Dobře změním to. |
||
| Ghosting Profil |
#5 · Zasláno: 27. 3. 2009, 16:50:34
Watchick
Když tak bych potom udělal podmínky $delete=Mysql_query ('DELETE FROM `"._mysql_prefix."-emaily` WHERE id = "' .$_POST['mazat']. '"; ');
if(isset($_POST['mazat']))
if ($delete) {
$output.="Ne\n";
}
else {
$output.="Ano\n";
}Ale jde o to že se to nemaže. |
||
| AM_ Profil |
#6 · Zasláno: 27. 3. 2009, 17:04:32
Hodnota $_POST['mazat'] je 'Smazat', vždyť to je název toho inputu, co to má co dělat v sql dotazu?
|
||
| Jan Tvrdík Profil |
#7 · Zasláno: 27. 3. 2009, 17:05:29 · Upravil/a: Jan Tvrdík
Ghosting:
mysql_query ("DELETE FROM `" . _mysql_prefix . "-emaily` WHERE `id` = " . intval($_POST['mazat'])); |
||
| AM_ Profil |
#8 · Zasláno: 27. 3. 2009, 17:12:03
Jan Tvrdík
Promiň, to myslíš vážně? kolik tak může být intval("Smazat")? Výstup bych trochu upravil: $output.="<input type='checkbox' name='todel-".$id."' /> ".$email_smellter."<br />\n"; A následně kód:
$delete_id = array();
foreach ($_POST as $key=>$val){
if (substr($key, 0, 6) === 'todel-'){
$delete_id[] = "`id`='".substr($key, 6)."'";
}
}
$delete_condition = implode(' OR ', $delete_id);
mysql_query ("DELETE FROM `" . _mysql_prefix . "-emaily` WHERE $delete_condition");
|
||
| Jan Tvrdík Profil |
#9 · Zasláno: 27. 3. 2009, 17:16:00 · Upravil/a: Jan Tvrdík
AM_:
„Promiň, to myslíš vážně?“ Moje chyba, přehlédl jsem se. Jinak bych použil spíš: $output .= "<input type='checkbox' name='selected[$id]' /> " . $email_smellter . "<br />\n"; a následně $selected = array_keys($_POST['selected']); Výsledný kód <?php
$output .= "<form action='' method='post' name='mazat'>\n";
//Mazání
if (isset($_POST['mazat'], $_POST['selected'])) {
$selected = array_keys($_POST['selected']);
$conditions = array();
foreach ($selected as $id) {
if (!is_numeric($id)) continue;
$conditions[] = "`id` = $id";
}
$condition = implode(' OR ', $conditions);
MySQL_Query ("DELETE FROM `" . _mysql_prefix . "-emaily` WHERE " . $condition);
}
//Výpis
$vysledek = MySQL_Query("SELECT * FROM `" . _mysql_prefix . "-emaily`");
while ($zaznam = MySQL_Fetch_Array($vysledek)) {
$email_smellter = $zaznam["email_smellter"];
$id = $zaznam["id"];
$output .= "<input type='checkbox' name='selected[$id]' /> " . $email_smellter . "<br />\n";
}
$output .= "<input type='submit' name='mazat' value='Smazat'>\n";
$output .= "</form>\n";
?> |
||
| Ghosting Profil |
#10 · Zasláno: 27. 3. 2009, 17:22:21
Jan Tvrdík
AM_ Díky moc kluci. |
||
| Ghosting Profil |
#11 · Zasláno: 27. 3. 2009, 17:24:44
Ještě se zeptám jakej je rozdíl mezi tím co napsal AM_ a Jan Tvrdík? Fungují oba dva.
|
||
| Jan Tvrdík Profil |
#12 · Zasláno: 27. 3. 2009, 17:34:00
Ghosting:
To moje je mírně vylepšená verze toho kódu od AM_. Základní rozdíl je ten, že já posílám vybrané checkboxy jako pole + jsem přidal jednoduchou ochranu proti SQL injection. |
||
|
Časová prodleva: 17 let
|
|||
0