Autor Zpráva
Solidgauleiter
Profil
Ahojte. Chcel by som sa vás opýtať, či by ste mi vedeli poradiť, čo si mám naštudovať na tvorbu guestbooku ako je aj tu:

http://www.pizzeria-drak.sk/navstevna-kniha.php

Stačí ak mi vypíšete všetky funkcie k tomu, alebo mi poradíte dáky dobrý tutoriál na návštevnú knihu. Už som skúšal veľa. Ale nikdy som si nevedel prispôsobiť, teda vložiť ten formulár a tie odkazy, výpisky na vlastnú stránku. Stále to bolo osobitne :(

Ďakujem za radu..
Someone
Profil
Stačí ti PHP a HTML... Psal jsem o tom docela podrobný návod, tak snad pomůže.
Solidgauleiter
Profil
Díky.. Kuknem sa na to pozdejšie.. Musím vyhladnúť už :D
Solidgauleiter
Profil
No skúšal som to.. Spravil som zatiaľ len na Meno a správu + dátum. Lenže najnovšie mi dáva na spodok. Taktiež neviem či to budem vedieť nadesginovať.. Poradil by mi dakto dáky návod aj s CSS na takýto guestbook ?
martin1312
Profil
pri ukladani prispevku ho vloz na zaciatok suboru .txt a nie na koniec. Teda namiesto tohto riadku
$puvodni .= $text_k_vlozeni;
zapises toto
$puvodni = $text_k_vlozeni . $puvodni;

Tym dosiahnes, ze sa ti nove prispevky budu vkladat a teda aj nasledne vypisovat nahor stránky.
Medvídek
Profil
Someone:
Při ukládání jak to máš ty, že nejnovější budou vždy vespod stačí použít jen toto:

file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
nemusíš před tím data vytahovat, a pak zase ukládat. Navíc bych to tak udělal pokaždý a třídění bych si pak sortoval až v poli při vytahování.
$pole = explode("\n",$text); //sortovat tady
Solidgauleiter
Profil
Skúsim sa s tým zajtra pohrať. Inak kde sa naučím perfektne naprogramovať zatiaľ len jednoduchý webdesign ? Čím viac stránok tým lepšie :) Ďakujem.
Solidgauleiter
Profil
martin1312:

Dosiahnuť som to dosiahol. Lenže mi zduplikuje aj predošlý komentár. :(
martin1312
Profil
momentalne nemam cas sa nato divat. Ked vyskusas radu od Medvídek tak to ide?
Skus sa v tom trochu pohrabat co sa uklada do premennej $puvodni a $text_k_vlozeni. Ked budem mat cas a stale ti to nepojde tak to pozrem.

PS: zduplikovany komentar sa ukazuje aj po obnoveni stránky? (F5)
Solidgauleiter
Profil
JJ.. Však si to vyskúšaj :D

http://test.pizza-zapad.sk/navstevna-kniha.php

Idem sa s tým skúsiť pohrať.. ak budeš mať čas kukni sa na to :)


                      <center>
<form name="contactform" id="contactform" method="post">
                         <table width="450px">
                         </tr>
                         <tr>
                          <td valign="top">
                           <label for="meno">Meno:</label>
                          </td>
                          <td valign="top">
                           <input  type="text" name="meno" maxlength="10" size="30" value="">
                          </td>
                         </tr>
                         <tr>
                          <td valign="top">
                           <label for="text"><br>Text:</label>
                          </td>
                          <td valign="top">
                           <textarea  name="text" maxlength="1000" cols="42" rows="6"></textarea>
                          </td>
                         </tr>
                         </table>
                         <button type="submit" name="odoslat" value="Odoslať!"> Odoslať !</button>
                         <h2>Všetky položky je povinné vyplniť !</h2>
                         <h3>© Pizza Západ 2012</h3>
</form>
</center>
                      <?php
  if (isset($_POST['odoslat'])) { 
    $meno = $_POST['meno'];
    $meno = htmlspecialchars($meno);
    $meno = str_replace("'","&apos;",$meno);
      /*
        Jelikož je apostrof ' oddělovačem, který se v textu nesmí vyskytovat
        tak jej najdeme a nahradíme entitou pro apostrof. (&apos;)
        Pomocí funkce HTMLSPECIALCHARS ošetříme vstupní text proti vkládání HTML
        Př.: Z <div> vznikne &lt;/div&gt;
      */
    $text = $_POST['text'];
    $text = htmlspecialchars($text);
    $text = str_replace("\n","<br />",$text);
      /*
      Pokud se odentruje v textu, tak nám vznikne nový znak \n, který nám zmate
      explode a výsledné rozdělení celého souborů do příspěvků a příspěvky
      do jednotlivých údajů by bylo chybné. Tudíž než vytvoříme vkládaný text, najdeme pomocí funkce
      str_replace všechny znaky \n (1. argument funkce) a nahradíme
      je řetězcem <br /> (2. argument funkce -> HTML tag pro zalomení)
      */
    $text = str_replace("'","&apos;",$text);
      /*
      Totéž co u jména, nahradíme apostrof entitou.
      */
    $text_k_vlozeni = $meno."'".$text."'".Date("d.m.Y")."\n";
    $puvodni = file_get_contents("soubor.txt");
    $puvodni .= $text_k_vlozeni . $puvodni;
    file_put_contents("soubor.txt",$puvodni);
  }
  $text = file_get_contents("soubor.txt"); 
  $pole = explode("\n",$text);
  foreach ($pole as $zaznam) {
    if (!empty($zaznam)) { // Podmínka, která zkontroluje, zda proměnná $zaznam něco obsahuje, pokud ano, vypíše data
      $vysledky = explode("'",$zaznam);
      echo "<b> ".$vysledky[0]." | ".$vysledky[2]."</b><br />";
      echo "    <i> ".$vysledky[1]."</i><br />";
    }
  }
