Náměty od čtenářů - II - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kdo je autorem výstavy obrazových fotografií „Očima Hanse Christiana Andersena“?

V dnešní soutěži hrajeme o:



PHP

Náměty od čtenářů - II

redakcni system

13. ledna 2003, 00.00 | Pokračování seriálu o tvorbě vlastního redakčního systému v PHP. Dnes navážeme na předchozí díl a rozvedeme rozšíření systému o náměty čtenářů - ukážeme si, jak je možné s nimi pracovat.

 Dnes budeme pokračovat ve zpracování vzkazů od čtenářů. Tentokrát se podíváme, jak budeme postupovat v admincentru.

První, co si musíme rozmyslet, je komu umožníme přístup k námětům. Máme několik možností. Můžeme to umožnit všem, korektorům nebo jen šéfredaktorovi. Vše závisí na našem uvážení. Každá možnost má své pro i proti. Já jsem se rozhodl umožnit to pouze šéfredaktorovi. Z toho vyplývá, kam umístíme odkaz v souboru menu.php.

.
.
.
// volby pro administrátora
if ($INFO[6] == 3)
{
echo "<A HREF=users.php target=main>Editace uživatelů</A><BR>\n";
echo "<A HREF=schval.php target=main>Schválené články</A><BR>\n";
echo "<A HREF=prehled.php target=main>Přehled článků</A><BR>\n";
echo "<A HREF=namety_cist.php target=main>Náměty od čtenářů</A><BR>\n";
echo "<BR>\n";
}
.
.
.

Teď přistoupíme k samotnému scriptu namety_cist.php.

<?
Header("Pragma: No-cache");
Header("Cache-Control: no-cache");
Header("Expires: ".GMDate("D, d M Y H:i:s")."GMT");

// pokud neproběhla autorizace, ukončíme skript
if (!isset($PHP_AUTH_USER))
{
     echo "Neautorizovaný přístup";
     exit;
}

// vložíme soubory
@include "../conn.php";
@include "../function.php";

// autorizace
auth();
// smažeme námět
if(isset($did))
{
@mysql_query("DELETE FROM namety WHERE id='$did'");
$zprava="Vzkaz byl smazán.";
}
// zobrazíme hlavičku stránky
head();
?>

<h3>Vzkazy</h3>
<?=$zprava?>
<FORM ACTION="namety_cist.php" METHOD="GET">
<select name="zobraz" ONCHANGE="submit()">
<option value="n" <?if($zobraz=="n") echo "SELECTED"; ?>>nepřečtené</option>
<option value="a" <?if($zobraz=="a") echo "SELECTED"; ?>>přečtené</option>
<option value="r" <?if($zobraz=="r") echo "SELECTED"; ?>>zodpovězené</option>
<option value="z" <?if($zobraz=="z") echo "SELECTED"; ?>>zobrazené</option>
<option value="v" <?if($zobraz=="v") echo "SELECTED"; ?>>všechny</option>
</select>
</FORM>
<?
// select do databáze
if($zobraz=="" or $zobraz=="n")
$query=" stav='n' ";
elseif($zobraz=="v")
$query="";
elseif($zobraz=="z")
$query=" zobrazit='a' ";
elseif($zobraz=="a")
$query=" stav='a' OR stav='r' ";
elseif($zobraz=="r")
$query=" stav='r' ";
if($query!="")
$query="WHERE ".$query;
@$sql = mysql_query("SELECT * FROM namety $query ORDER BY datum");

// pokud je v databázi alespoň jeden námět
// zobrazíme tabulku se statistikami
if(@mysql_num_rows($sql) > 0)
{
   ?>
   <table border=0 cellspacing=0 cellpadding=1 WIDTH="100%">
     <tr bgcolor=#C0C0C0>
       <td bgcolor=#C0C0C0><b>Jméno:</b></td>
       <td bgcolor=#C0C0C0 align="center"><b> E-mail: </b></td>
       <td bgcolor=#C0C0C0 align="center"><b> Text:</b></td>
       <td bgcolor=#C0C0C0 align="center"><b> Počítač: </b></td>
       <td bgcolor=#C0C0C0 align="center"><b> Smazat: </b></td>
     </tr>
   <?
        $i = 0; // pomocná proměnná
        // pro každý záznam v databázi se opakuje smyčka, ve které
        // postupně zobrazíme všechny záznamy
        while ($row = mysql_fetch_row($sql))
        {
            // pokud je číslo liché, vložíme do proměnné bgcolor
            // šedou barvu. Jinak bude proměnná prázdná
            if ($i%2==0) $bgcolor=''; else $bgcolor=" bgcolor=#C0C0C0";
	
   ?>
     <tr<? echo $bgcolor; ?>>
       <td<? echo $bgcolor; ?>> 
           <A HREF="namety.php?id=<?echo $row[0]; 
              if($row[6]=="a") 
	echo "&odpoved=false";?>"><?=$row[1]?></A></td>
       <td<? echo $bgcolor; ?> align="center"> 
                  <? echo $row[2];?></td>
       <td<? echo $bgcolor; ?> align="center"> 
                  <? echo substr($row[3],0,100)."..."; ?></td>
       <td<? echo $bgcolor; ?> align="center"> 
                  <? echo @GetHostByAddr($row[5]);?></td>
       <td<? echo $bgcolor; ?> align="center"> 
       <A HREF="namety_cist.php?did=<?=$row[0]?>&zobraz=<?=$zobraz?>" 
	  ONCLICK="return confirm('Opravdu chcete námět smazat?')">Smazat</A>
       <?if($row[6]=="a") echo "<FONT COLOR=\"#FF0000\">*</FONT>";?></td>
     </tr>
   <?
          // zvýšíme proměnnou i o 1.
          $i++;
       } 
       // uvolníme výsledek
       @mysql_free_result($sql);
   ?>
   </table><P>
echo "Zprávy označené "<FONT COLOR="#FF0000">*</FONT>" se zobrazují čtenářům.";
<?
}
// pokud není nic v databázi
else
{
   ?>
   <h3><font color="#FF0000"><b>Nenalezen žádný záznam !!!</b></font></h3>
   <?
}
// zobrazíme patičku stránky a zavřeme spojení s databází
foot();
@mysql_close($conn);
?>

Dá se říci, že je to kopie scriptu vzkazy_cist.php. Je to samozřejmé, protože to pracuje na stejném principu. Když to vezmu od začátku.... Na začátku máme podmínku, která nám bude mazat přebytečné vzkazy. Následuje formulář pro určení kritérií výběru a následné zobrazení. V této smyčce se nacházejí dvě fce, které stojí za zmínku. S tou první, SubStr(), jsme se již myslím setkali. Přesto si ji zopakujme. Slouží k vyextrahování části řetězce ohraničeného pozicemi, které předáváme v parametrech. Ty jsou tři. První je řetězec, ze kterého získáváme úryvek. Druhý udává pozici, od které se má začít a třetí délku, kterou potřebujeme. Můžeme použít i záporná čísla. V takovém případě se bude brát vzdálenost od konce. Druhá se jmenuje GetHostByAddr(). Funkce vrací buď doménovou adresu počítače, pokud je to možné nebo, v opačném případě vrátí IP adresu, kterou jsme zadali jako jediný parametr.

Ještě bych chtěl upozornit na jeden z GET parametrů u odkazu na script namety.php a to sice odpoved=false. Pokud je námět zobrazen, tak tento parametr zajistí, že jeho obsah nepůjde změnit.

Tím máme první část zpracování námětů v admincentru za sebou. Příště si ukážeme script, kterým budeme odpovídat na náměty.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: