Diskuze: HTML formulár - atribút name

PHP PHP HTML formulár - atribút name American English version English version

Avatar
eraz.gajdos
Člen
Avatar
eraz.gajdos:

Zdravím,

všetkých chcel by som vás poprosiť o pomoc, vytváram si fotogalériu pomocou html,php, javascript,css... Narazil som však na problem pri mazaní fotiek, mám x fotiek a pri každej mám jeden chekbox aby som si označil, ktorú fotku chcem vymazať, mazanie mi funguje, problém je však v tom, že vymažem vždy všetky fotky, pretože každý ten checkbox má rovnaký atribút name... Potrebujem do atribútu name priradiť php premennú aby v každom cykle nadobul inú hodnotu a teda som potom mohol rozlíšiť, ktorý checkbox je zaškrtnutý a ktorý nie... brázdil som internet asi 2 hodiny a našiel som, že by to malo fungovať nejako takto name = "<?php echo $premenna?>", tento výraz som skúšal, no neviem potom, že ako mám pristupovať k tomu namu cez POST... výraz $_POST["<?php echo $premenna?>"] je blbosť a ani mi to nefungovalo...s php a html som v podstate začiatočník, tak ak s tým máte niekto nejakú skúsenosť bol by som vďačný za každú pomoc.

 
Odpovědět 28.11.2015 8:31
Avatar
TomasGlawaty
Člen
Avatar
TomasGlawaty:

Ahoj,
V tom cyklu zapiš ten checkbox takto

<input type="checkbox" name="delete[]" value="$id" >

$id, protože každá hodnota musí byt jedinečná.
Potom ti po odeslání v POSTu přijde (pokud uživatel něco zaškrtl) pole s ids záznamu, které máš smazat.

$POST['delete'] = [
    0 => 4,
    1 => 7,
    2 => 16,
]

tzn. v tomto případě smažeš obrázky s ID 4,7,16,

Jinak používáš deprecated ovladače mysql a neošetřuješ dotazy!

Nahoru Odpovědět 28.11.2015 8:56
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
eraz.gajdos
Člen
Avatar
Odpovídá na TomasGlawaty
eraz.gajdos:

$POST['delete'] = [
0 => 4,
1 => 7,
2 => 16,
] neviem či som tomu správne porozmuel ale takéto hodnoty by som mal v poste keby som zaklikol checkboxy s idčko 4,7 a 16 ? Po pravde neviem ani, že čo myslíš pod tým, že neošetrujem dotazy, mám za sebou jednu asi 200 stranovú knihu a snažím sa nejako poskladať dokopy fotogalériu, ako semestrálnu prácu a po pravde pri písaní sa to vlastne aj učím ako to funguje

 
Nahoru Odpovědět 28.11.2015 9:14
Avatar
eraz.gajdos
Člen
Avatar
eraz.gajdos:

nerozumiem, že ako mám k tomu cez ten POST pristupovať v tom poli, doteraz som to robil nejako takto...
mám nejakým spôsbom napísať, že if($_POST['de­lete'][$i] == 'on') {
unlink($_POST['de­lete'][$i] );
} ?

Editováno 28.11.2015 9:22
 
Nahoru Odpovědět 28.11.2015 9:20
Avatar
TomasGlawaty
Člen
Avatar
Odpovídá na eraz.gajdos
TomasGlawaty:

ano, chceckboxy mají atribut name="delete[]" a value , ve kterém bude ID obrázku z databáze.
Zaškrtneš chceckboxy s value například 4, 7 a 16 a odešleš to. V $_POSTu ti pak příjde to pole co jsem psal ...

To pole pak projedeš cyklem:

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

        foreach ($_POST['delete'] as $id)
        {
                // v $id bude postupně 4 , 7 , 16

                /* DELETE FROM fotky WHERE id = $id; */
                /* smažeš obrázek z adresáře. */

        }

}

Jinak ta kniha u bude asi pěkně stará ;)
používáš ovladač mysql - vídíš, že i PHPStorm ti to škrtá, protože už je ten ovladač označen jako deprecated (v další verzi PHP bude odstraněn), doporučuji nahradit za mysqli, lépe PDO.
Při práci s databázi (vkládání, mazání záznamů ...) by se mělo použít prepared statements.
Vše okolo toho najdeš na internetu, i v oficiální dokumentaci PHP :)

Nahoru Odpovědět 28.11.2015 14:51
Člověk může dosáhnout čeho si zamane. Jen musí chtít, případně něco obětovat ...
Avatar
Martin Konečný (pavelco1998):

Jen pro budoucí bezpečnost doplním, že i přes to, že jsou ty hodnoty v checkboxech jako čísla, v tom SQL dotazu si ty hodnoty na číslo přetypuj (uživatel si je může upravit).

 
Nahoru Odpovědět 28.11.2015 15:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.