Autor | Zpráva | ||
---|---|---|---|
wasek2611 Profil |
Dobrý den,
omlouvám se, že sem píšu tento dotaz, který se tu řešil hodněkrát...Jen to nemůžu stále pochopit a rád bych, aby mi někdo řekl, co mám v kodu špatně. Chci, aby se vedle záznamů objevilo políčko smazat, které by smazalo záznam.. <?php function zobrazKoncertAdm() { if ($_GET['akce']=="odstran") { $id = $_GET[id]; mysql_query("DELETE * FROM bd_koncert WHERE id=$id"); } $sql="SELECT * FROM bd_koncert WHERE vlozeno<kdy ORDER BY id DESC "; $res=mysql_query($sql); echo '<table><colgroup><col id="prvni" /><col id="druhy" /><col id="treti" /><col id="ctvrty" /></colgroup>'; while ($row = mysql_fetch_array($res)) { echo '<tr><td>'.$row[id].'</td><td><a href="?akce=odstran&id='.$row[id].'">[x]</a></td> <td>'.$row['kdy'].'</td><td>'.$row['kde'].'</td></tr>'; } echo '</table>'; ?> } Název funkce je zavádějicí..dřív pouze měla zobrazit koncerty, nyní chci přidat, název změním až to bude fungovat. Vyzkoušel jsem dát klauzuli if() i na konec funkce, nefunguje to stále. Nezlobil bych se, kdyby někdo mi našel o této problematice nějaký článek. Zatím jsem našel jen příspěvky ve foru Děkuji mnohokrát. PS: Koukám, že když to posílím GETem tak bych to měl escapovat..jen moc nevím jak by to mělo v tomhle případě vypadat...stačí $id = addslashes($_GET[id]); $akce = addslashes($_GET['akce']); ? nebo jsem ještě na něco zapomněl |
||
Alphard Profil |
#2 · Zasláno: 3. 10. 2012, 07:10:56
Delete má v MySQL jinou syntaxi, bez *.
Stačí explicitně přetypovat na integer. mysql_query("DELETE FROM bd_koncert WHERE id=" . (int) $_GET['id']); |
||
Taps Profil |
wasek2611
Aby ti správně fungovalo smazání tak musíš funkci zobrazKoncertAdm |
||
peta Profil |
Viz Taps :) Jinymi slovy, pridej tam echo 111 a pak se sam sebe zeptej, proc se to echo nezobrazilo :)
function zobrazKoncertAdm() { echo 111; ... Ale tech chyb tam mas vice. Takze doporucuji zacit pouzivat error_reporting() a html validator a program, ktery obarvuje kod, treba pspad. tam najedes treba na prvni zavorku a misto aby ukazal, kde konci, tak zobrazi zavorku cervene jako chybu <?php function zobrazKoncertAdm() { // prvni zavorka neni ukoncena if ($_GET['akce']=="odstran") { $id = $_GET[id]; mysql_query("DELETE * FROM bd_koncert WHERE id=$id"); } $sql="SELECT * FROM bd_koncert WHERE vlozeno<kdy ORDER BY id DESC "; $res=mysql_query($sql); echo '<table><colgroup><col id="prvni" /><col id="druhy" /><col id="treti" /><col id="ctvrty" /></colgroup>'; while ($row = mysql_fetch_array($res)) { echo '<tr><td>'.$row[id].'</td><td><a href="?akce=odstran&id='.$row[id].'">[x]</a></td><td>'.$row['kdy'].'</td><td>'.$row['kde'].'</td></tr>'; } echo '</table>'; ?> } // toto neni ukonceni prvni zavorky ale html kod; ostatne ti to toto forum obarvilo zelene a ne cerne jako jine zavorky, ze? Tady mas treba priklad petova brutalniho scriptu, kde je tez mazani odkazem http://peter-mlich.wz.cz/web/mysql/pr/mysql_priklad.txt |
||
wasek2611 Profil |
Alphard: díky, tohle zkusim :) - moc díky upravil sem to, odstranil jsem hvězdičku a jede to :D moc díky :)
btw: ještě bych se rád zeptal, proč musim kontrolovat typ, přetypovávat? Když id je v db uložené jako int a ještě s autoincrementem Taps: volám to v jiném souboru...v tomto mám jen funkce, které používám Peta: používám Netbeans, díky za ty závorky, když člověk přesouvá části kodu ve funkci pomocí ctrl+c ctrl+v tak se mu to trochu přehází :D, díky za ten script |
||
mzk Profil * |
#6 · Zasláno: 3. 10. 2012, 15:52:13
wasek2611:
„ještě bych se rád zeptal, proč musim kontrolovat typ, přetypovávat? Když id je v db uložené jako int a ještě s autoincrementem“ musíš je špatné slovo - spíše bys měl (je to kůli bezpečnosti). Je málo pravděpodobný, že by ti tam počítač dal něco jiného než číslo, ale nezapomínej, že lidi jsou svin* :-P |
||
wasek2611 Profil |
#7 · Zasláno: 3. 10. 2012, 17:02:19
mzk:
no jo to je pravda..to mně nenapadlo...to vlastně get :D ..díky...jak jinak to ještě můžu zabezpečit ? ab y mi tam někdo nepodtrčil jiný sqlko ? |
||
jenikkozak Profil |
wasek2611:
Minimálně tak, že před smazáním ověříš, jestli ten, kdo si zobrazil „mazací adresu“, má na odstranění záznamu právo. |
||
wasek2611 Profil |
no já bych to rád ověřoval spíš heslem...na webu mám pouze heslo k administraci -> všichni správci ho používají..tedy nemám ani propojené tabulky cizími klíči...Proto bych rád věděl, jak udělat aby po odeslání se zobrazilo okénko (ne nová stránka) s výzvou "zadejte heslo". .
edit: nakonec to udělám jinak...nemusíte nad timhle už bloumat :D ...ted se jen musim naučit, jak funguje a jak používat session |
||
peta Profil |
V tom neni problem.
<?php session_start(); if (isset($_POST['user'])) {... ... $_SESSION['user'] = 123;} if (isset($_SESSION['user'])) {... SELECT * FROM users WHER user=$id ...} ?> $id = isset($_GET['id']) ? (int) $_GET['id'] : ''; // nevim, jestli int jde takto zkombinovat s podminkou if ($id>0) mysql_query("DELETE * FROM bd_koncert WHERE id=$id"); ... WHERE a.idkonc=$idkonc AND (b.laws>50 OR a.iduser=$iduser) |
||
Časová prodleva: 11 let
|
0