iReklama  |  PC Svět  |  vyhledávací centrála  |  Diskuzní fórum  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz - čte si nás 12 čtenářů
 
PC Svět
Hlavní stránka
ASP
Aktuality
Assembler
C,C++
Delphi
Diskuze
Grafika
Hacking
Hardware
Hry a zábava
HTML
Internet
JavaScript
Komunikace
Linux
Microsoft Office
Turbo Pascal
PHP
Software
Tiskové zprávy
Visual Basic
Windows
WWW katalog

Knihovna zdr. kódů

Nabídka skriptů aj.

Homepage autora
Služby
Guestbook
  kniha návštěv pro
  každého
MailForm
  zasílání výsledků
  formulářů na e-mail
Programy
DOS Commander
WinMan
Windows Tools
Informace
O PC Světě
Přehled rubrik
Reklama
Výsledky anket
Přehled novinek


šéfredaktor
Petr Šťastný
admin@pcsvet.cz

zástupce šéfredaktora
Pavel Rauš
raus@pcsvet.cz

Stránka je optimalizo-
vána pro prohlížeč
Internet Explorer 5.0
při rozlišení 800x600

 © Petr Šťastný 2001
   All rights reserved

PC Svět
ikonka PC Světa


Linux - zdarma a legálně
TOPlist

PHP - diskuze (2.)
Vytisknout   Poslat   Komentáře (1)   Přidat komentář

V této druhé a zároveň poslední části si ukážeme, jak diskuzi spravovat.

Princip

Do administrace se dostaneme přes login.html, ta odešle heslo scriptu a jestliže se bude heslo schodovat s heslem ve scriptu, tak se vám zobrazí celá diskuze doplněna o zaškrtávací boxy a tlačítko smazat.

Jak script maže celá témata?
Každé téma je uloženo samostatně v jednom souboru, PHP smaže vybrané soubory a ostatní přejmenuje tak, aby byly číslovány za sebou a zároveň sníží počet témat v souboru pocet.dat tak, aby číslo souhlasilo s počtem témat.

Jak script maže jen některé (nevhodné) příspěvky k danému tématu?
Otevře se soubor s příspěvky, přečtou se z něho data a ty se pak přidávají do řetězce, ale než se tam přidají, tak se zkontroluje, zda nemají být náhodou smazány, jestliže ano, tak se do řetězce nepřidají, když se takto postupně zkontrolují všechny příspěvky, řetězec se uloží do stejného souboru, ze kterého byl přečten bez příspěvků které byly vybrány ke smazání.

Vysvětlení neznámých funkcí

UnLink(soubor)
Funkce smaže soubor, jestliže je soubor smazán, vrací true.

Rename(staré jméno, nové jméno)
Funkce přejmenuje soubor, vrací true, když se povede soubor přejmenovat.

Zdrojové kódy

login.html

<HTML>
<HEAD>
<TITLE>Admin</TITLE>
</HEAD>
<BODY>

<CENTER>
<BR>
<H1>Login do administrační části diskuze</H1>
<FORM name="FUKY" method="POST" action="admin.php">
<INPUT type="hidden" name="id" value="show">
<TABLE border="0">

<TR valign="top">
<TD align="right">
<B>Heslo:</B>
<TD align="left">
<INPUT type="text" size="30" name="heslo"><BR>

<TR valign="top">
<TD colspan="2" align="center">
<INPUT value=" OK " type="submit">

</TD>
</TR>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>

admin.php

<?
//ZKONTROLUJE ZDA HESLO SOUHLASÍ
   if ($heslo != "heslo") {
     echo "<H1><FONT color=\"red\">Špatné heslo</FONT></H1>";
     echo "<A HREF=\"login.html\">Zpět na logovací stránku</A>";
     exit;
   }

   if ($id == "show") {
?>

<HTML>
<HEAD>
<TITLE>Admin</TITLE>
</HEAD>
<BODY>
<BR>
<H1 align="center">Administrace</H1>
<CENTER>
<FORM name="FUKY" method="POST" action="admin.php">
<INPUT value="<? echo $heslo; ?>" name="heslo" type="hidden">
<INPUT value="ok" name="mazat" type="hidden">
<TABLE border="0" cellpadding="5" cellspacing="5" align="center" width="100%">
<TR>
   <TD><B>Téma</B>
   <TD><B>Autor</B>
   <TD><B>Vloženo</B>
<?

   $fp = FOpen("./pocet.dat", "r");
   $pocet = FGetS($fp, 10);
   FClose($fp);

   if ($pocet == 0) {
     exit;
   }

   for ($i = $pocet; $i > 0; --$i) {
     $fp = FOpen("./tema".$i.".dat", "r");
     $soubor = File("./tema".$i.".dat");
  
   List($tema, $autor, $email, $datum) = Explode(";", $soubor[1]);
   $data .= "<TR bgcolor=\"#CCFFFF\"><TD><INPUT type=\"checkbox\" name=\"tema".$i."\" value=\"".$i."\"><B><A HREF=\"./admin.php?id=".$i."&heslo=".$heslo."\">".$tema."</A></B><TD><B><A HREF=\"mailto: ".$email."\">".$autor."</A></B><TD><B>".$datum."</B>";

     for ($a = 2; $a < Count($soubor); ++$a) {
       $radek = $soubor[$a];
       if ($radek[0] == "%") {
           List($tema, $autor, $email, $datum) = Explode(";", $soubor[++$a]);
           $data .= "<TR><TD>".$tema."<TD><A HREF=\"mailto: ".$email."\">".$autor."</A><TD>".$datum."<TD>";
       }
     }
   }

   echo $data;
?>
     </TD>
   </TR>
</TABLE>
<INPUT value="Smazat" type="submit">
</FORM></CENTER>
</BODY>
</HTML>

<?
   exit;
}

   if (($mazat == "ok") && ($id != "")) {
     $fp = FOpen("./tema".$id.".dat", "r");
     $soubor = File("./tema".$id.".dat");
     FClose($fp);

//CYKLUS KTERÝ PŘIDÁVÁ DO PROMĚNÉ DATA PŘÍSPĚVKY KTERÉ SE NEMAJÍ MAZAT
     for ($i = 0; $i < Count($soubor); ++$i) {
       $radek = $soubor[$i];
       if ($radek[0] == "%") {
         ++$pocet;
         if (${"smaz".$pocet} == $pocet) {
           $vlozit = "ne";
         }
         else {
           ++$cislo;
           $data .= "%".$cislo."\n";
           $vlozit = "ano";
         }
       }
       else {
         if ($vlozit == "ano") {
           $data .= $radek;
         }
       }
     }

//TATO PODMÍNKA JE SPLNĚNA KDYŽ SE SMAŽOU VŠECHNY PŘÍSPĚVKY
     if ($data == "") {
       $data = "%0";
     }
 
     $fp = FOpen("./tema".$id.".dat", "w");
     FPutS($fp, $data);
     FClose($fp);
     Header("Location: ./admin.php?heslo=$heslo&id=$id");
     exit;
   }

if ($id != "") {
?>

<HTML>
<HEAD>
<TITLE>Admin</TITLE>
<META NAME="author" CONTENT="Jan Fuchs">
</HEAD>
<BODY>
<BR>
<H1 align="center">Administrace</H1>
<CENTER>
<TABLE border="0" cellpadding="5" cellspacing="5" align="center" width="100%">
<FORM name="FUKY" method="POST" action="admin.php">
<INPUT value="<? echo $heslo;?>" name="heslo" type="hidden">
<INPUT value="ok" name="mazat" type="hidden">
<INPUT value="<? echo $id; ?>" name="id" type="hidden">
<?

   $fp = FOpen("./tema".$id.".dat", "r");
   $soubor = File("./tema".$id.".dat");
   FClose($fp);

   List($tema, $autor, $email, $datum) = Explode(";", $soubor[1]);
   $data .= "<TR bgcolor=\"#CCFFFF\"><TD><B>".$tema."</B><TD><B><A HREF=\"mailto: ".$email."\">".$autor."</A></B><TD><B>".$datum."</B>";

   $radek = $soubor[2];

   for ($a = 3; (($radek[0] != "%") && ($a < Count($soubor))); ++$a) {
     $text .= $radek;
     $radek = $soubor[$a];
   }

   $data .= "<TR><TD colspan=\"3\">".$text;
   --$a;

   for ($i = $a; $i < Count($soubor); ++$i) {
     $radek = $soubor[$i];
     $text = "";
     if ($radek[0] == "%") {
       $pocet = $radek;
       $pocet = IntVal(StrTr($pocet, "%", "0"));
       List($tema, $autor, $email, $datum) = Explode(";", $soubor[++$i]);
       $data .= "<TR bgcolor=\"#CCFFFF\"><TD><INPUT type=\"checkbox\" name=\"smaz".$pocet."\" value=\"".$pocet."\">";
       $data .= $tema."<TD><A HREF=\"mailto: ".$email."\">".$autor."</A><TD>".$datum;
     }
     else {
       while (($radek[0] != "%") && ($i < Count($soubor))) {
         $text .= $radek;
         $radek = $soubor[++$i];
       }
     --$i;
     $data .= "<TR><TD colspan=\"3\">".$text;
     }
  }

   echo $data;
?>
     </TD>
   </TR>
</TABLE>
<INPUT value="Smazat" type="submit"></FORM></CENTER>
</BODY>
</HTML>

<?
   exit;
}

   if ($mazat == "ok") {

     $fp = FOpen("./pocet.dat", "r");
     $pocet = FGetS($fp, 10);
     FClose($fp);

     $cislo = $pocet;

//MAŽE SOUBORY S NEVHODNÝMI TÉMATY
     for ($i = 1; $i <= $pocet; ++$i) {
       if (${"tema".$i} == $i) {
         UnLink("tema".$i.".dat");
         --$cislo;
       }
     }

     $fp = FOpen("./pocet.dat", "w");
     FPutS($fp, $cislo);
     FClose($fp);

     $cislo = 1;

//PŘEJMENOVÁVÁ VŠECHNY SOUBORY, ABY BYLO JEJICH ČÍSLOVÁNÍ SPRÁVNÉ
     for ($i = 1; $i <= $pocet; ++$i) {
       if (File_Exists("tema".$i.".dat")) {
         Rename("tema".$i.".dat", "tema".$cislo.".dat");
         ++$cislo;
       }
     }

     Header("Location: ./admin.php?heslo=$heslo&id=show");

   }
?>


Autor: Jan Fuchs, jan.fuchs@atlas.cz, informace a seznam článků


Komentáře k článku
Jiné číslování souborů, Honza, 17.7.2001 19:29:38

Přidat komentář


Poslední články ze stejné rubriky
PHP: Odeslání libovolného formuláře e-mailem (3.)
PHP: Odeslání e-mailu ve formátu HTML
Jednoduchý FTP klient v PHP
PHP: Katalog stránek (2.)
PHP: Katalog stránek (1.)

Diskuze - PHP - celkem 293 příspěvků (zobrazeno max. 15) - zobrazit celou diskuzi
Podkategorie
Databáze [43]
Název Autor Datum
Ako poslať dáta formulára? Kecso 26.09.2001
   žádná odpověď    
V Zozo 12.09.2001
• Chyba kódování v MySQL stefan 14.09.2001
Jak mám zaokrouhlit??? Martin 11.09.2001
• round Wiki 12.09.2001
Blob data z MySQL Krasty 09.09.2001
• Re: Blob data z MySQL Petr Šťastný 09.09.2001
• Blob data z MySQL Krasty 11.09.2001
• RE : Blob data z MySQL stefan 14.09.2001
• Blob data z MySQL Krasty 15.09.2001
SORT Roman 07.09.2001
• Sort Wiki 07.09.2001
• Sort Wiki 07.09.2001
RE : MySQL a Grafické ovládání Kamil 03.09.2001
   žádná odpověď    
MySQL a Grafické ovládání Michal 02.09.2001
   žádná odpověď    
Provozovatel:
PES.cz
Poslední články
Acer Veriton 7200 - počítač pro náročné
OSI Model
Základy 2D grafiky - kružnice a elipsa
Microsoft Combat Flight Simulator 2: WWII Pacific Theater
Zákazníci Telecomu jsou chráněni před vysokým účtem za telefon
Hodnocení článku
nejlepší <----> nejhorší
    
Stav: 1
Počet: 1
Informace o článku
Datum 12.7.2001
Čtenářů 434
Autor Jan Fuchs
Rubrika PHP - příklady
Nový redaktor
  Chcete psát články
  pro PC Svět či se
  stát redaktorem?

Články honorovány!

  Informace zde
EInfo
  Chcete být informováni
  o každém novém článku
  na PC Světě?

Zadejte svůj e-mail:

MSN.ATLAS.CZ
Hladat.sk

hlavní stránka  |  vyhledávací centrála  |  Diskuze  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz

Se svými dotazy či problémy se obracejte na diskuzní fórum, věci týkající se PC Světa směřujte na e-mail pcsvet@pcsvet.cz

Šíření obsahu tohoto serveru nebo jeho části je bez souhlasu redakce zakázáno.
(c) PC Svět 2001 - Všechna práva vyhrazena.