Autor Zpráva
hazi
Profil *
Zdravim, prosim o radu s nasledujicim usekem kodu:

if (isset($_POST['delete'])) {

            $sql = "SELECT neco.id
                        FROM neco";

            $query = mysql_query($sql, $connection);
            while ($result = (mysql_fetch_row($query))) {
                if (isset($_POST[$result[0]])) {
                    $sql2 = "DELETE FROMneco
                                  WHERE neco.id = '".$result[0]."'";

                    $query2 = mysql_query($sql2, $connection);
                }
            }
        }


SQL dotaz je odzkousen, Vyrazem if (isset($_POST[$result[0]])) je mysleno zda je checkbox se jmenem $result[0] zaskrtnut ci ne.
Tusi nekdo kde delam chybu?
Dekuji
AM_
Profil
hazi:
DELETE FROMneco
to by mě zajímalo, jak jsi to odzkoušel a tohle ti prošlo.

jinak opravdu z tohohle kódu neumím vyvěštit, kde je problém, checkboxy v zásadě fungují, takže buď jde o tento překlep nebo se ti prostě neshoduje name u checkboxu a text v databázi.
hazi
Profil *
Chybi tam mezera, kdyz jsem nahrazoval skutecny nazvy za neco. Nazvem to nebude, kdyz tam dam staticky nazev checkboxu, ani tak se to neprovede.
AM_
Profil
a dojde ten tvůj kód k tomu dotazu a ten se nepovede, nebo k tomu dotazu ani nedojde? a kde se zasekne - kterou podmínkou neprojde?
hazi
Profil *
Takhle, pokud dam pryc podminku if (isset($_POST[$result[0]])), provede se vse a smazou se vsechny zaznamy. Jinak jmeno checkboxu je stejny jako id zaznamu, tzn. ze na kazdym radku je ke kazdymu zaznamu chceckbox, kterej ma stejny name jako zaznam id. Chci ale mazat jen zaskrtly polozky, proto je tam ta podminka a ta nefunguje. Na jinym miste mi bezproblemu funguje zapis $_POST[$result[0]], nefunguje ale uvnitr toho while cyklu.
AM_
Profil
hazi:
Na jinym miste mi bezproblemu funguje zapis $_POST[$result[0]], nefunguje ale uvnitr toho while cyklu.
Co??? to už je i na mě moc :)
vzhledem k tomu, že do proměnné result se dosazují jednotlivé řádky právě v tom while cyklu, jak může fungovat všude jinde a jen ne tady??? Co vůbec znamená, že ten zápis funguje? že to nevyhodí syntaktickou chybu? to zajisté ne.

Co to udělá, když na začátku vypíšeš
var_dump($_POST);
hazi
Profil *
Myslel jsem to tak, ze ten zapis, kdyz napisu $_POST[$result[0]] a ne neco ve stylu $_POST['name'] mi jinde funguje, ne konkretne tohle - $_POST[$result[0]].
Napise to tohle: array(1){["delete"]=>string(6)"Delete"}
Pise to stejny, at je neco zaskrtly nebo neni.
AM_
Profil
ukaž HTML kód formuláře.
hazi
Profil *
AM:
.
.
.
 while ($result = (mysql_fetch_row($query))) {
                echo "<form action='' method='post'>\n";
                echo "<tr><td><input type='checkbox' name='".$result[0]."' value='".$result[0]."'>&nbsp;</td>\n";
                echo "</form>";

.
.
.

Jako jmena tech checkboxu jsou dosazovana id jednotlivych zaznamu. V useku kodu, kterej je na zacatku tohoto threadu, je druhy SQL dotaz, ktery ma ale jako vysledek stejna idcka, uvadim jen pro prehlednost. V pripade, ze se tedy shoduje aktualni hodnota $result[0] se jmenem chceckboxu, mel by se provest DELETE SQL prikaz, ale neprovede se. Z toho mi vychazi, ze se neshoduji nazvy chceckboxu s jednotlivymi hodnotami $result[0]. Snad uvidis vic v tom formulari vys... Syntakticky je to samozrejme spravne, ale ten delete prikaz se nikdy takhle neprovede, coz je problem, na ktery neumim prijit a od zacatku ho tu resim :(

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: