| 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: 14 let
|
|||
0