V naší aplikaci jsme se už přehoupli přes vkládání inzerátů, stránkování a výpisy, ale jedna věc zde přeci jen chybí. Je to mazání inzerátů. Často se stane, že nějakou věc sháníte a dáte si inzerát. Přijde vám pár odpovědí, některé dobré, některé méně výhodné, vyberete si a celou věc vyřídíte. Odpovědi vám však budou chodit stále, protože jste svůj inzerát nesmazali. Taková situace je pak někdy velice otravná, zvláště, když vám na váš rok starý inzerát chodí týdně deset reakcí. V bazarech je proto mazání inzerátů přímo nepostradatelnou záležitostí. Dnes vám ukážu takové jednoduché mazání inzerátů z tabulky. Pro návštěvníky bude navíc pohodlné, protože se nebudou muset nikam proklikávat, nýbrž mazací formulář najdou přímo v horní části každé sekce. Vloží ID a heslo ke svému inzerátu a skript se postará o smazání záznamu. Dost už povídání a pusťme se do práce. Jak už je u mých článků obvyklé, ukážu vám nejdříve hotový skript:
<?
if ($action == "delete"):
if (($action == "delete") && ($id != "") && ($password != "")):
spojeni();
@$select = MySQL_Query("SELECT * FROM koupim WHERE PASSWORD LIKE '$password' ");
@$select2 = MySQL_Query("SELECT * FROM koupim WHERE ID LIKE '$id' ");
if(!$select):
echo "Špatné heslo.";
exit;
elseif(!$select2):
echo "Špatné ID.";
exit;
elseif($select != $select2):
$x = MySQL_Fetch_Array($select); //řádek v tabulce obsahující zadané heslo
$y = MySQL_Fetch_Array($select2); //řádek v tabulce obsahující zadané id
if($password != $y["PASSWORD"]): //kontrola, jestli id i heslo patří k sobě a leží tedy v jedné řádce
echo "Špatné ID nebo heslo.";
exit;
endif;
endif;
@$delete = MySQL_Query("DELETE FROM koupim WHERE (ID = $id) AND (PASSWORD LIKE '$password')");
if (!$delete):
echo "Při provádění skriptu došlo k chybě, nebo jste nezadali správné heslo. Zkuste to prosím znovu a v případě problémů kontaktujte webmastera - ".$email.".";
exit;
endif;
MySQL_Close();
echo "Záznam byl úspěšně smazán.";
elseif (($action == "delete") && ($id == "")):
echo "Bez zadání identifikačního kódu (ID) to nepůjde.";
elseif (($action == "delete") && ($password == "")):
echo "Bez zadání hesla to nepůjde.";
else:
echo "Vidíte-li toto hlášení, došlo k nepředpokládané chybě. Kontaktujte prosím webmastera a popište mu svůj problém - ".$email.".";
endif;
endif;
?>
|
<form action="" method="post">
<table width="500" cellspacing="0" cellpadding="0" border="0" valign="top" align="center">
<!--mazání inz.-->
<tr bgcolor="<? echo $telo_inzeratu ?>">
<td width="500" colspan="2">
<div class="rc1" align="center"><b>MAZÁNÍ INZERÁTŮ</b></div>
<div class="rc1" align="center">
<b>ID :</b>
<input type="text" name="id" value="" size="6" style="background-color:<? echo $telo_inzeratu ?>; border: 1 solid #000000">
<b>Heslo :</b>
<input type="password" name="password" value="" size="15" style="background-color:<? echo $telo_inzeratu ?>; border: 1 solid #000000">
<input type="submit" name="action" value="delete" size="10" style="background-color:<? echo $telo_inzeratu ?>; border: 1 solid #000000">
</div>
<hr width="500" color="black" size="1">
<div class="rc1" align="center" style="color: red">
<!-- ZDE BUDE MAZACÍ SKRIPT-->
</div></td></tr>
<!--konec form mazání inz-->
</form>
|
Poté, co si vytvoříte krátký formulář na mazání inzerátů, vložíte na určené místo náš mazací skript.
Funkce skriptu:
V prvních řádcích skript kontroluje, zda byl formulář odeslán a zda jsou pole ID a heslo vyplněné. Je-li tomu tak, připojí se k databázi a spustí SQL příkazy na vybrání požadovaných řádků podle zadaných hodnot. Na tomto místě si připoměňme jednu věc - v tabulce mohou být stejná hesla u různých ID. Důležitý je tedy řádek elseif($select != $select2): . Pokud existují v tabulce dvě stejná hesla, bude $select obsahovat veškeré řádky s daným heslem, zatímco ID může existovat pouze jedno. Musíme tedy zkontrolovat, zda u zadaného ID je odpovídající heslo. O to se postará podmínka if($password != $y["PASSWORD"]):, která zkontroluje jaké heslo je v řádku se zadaným ID a porovná jej se zadaným heslem. Následně (nám už známý příkaz) DELETE FROM ... smaže data z tabulky. Závěrem ještě upozorníme jedince, že bez zadání některých hodnot se k mazání nedostanou.
Tímto jsme si ukázali všechno, co je nezbytné k fungování bazaru. Ovšem obyčejné aplikace se od neobyčejných odlišují právě komfortem. V následujících dílech tedy uvidíte, jak si vytvořit wapovou verzi bazaru.
Na závěr zdrojové kódy bazaru (zatím bez implementace wapu) ZDE.
Čevelíček Marek
|