| Autor | Správa |
Matho
 Užívateľ
 Založený: 25.07.2007 Príspevky: 217 Bydlisko: Kálnica city
 | Zaslal: Ut 01.01.08 20:59 |   |
Robim vymazavanie v redakcnom systeme.. Mam checkbox policka ktore mam pomenovane cislami od 1 az po tolko kolko je v databaze sprav... Kazde policko obahuje value - id riadka v databaze.
Pri kliku na vymazat sa mi premenne zaskrtnutych policok prenasaju do oblasti php scriptu, kde sa mi vymazavaju riadky v databaze:
cyklus while mi prebehne premenne od nazvu 1 az po tolko kolko som mal checkoxov a pri tych, ktore nie su prazdne vymaze riadkok v databaze ktory sa rovna obsahu tej premenej. Ja by som vsak potreboval vyriesit oblast napisanu cervenym - aby som sa mohol pomocou $_POST opytat na obsahy premenych
| citácia: |
if (empty($_REQUEST['id']) ){
$hodnota1=$_POST[';
$hodnota2=$cislo;
$hodnota3='];
$hodnota=$hodnota1.$hodnota2.$hodnota3;;
$cislo=1;
while( $cislo <=($_POST['i']) ){
//vymazat natrvalo dany text z databaze
$sql_vymaz="DELETE FROM $sql_tabulka WHERE id='$hodnota' ";
$vysledok_vymaz= mysql_query($sql_vymaz) or die ( mysql_error() );
echo "$cislo";
++$cislo;
}
}
|
|
| |
    |
 |
suchy
 Čestný člen
 Založený: 17.10.2006 Príspevky: 1770
 | Zaslal: Ut 01.01.08 21:32 |   |
neni jednoduchsie $_POST[$cislo]; ??? inak hento v tom cervenom ti myslim ani fungovat nebude |
_________________ A Real Programmer might or might not know his wife's name. He does, however, know the entire ASCII code table. | |
     |
 |
vl4kn0
 Užívateľ
 Založený: 22.11.2007 Príspevky: 254 Bydlisko: 127.0.0.1
 | Zaslal: Ut 01.01.08 21:41 |   |
no. musim uznat ze mas dost divnu syntax:) poviem ti ze premennu $_REQUEST by som nepouzival lebo ti nerozozna co sa posiela methodou GET a co POST, a to moze nejaky zlomysleny uzivatel vyuzit.
dalej na to aby sa mi zobrazii tie inputy by som dal.
| kód: | $sql = 'SELECT id FROM table_name WHERE 1';
$result = mysql_query($sql);
$num = mysql_num_rows($result);
for($i = 1; $i <= $num; $i++)
{
echo '<input type="checkbox" name="' . $i . '">';
} |
a potom na mazanie by som dal asi
| kód: | $sql = 'DELETE FROM table_name WHERE';
for($i = 1; $i <= $num; $i++)
{
if (!isset($_POST[$i]))
{
$sql .= ' id = ' . $_POST[$i] . ' AND';
}
}
$result = mysql_query($sql); |
ta bodka pred = v $sql je dolezita pretoze sa ti vlastne do jedneho sql prikazu vzdy pridavaju inputy ktore chces zmazat. nehovorim ze toto riesenie je moc efektivne. a tiez neviem ci to bude fungovat. s tym sql sa treba este pohrat. nemam tu apache aby som to vyskusal. ale ved skus. ale bna takyo princyp by som to robil ja |
_________________ PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber... | |
     |
 |
Matho
 Užívateľ
 Založený: 25.07.2007 Príspevky: 217 Bydlisko: Kálnica city
 | Zaslal: Ut 01.01.08 21:54 |   |
no ja som vedel ze to v tom cervenom mam blbost ale dufal som ze tak aspon pochopite o co mi slo... no ono sa jedna o administracne rozhranie cize tam by sa uzivatelovi ani nemalo podarit dostat.. ale dik za upozornenie na to request.. poskusam uvidim co vykuzlim:D
edit://
heh jake jednoduche.. to suchy: to som teda nevedel ze mozem to $_POST davat aj premenne ked tam nedam ' uz mi to ide a nemusim tam nic viac prerabat... ja ked som to skusal tak som daval $_POST['$cislo'] co je samoyrejme blbost |
| |
    |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: Ut 01.01.08 22:11 |   |
riesil som nieco podobne, ale ako hromadna uprava poloziek v kosiku
skus pouzit funkciu foreach a to druhu metodu
| kód: | foreach (array_expression as $key => $value)
statement |
|
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
Tominator
 Zablokovaný užívateľ
 Založený: 21.02.2007 Príspevky: 4009
 | Zaslal: Št 03.01.08 14:52 |   |
jj foreach, to je asi najlepšie (mne to poradil suchy)
funguje (ako napisal qacer):
| kód: |
foreach($_POST["hodnota"] as $premenna)
$prikaz=mysql_query("DELETE FROM tabulka WHERE ID =$premenna");
|
|
| |
  |
 |
vl4kn0
 Užívateľ
 Založený: 22.11.2007 Príspevky: 254 Bydlisko: 127.0.0.1
 | Zaslal: Št 03.01.08 15:08 |   |
fcia foreach sa v tomto pripade vyuzit neda a to z par dovodou.
premennej post mozes priradit len jeden index
cize ako pisal tominator
| kód: |
foreach($_POST['index'] as $hodnota)
{
}
|
ti fungovat nebude pretoze premenna $_POST['index'] je prvok pola ale sam o sebe pole nieje cize nemas co prechadzat.
mozes prechadzat jedine premennu $_POST co pole je ale tym by si prechadzal aj ine inputy a buttony a tak. |
_________________ PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber... | |
     |
 |
Tominator
 Zablokovaný užívateľ
 Založený: 21.02.2007 Príspevky: 4009
 | Zaslal: Pi 04.01.08 16:01 |   |
keby však do checkboxov dal
a potom dal hodnotu do value
tak to fungovať BUDE  |
| |
  |
 |
vl4kn0
 Užívateľ
 Založený: 22.11.2007 Príspevky: 254 Bydlisko: 127.0.0.1
 | Zaslal: Po 07.01.08 18:19 |   |
| Tominator napísal: | keby však do checkboxov dal
a potom dal hodnotu do value
tak to fungovať BUDE  |
a to sa s tebou stavim ze to fungovat nebude:) pretoze co ty tu davas to je drist  |
_________________ PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber... | |
     |
 |
kmsa
 Užívateľ
 Založený: 26.07.2006 Príspevky: 1383 Bydlisko: Slovakia-Košice
 | Zaslal: Po 07.01.08 20:17 |   |
vl4kn0 nerob si z toho nic asi sa zle ucil o poliach |
_________________ CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých | |
    |
 |
chrono
 Skúsený užívateľ
 Založený: 13.11.2007 Príspevky: 808
 |
| vl4kn0 napísal: | a to sa s tebou stavim ze to fungovat nebude:) pretoze co ty tu davas to je drist  | Tak trochu neviem, čo vlastne tvrdíš. Keď dáš prvkom meno name[], tak vznikne pole name, ktoré bude obsahovať hodnoty atribútov value zaškrtnutých checkboxov (takže to fungovať [možno s menšími] bude). |
| |
  |
 |
vl4kn0
 Užívateľ
 Založený: 22.11.2007 Príspevky: 254 Bydlisko: 127.0.0.1
 |
| chrono napísal: | | Tak trochu neviem, čo vlastne tvrdíš. Keď dáš prvkom meno name[], tak vznikne pole name, ktoré bude obsahovať hodnoty atribútov value zaškrtnutých checkboxov (takže to fungovať [možno s menšími] bude). |
keby si dal ako hovoris name="name[]" tak ti v po odoslani vznikne premenna $_POST['name[]'], to co ty asi myslis by muselo byt $_POST[$name[]] vtedy by to fungovalo ale to nemozes nijako nakonfigurovat aby to davalo takyto vysledok. to ako tvrdis by mozno fungovalo tak este v php 3/4 ked nebola vypnuta moznost register_globals. teraz by to urcite nefungovalo
a dalsia vec. ako by si to pole potom volal? $_POST['name'.[$key]] ?
lebo toto hodi syntax error. a co tak $_POST["name[$key]"] ? dalsi syntax error + ked to dam do foreach vypise ze ma zly argument pretoze $_POST['name'] NIEJE POLE!!! |
_________________ PODPIS BOL ZMAZANY Z DOVODU NERESPEKTOVANIA PRAVIDIEL FORA!!!
Je povolených max. 5 riadkov s veľkosťou písma 9 (rozlíšenie 1280x1024px).
Sprava pre vedenie fora: ake nerespektovanie pravidiel. ved som mal v podpise citaciu na 2 riadky omg? lol? no a este jabber ale to neni moja chyba ze tu nemate input aj na jabber... | |
     |
 |
stenley
 Moderátor
 Založený: 27.07.2007 Príspevky: 3776 Bydlisko: Bratislava Vek: 27
 |
boze moj, co tu vy riesite, Tominator ma pravdu, ak sa da hodnota atributu name pole, tak po odoslani formulara vznikne z tej premennej logicky tiez pole, ktore obsahuje hodnoty zaskrtnutych checkboxov z atributu value.
Ak neviete, ako sa potom volaju jednotlive prvky takejto premennej, tak sa staci pozriet do manualu do casti viacrozmerne polia.
| kód: | | $_POST['hodnota'][$key] |
a nie blbosti typu $_POST['name[]'] a podobne... |
_________________ Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB | |
    |
 |
andreas
 Užívateľ
 Založený: 02.01.2008 Príspevky: 123 Bydlisko: Košice
 | Zaslal: So 12.01.08 15:59 |   |
Tiez nechapem, preco tu davaju rady taki, ktori si to este nikdy neodskusali v praxi... |
_________________ NB: MacBook Pro 8.1, Toshiba Portege M800-107, Acer 1410-742G25
PC:
Zdroj: Corsair HX 520W | CPU: Core 2 Quad Q9650 + Noctua NH-C12P | MB: Asus P5Q Turbo | RAM: 2x 2GB DDR2 Corsair XMS2 1066 MHz | VGA: Sapphire Radeon HD4890 1GB | HDD: Seagate 500GB SATAII + 2x 250GB | CASE: AeroCool ExtremEngine 3T | 24" LCD HP LP2475w, repro Genius SW-HF5.1 5000 | |
  |
 |
|