?>



Mám dostupnú aj jednu databázu tak ak poznáte dáky dobrý návod tak sem s ním :)
Solidgauleiter
Profil
Kus som poblúdil na nete a našiel som niečo podobné. Funguje mi to, a už som si to ako tak nastavil v CSS. takže to aj dáko vyzerá.

KÓD:

<?php
$action = $_POST['action'];
$meno = $_POST['meno'];
$mail = $_POST['mail'];
$text = $_POST['text'];
$kontrola = $_POST['kontrola'];

function antispam($email, $meno){
    $return = "<script type=\"text/javascript\"><!--\ndocument.write('<a href=\"' + 'mailto:' + '";
    for($i=0;$i<strlen($email);$i++){
        $code .= $email{$i}=='@' ? "' + '&#".ord("@")."' + '"
                                   : "&#".ord($email{$i}).";";
    }
    $return .= $code."' + '\">' + '".$meno."' + '<\/a>');\n--></script>";
RETURN $return;
}
?>
                      <center>
                       <form name="contactform" id="contactform" method="post" action="navstevna-kniha.php">
                         <table width="450px">
                         <tr>
                          <td valign="top">
                           <label for="meno">Meno: *</label>
                          </td>
                          <input type="hidden" value="uloz" name="action" />
                          <td valign="top">
                           <input  type="text" name="meno" maxlength="25" size="30" value="<?php echo $meno ?>">
                          </td>
                         </tr>
                         <tr>
                          <td valign="top">
                           <label for="text">E-mail:</label>
                          </td>
                          <td valign="top">
                           <input type="text" name="mail" maxlength="50" value="<?php echo $mail ?>" size="30" />
                          </td>
                         </tr>
                         <tr>
                          <td valign="top">
                           <label for="text"><br>Text: *</label>
                          </td>
                          <td valign="top">
                           <textarea  name="text" maxlength="1000" cols="42" value="<?php echo $text ?>" rows="6"><?php echo $text ?></textarea>
                          </td>
                         </tr>
                         <tr>
                          <td>
                          </td>
                           <td>Ochrana proti spamu: 4 + 5 =
                          <input type="text" name="kontrola" value="<?php echo $kontrola ?>" size="8" />
                          </td>
                         </tr>
                         </table>
                         <button type="submit" name="odoslat" value="Odoslať!"> Odoslať !</button>
                         <h2>Položky označené hviezdičkou (*) sú povinné !</h2>
                         <h3>© Pizza Západ 2012</h3>
                       </form>
                      <div class="vysledok">
                      <table>
<?php
if ($action=='uloz'):
$subor = "kniha.body";
@$ext = fopen($subor, "r");
@$obsah = fread($ext, filesize($subor));
@FClose($ext);

if($kontrola != "9"):
echo "<h6>Nesprávny údaj pri ochrane proti spamu !</h6>";
elseif(($text=="") or ($meno=="")):
echo "<h6>Nie sú vyplnené všetky povinné údaje !</h6>";
else:
$ext = fopen("kniha.body", "w");
$mail = HTMLSpecialCHars($mail);

if($mail == "")
$mail = "";
else $mail = antispam($mail,$mail);

$meno = HTMLSpecialCHars($meno);
$text = HTMLSpecialCHars($text);
$tab = "<tr><td width=\"250\" ><b>".$meno." | ".Date(" j.n.Y   H:i")."</b></td></tr>
<tr><td colspan=\"2\"><i>".$text."</i></td></tr>
<tr><td width=\"150\" align=\"right\"><h3>".$mail."</h3></td></tr>
<tr><td width=\"350\"><hr/></td></tr>"; 
fputs($ext, "$tab");
fputs ($ext, "$obsah");
FClose($ext);
@$ext = fopen("kniha.body", "r");
@fpassThru($ext);

endif;
else: @$ext = fopen("kniha.body", "r");
@fpassThru($ext); endif;

?>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: