Autor Zpráva
Honzicek
Profil *
Ahoj, předem upozorňuji, že v DB a jeho spolupráci s php jsem úplný začátečník.
Jde mi o to, že mám tabulku s akcemi, která obsahuje 5 sloupců - oddíl, kterého se akce týká, místo, kde se akce koná, dále typ akce, datum akce a pak datum pro řazení.

Tabulka se zobrazuje v pořádku, admin přístup se zápisem do DB taky jde v pohodě.

Můj problém je vymazávání příspěvků, myslíte ,že byste mi někdo poradil jak na to?
juriad
Profil
Přidej do databáze další číselný sloupec id, který bude mít nastavený AUTOINCREMENT.

Na stránku s akcí přidej:
<a href="/admin/smazat-akci.php?akce=123">Smazat akci</a>

smazat-akci.php:
# ... ověření uživatele ...

if(isset($_GET['akce'])) {
  $query = 'DELETE FROM akce WHERE id = '. intval($_GET['akce']);
  # ... spusť dotaz ...
}

header('Location: /seznam-akci.php');
Honzicek
Profil *
Ještě jednou.
1, odkaz na stránky ke smazání přidán, <a href="..//smazat-akci.php?akce=71">Smaž</a> - kde mi to generuje automaticky ID místo71
2, to smazání mi stále nejde, můžete mi někdo poradit? tabulka se jmenuje Terminovka
Honzicek
Profil
if(isset($_GET['akce'])) {
  $query = 'DELETE FROM Terminovka WHERE id = '. intval($_GET['akce']);
  # ... spusť dotaz ...
}
 

header('Location: /terminovka-admin.php');



?>

Kde vezmu To Akce???


Nějak tomu nerozumí
marcus33cz
Profil
Proměnná akce se ti předá v poli $_GET po kliknutí na ten odkaz. Zkus si proměnné vypsat a možná to lépe pochopíš.
Honzicek
Profil
Nefunguje mi to, někdo na pomoc?

$query = 'DELETE FROM Terminovka WHERE id = '. $_GET['akce'];
Jan Tvrdík
Profil
Asi by bylo dobré zmínit, že uvedený způsob obsahuje CSRF zranitelnost. Aby to bylo bezpečné, musel by se tam přidávat nějaký náhodně generovaný token. Viz např. php.vrana.cz/cross-site-request-forgery.php.
Honzicek
Profil
Ohledně bezpečnosti, k tomuto přidávání, budou mít přístup jen 2 lidé, takže neočekávám problém, spíše mi jde o tu funkčnost


Na stránce s administrací mám odkaz <a href="..//smazat-akci.php?akce=<?php echo $zaznam[id] ?>">Smaž</a>

a v souboru smazat-akci.php toto:
<?php
mysql_connect('wm20.wedos.net', '***', '***');//database connection 
mysql_select_db("d16062_hrasek"); 
mysql_query('set names utf8'); 



  $query = 'DELETE FROM Terminovka WHERE id = '. $_GET['akce'];
 




$vybratie = MySQL_Select_Db("d16062_hrasek"); 
if (!$vybratie) { 
  die('Nemozem sa spojit s databazou: ' .mysql_error()); 
}
?>



A stále se to nemaže :(
juriad
Profil
Řádky 14 – 17 vyhoď a nahraď za:
mysql_query($query);

Tys totiž nikdy ten dotaz nespustil.
Tori
Profil
Honzicek:
Nedávejte veřejně své přihlašovací údaje k DB a odmažte si je i odtud.

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: