V tomto posledním článku našeho miniseriálu o internetovém bazaru si ukážeme jak mazat inzeráty. Uživatel už musí být opět registrován.

Vložíme konfigurační soubory config.php a opendb.php, ověříme, jestli je uživatel přihlášen (vložením login.php), načneme stránku a ošetříme pole, které se nastavuje z formuláře:

<?PHP
include(„opendb.php“);
include(„config.php“);
include(„login.php“);
?>
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.0 Transitional//EN“>
<html>
<head>
<title>Bazar – mazání inzerátů</title>
</head>
<body>
<?PHP
// ošetření proměnných z formuláře
for ($i = 0; $i < count($del_box); $i++):
  $del_box[$i] = $del_box[$i]*1;
endfor;

Uživatel odeslal formulář, smažeme označené inzeráty. Inzerátů ke smazání může být i více najednou, proto jsou jejich id uchovávána v poli $del_box:

// smazání inzerátů z databáze
if (!empty($_POST[„del_box“])):
  for ($i = 0; $i < count($_POST[„del_box“]); $i++):
    $query = mysql_query(„DELETE FROM advertise WHERE id=“.$_POST[„del_box“][$i]);
    if (empty($query)):
      echo „Omlouváme se, probíhá úprava serveru.<br>\n“;
      break;
    endif;
  endfor;
  echo „Označené inzeráty byly smazány.<br /><br />\n<a href=\“advertise.php\“>Vstoupit do bazaru</a>“;

Pokud uživatel neodeslal formulář, nebudeme mazat inzeráty, ale pošleme SQL dotaz na inzeráty, které jsou registrovány na přihlášeného uživatele ($uid):

else:
  // vypsání inzerátů, které jsou registrovány na uživatele
  $query = @mysql_query(„SELECT id, col, cate, advtext, start, end FROM advertise WHERE uid = „.$uid.“ ORDER BY start DESC“);
  if (empty($query)):
    echo „Omlouváme se, probíhá úprava serveru.<br>\n“;
    break;
  endif;

Pokud má uživatel v bazaru nějaké inzeráty (je nastaveno mysql_num_rows($query)), vložíme formulář, který tyto inzeráty vypíše a pomocí kterého bude moci uživatel označit inzeráty na smazání:

if (@mysql_num_rows($query)):
  include(„advdelete_form.php“);

Pokud není nastaveno mysql_num_rows(), nemá uživatel v bazaru žádné inzeráty, vypíšeme tedy hlášení a rádně ukončíme stránku:

    else:
      echo „V bazaru nemáte žádné inzeráty.<br>\n“;
    endif;
  endif;
} while(false);
?>
</body>
</html>

Skript ‚advdelete.php‘ je za námi, na řadě je ‚advdelete_form.php‘. Takže načneme formulář, tabulku a PHP:

<form action=“advdelete.php“ method=“post“>
<table>
<?PHP

Pro vypsání všech inzerátů použijeme smyčku while(). Nastavíme proměnnou $zaznam["col"]. Pošleme SQL dotaz na popis kategorie, díky kterému budeme moci v seznamu inzerátů vypisovat i kategorii. Nakonec si upravíme proměnné tak, abychom mohli vypisovat jen jednotlivé prvky pole $zaznam:

// vypsání inzerátů
while ($zaznam = mysql_fetch_array($query)):
  // upravení proměnných
  $zaznam[„col“] = ($zaznam[„col“] == 1 ? „Prodám“ : ($zaznam[„col“] == 2 ? „Koupím“ : „Vyměním“));
  $query2 = mysql_query(„SELECT title FROM category WHERE id LIKE ‚“.$zaznam[„cate“].“‚“);
  if (empty($query2)):
    echo „Omlouváme se, probíhá úprava serveru.<br>\n“;
    break;
  endif;
  $zaznam2 = mysql_fetch_array($query2);
  $zaznam[„cate“] = $zaznam2[„title“];
  unset($query2);
  unset($zaznam2);

Dále vypíšeme inzeráty pěkně do tabulky:

echo „<tr><td valign=\“top\“><input type=\“checkbox\“ value=“.$zaznam[„id“].“ name=\“del_box[]\“></td><td>“.$zaznam[„advtext“].“<br /><br /></td></tr>\n“;
echo „<tr><td> </td><td><b>Rubrika:</b> „.$zaznam[„col“].“</td></tr>“;
echo „<tr><td> </td><td><b>Kategorie:</b> „.$zaznam[„cate“].“</td></tr>“;
echo „<tr><td> </td><td><b>Vloženo:</b> „.date(„d.m.Y“, $zaznam[„start“]).“</td></tr>“;
echo „<tr><td> </td><td><b>Platnost končí:</b> „.date(„d.m.Y“, $zaznam[„end“]).“<br><br><br></td></tr>“;

Ukončíme funkce a elementy:

endwhile;
?>
<tr><td> </td><td><input type=“submit“ value=“Označené smazat“></td><tr>
</table>
</form>

Skripty ‚advdelete.php‘ a ‚advdelete_form.php‘ naleznete v souboru bazar3.zip. Celý bazar, tedy soubory ‚bazar.sql‘, ‚config.php‘, ‚advertise.php‘, ‚advertise_form.php‘, ‚advinsert.php‘, ‚advinsert_form1.php‘, ‚advinsert_form2.php‘, ‚advdelete.php‘ a ‚advdelete_form.php‘ naleznete v souboru bazar.zip.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět