Autor Zpráva
Senky
Profil
Zdravím.
Pokúšam sa vytvoriť vymazanie viacerých tabuliek naraz cez checkboxy. Vytvoril som toto:
if($_POST['delete']){
  mysql_query("DELETE FROM notes WHERE id IN (".implode(',',$_POST['checkboxes']).")", $con);
  Header("Location: index.php");  
}

A môj form vyzerá takto: (je tam while, ktoré funguje - skontorlované v zdrojovom kóde)
echo "<form action='delete.php' method='post'>";
...
echo "<input type='checkbox' value='".$rows['id']."'>";
...
echo "<input type='submit' value='Vymazať'>";
echo "<input type='hidden' value='delete'>";
echo "</form>";

A čo to spraví? - nič, proste ma to vráti späť na index.php, ale všetky riadky v databáze ostali, keďže ich tam vidieť opäť...
Vie niekto kde je chyba?
Ďakujem...
Majkl578
Profil
to se nedivim kdyz _POST['checkboxes'] neexistuje
Senky
Profil
Ja som to našiel na nete akože to sú všetky zaškrtnuté checkboxy... tak neviem...
Akacko
Profil
Senky
Ty checkboxy nemají atribut name. Nejsříve jím ho musíš přidat a udělat z něj pole.
echo "<input type='checkbox' name='checkboxes[]' value='".$rows['id']."'>";


Potom ti to bude fungovat. BTW, kde jsi našel takový blábol?
Senky
Profil
Pridal som tam name='checkboxes[]' , ale stále je to o tom istom....neviem fakt kde je chyba...

Akacko
http://osdir.com/ml/php.database/2003-02/msg00550.html
AM_
Profil
zkoušel jsi si ten dotaz vypsat a spustit samostatně třeba v myadminu?
Akacko
Profil
Senky
Možná proto, že tam nemáš input s názvem delete.
if($_POST['delete'])
Tak nesplníš podmínku.


edit: Na té adrese to píšou dobře. Jen sis to špatně přeložil.
Senky
Profil
Uf no tak ja som tam pridal echo "<input type='hidden' value='delete' name='delete'>"; (Akacko dik za upozornenie). No a taktiež som tam pridal or die(mysql_error()) a čo nevidím:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Avšak kde je potom chyba?
mysql_query("DELETE FROM notes WHERE id IN (".implode(',',$_POST['checkboxes']).")") or die(mysql_error());
Akacko
Profil
Senky
Zkus toto:
$sql = mysql_query("DELETE FROM notes WHERE id IN (".implode(',',$_POST['checkboxes']).")");
echo $sql;

Podívej se co z toho vznikne a měl bys vidět v čem je chyba.
AM_
Profil
Akacko
zřejmě jsi měl na mysli
mysql_query($sql = "DELETE FROM notes WHERE id IN (".implode(',',$_POST['checkboxes']).")");
echo $sql;

v tvém případě to nevypíše nic ($sql bude false)
Akacko
Profil
AM_
Jo tohle jsem myslel :) dík za opravu.
Senky
Profil
mysql_query($sql = "DELETE FROM notes WHERE id IN (".implode(',',$_POST['checkboxes']).")");
echo $sql;

Vypíše mi to DELETE FROM notes WHERE id IN (). Čiže sql by to aj rado vykonalo, ale nemá čo. Ja však odosielaniu checkboxov do php skoro vôbec nerozumiem, tak kde je potom chyba?
Akacko
Profil
Senky
Zaznačil jsi před odesláním formuláře alespoň jeden checkbox?

Tady je funkční kód, co jsem poskládal z ústřižků co jsi sem poslal. Tak to podle něj udělej.
<?php
if($_POST['send'])
{
  echo "DELETE FROM notes WHERE id IN (".implode(',',$_POST['checkboxes']).")";
}
?>
<form action='' method='post'>
<input type='checkbox' name="checkboxes[]" value='a'>
<input type='checkbox' name="checkboxes[]" value='b'>
<input type='submit' name="send" value='Vymazať'>
</form>
Senky
Profil
Už som si našiel chybu. Skúšal som aj niečo iné, ako ste mi tu písali, a nechal som v name namiesto checkboxes[] checkID[].Zmenil som to, a teraz som skúsil toto:
if($_POST['delete']){
  mysql_query($sql = "DELETE FROM notes WHERE id IN(".implode(',',$_POST['checkboxes']).");");
  echo $sql;
}

A ono mi to vypísalo (pri zaškrtnutí jedného checkboxu)
DELETE FROM notes WHERE id IN(11);

A taktiež som mal zlý názov tabuľky (hupsssss) a už to šľape ako má....
Ďakujem Vám Akacko a AM_ za pomoc. Vážne sa hanbím za svoju hlúpu chybu. Už to nechám tak, som rád že to funguje...Ďakujem mnoho krát...

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: