Segédletek.hu

Segédletek weblap szerkesztéshez!
ingyen letöltés

| Mind | PHP | HTML | CSS | Java |
|Legújabbak |Legtöbbször olvasottak|

php mysql alapú vendégkönyv:

Sorozat - vendégkönyvek:

Ebben a segédletben egy vendégkönyvet írok php és mysql alapokkal. Ez nem egy új vendégkönyv lesz, a txt - s vendégkönyvet írtam át sql alapokra. Így sokkal átláthatóbb lett.

Itt az elején szögezném le, hogy nem leszek annyira részletes, mint az előző segédletben. Ha nem értesz valamit, olvasd el azt is, ott leírtok töb mindent.
Akkor vágjunk is bele!

A fájljaink:
index.php - Ez a vendégkönyv maga
feldolgoz.php - Ez dolgozza fel a formból jövő adatainkat
config.php - A beállítások
getip.php - Az ip címet lekérdező script
style.css - A stíluslap
vendegk.js - A smileyket kezeli
A smileyk:
http://www.segedletek.hu/demok/php/txt_php_vdk/sm01.gif
http://www.segedletek.hu/demok/php/txt_php_vdk/sm02.gif
http://www.segedletek.hu/demok/php/txt_php_vdk/sm03.gif
http://www.segedletek.hu/demok/php/txt_php_vdk/sm04.gif
http://www.segedletek.hu/demok/php/txt_php_vdk/sm05.gif

Működő demó
Először jöjjön az adatbázis megtervezése. Nekünk most 6 mezőre lesz szükségünk. Ezek: id, ip, date, nick, email, message. Ez sql nyelven így néz ki:
install.sql
CREATE TABLE `vdk` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`ip` VARCHAR( 255 ) NOT NULL ,
`DATE` DATETIME NOT NULL ,
`nick` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`message` TEXT NOT NULL
)

Ezt futtassuk le mysql-ben.

Ha ezzel megvagyunk, mehetünk tovább.

config.php
<?php
$dbhost = "localhost"; //host
$dbuser = "root"//felhasználó
$dbpass = ""//jelszó
$dbname = ""//a db neve
$table  = "vdk"//a táblánk neve (most vdk)
$egyoldalon = 10// egy oldalon ennyi üzenet
?>

Ezzel beállítjuk az adatbázis adatait, valamint az egy oldalon megjelenő üzenetek számt.
Most jöjjön maga a vendégkönyv.
index.php
<?php
include("config.php");
@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Php mysql alapú vendégkönyv</title>
    <link href="style.css" type="text/css" rel="stylesheet" />
    <script language="JavaScript" type="text/javascript" src="vendegk.js"></script>
  </head>
  <body>
   <form method="post" name="beir" action="feldolgoz.php">
    <table class="beir">
          <caption>Bejegyzés a vendégkönyvbe:</caption>
            <tr>
                  <td><label for="nev">Név:</label></td>
                  <td><input type="text" name="nev" id="nev" /></td>
            </tr>
            <tr>
                  <td><label for="email">E-mail cím:</label></td>
                  <td><input type="text" name="email" id="email" /></td>
                </tr>
                <tr>
                  <td><label for="uzenet">Üzenet:</label></td>
                  <td><textarea rows="5" cols="30" name="uzenet" id="uzenet"></textarea></td>
                </tr>
                <tr class="smiley">
                  <td colspan="2">
                    <a href="#" onclick="sm01();return false"><img src="sm01.gif" alt="sm01" border="0"/>
                  <a href="#" onclick="sm02();return false"><img src="sm02.gif" alt="sm02" border="0"/>
                  <a href="#" onclick="sm03();return false"><img src="sm03.gif" alt="sm03" border="0"/>
                  <a href="#" onclick="sm04();return false"><img src="sm04.gif" alt="sm04" border="0"/>
                  <a href="#" onclick="sm05();return false"><img src="sm05.gif" alt="sm05" border="0"/>
                  </td>
                </tr>
                <tr>
                  <td colspan="2" class="submit"><input type="submit" name="mehet" value="Küldés" /></td>
                </tr>
        </table>
  </form>
ez a rész csatlakozik a mysql - hez, utána kiírja a formot, amin be lehet vinni az üzeneteket.
Meghívtunk benne két fájlt is: style.css, vdk.js, valamint hivatkozunk a feldolgoz.php-re Ezek:
style.css
/*CSS*/
BODY {
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
}
input,textarea{
color:#000099;
background-color:#FFFF99;
}
#sorszam{
margin-left:auto;
margin-right:auto;
text-align:center;
font-size:14px;
color:#0000FF;
margin-bottom:1em;
}
#sorszam a{
color:#0000FF;
}
.beir{
margin-left:auto;
margin-right:auto;
border:1px dashed #990000;
}
.uzenet{
margin-left:auto;
margin-right:auto;
width:500px;
margin-bottom:1em;
}
.header{
background-color:#3399FF;
}
.body{
background-color:#FFFF99;
color:#000099;
}
.id{
width:25px;
}
.datum{
text-align:right;
}
.nick{
width:100px;
text-align:left;
}
.nick a{
text-decoration:none;
color:#FFFFFF;
}
.smiley{
text-align:center;
}
.submit{
text-align:center;
}

vendegk.js
// JavaScript Document
function sm01() {
document.beir.uzenet.value +="[sm01]";
}
function sm02(text1) {
document.beir.uzenet.value +="[sm02]";
}
function sm03(text1) {
document.beir.uzenet.value +="[sm03]";
}
function sm04(text1) {
document.beir.uzenet.value +="[sm04]";
}
function sm05(text1) {
document.beir.uzenet.value +="[sm05]";
}

Ez csak a smileyk beszúrására van most, de ha gondolod, ki lehet egészíteni sok mindennel. (félkövér, dőlt, stb...)

Most, hogy megvan a form, dolgozzuk fel a belőle jövő adatokat. Erre a feldolgoz.php fog kelleni.

feldolgoz.php
<?php
include("config.php");
include("getip.php");
@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname);


if(isset($_POST['mehet']))
{
  if($_POST['nev'] !==""
  && $_POST['email']!==""
  && $_POST['uzenet'] !=="" ){

    $nick = htmlspecialchars($_POST['nev']);
    $email = htmlspecialchars($_POST['email']);
    $uzenet= nl2br(htmlspecialchars($_POST['uzenet']));   
    $sql = "INSERT INTO ".$table." (
           `id` ,
           `ip` ,
           `date` ,
           `nick` ,
           `email` ,
           `message`
           )
           VALUES (
           '' ,
           '"
.getip()."',
           NOW() ,
           '"
.$nick."',
           '"
.$email."',
           '"
.$uzenet."')";
 
    if($query = mysql_query($sql)){
      header("Location:index.php")
    }
    else{echo mysql_error();}
  }
}
?>

Ez annyit csinál, hogy ha elpostolták a formot, levédi az adatokat, összeállít egy sql parancsot, beszúra az adatokat az adatbázisba, majd visszadob az index.php - re. Hivatkozok benne a getip.php - re. Ez tulajdonképpen egy sima függvény, ami a látogató ip címét adja vissza.
getip.php

<?php
function getip()
{
    if (isset($_SERVER))
    {
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
        {
            $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        }
        elseif (isset($_SERVER["HTTP_CLIENT_IP"]))
        {
            $realip = $_SERVER["HTTP_CLIENT_IP"];
        }
        else
        {
            $realip = $_SERVER["REMOTE_ADDR"];
        }
    }
    else
    {
        if ( getenv( 'HTTP_X_FORWARDED_FOR' ) )
        {
            $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
        }
        elseif ( getenv( 'HTTP_CLIENT_IP' ) )
        {
            $realip = getenv( 'HTTP_CLIENT_IP' );
        }
        else
        {
            $realip = getenv( 'REMOTE_ADDR' );
        }
    }
    return $realip;
}
?>
Most, hogy beírni tudunk az adatbázisba, olvassuk is ki az üzeneteket belőle. Folytassuk az index.php - t

index.php - folytatás
<?php
  $uzenetszam   =    (mysql_num_rows(mysql_query("SELECT * FROM ".$table)));
  if (!isset($_GET['lap'])){
    $_GET['lap'] = 1;
  }
  $lapszam = intval(($uzenetszam+($egyoldalon-1))/$egyoldalon);
  if ($lapszam!=1){
    print "<div id=\"sorszam\">Oldalak: ";
          for($i=1;$i<=$lapszam;$i++)
          {
            if ($i!=$_GET['lap']){
        echo '<a href="'.$PHP_SELF.'?lap='.$i.'">['.$i.']</a>';
            }//if
          else
            {
              echo $i;
            }//else
          }//for
    print "Összes üzenet:$uzenetszam</div>";
  }//if
  if ($_GET['lap'] !== 1){
    $i = ($_GET['lap']-1)*$egyoldalon;
  }
  if ($_GET['lap'] == 1){
    $i = 1;
  }
  ?>
 
  <?php
    $sql = "SELECT * FROM ".$table." ORDER BY id DESC LIMIT ".($_GET['lap']-1)*$egyoldalon.",".$egyoldalon;
    $query = mysql_query($sql);
    while ($row = mysql_fetch_array($query)){           
     
    $uzenet    =    $row['message'];
    $uzenet    =    str_replace("[sm01]","<img src='sm01.gif' alt='sm01' />",$uzenet);
    $uzenet    =    str_replace("[sm02]","<img src='sm02.gif' alt='sm02' />",$uzenet);
    $uzenet    =    str_replace("[sm03]","<img src='sm03.gif' alt='sm03' />",$uzenet);
    $uzenet    =    str_replace("[sm04]","<img src='sm04.gif' alt='sm04' />",$uzenet);
    $uzenet    =    str_replace("[sm05]","<img src='sm05.gif' alt='sm05' />",$uzenet);     
  ?>
 
  <table class="uzenet" cellspacing="0">
        <tr class="header">
          <td class="id">#<?php echo $row['id'];?></td>
              <td class="nick"><a href="mailto:<?php echo $row['email'];?>"><?php echo $row['nick'];?></a></td>
              <td class="datum"><?php echo $row['date'];?></td>
        </tr>
        <tr class="body">
          <td colspan="3"><?php echo $uzenet; ?></td>
        </tr>
      </table>
<?php   
   }
?>
  </body>
</html>

Ez a részlet kiírja az üzeneteinket. Az elején van egy lapozós rész, majd szépen minden üzenetet egy <table> be tesz, és kiírja. A smileyk lecserélése is itt történik meg.

Ezzel kész is volnánk a vendégkönyvünkkel.
A segédlet inkáb haladóknak szól, mert nem magyaráztam benne annyit.
Ez egy nagyon egyszerű kis vendégkönyv, semmi extra nincs benne. Lehet bővíteni, csak ötletek kellenek hozzá. Sok sikert mindenkinek!

Írta: requiem - 2007-03-25 13:21:46

* Nem vagy bejelentkezve!
* Nem töltheted le a segédlet forrását egyben!
* Nem szavazhatsz a segédletre!
* Nem írhatsz a segédlethez tartozó fórum témába!


rubin007 2010-04-29 09:12:31
A múköd? demo nem, m?ködik.
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/requiem2/public_html/demok/php/php_mysql_vdk/index.php on line 45

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/requiem2/public_html/demok/php/php_mysql_vdk/index.php on line 45

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/requiem2/public_html/demok/php/php_mysql_vdk/index.php on line 45
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/requiem2/public_html/demok/php/php_mysql_vdk/index.php on line 74

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/requiem2/public_html/demok/php/php_mysql_vdk/index.php on line 74

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/requiem2/public_html/demok/php/php_mysql_vdk/index.php on line 75
???
VadKacsa 2010-03-29 14:06:15
A probléma amit a feldolgoz.php kiír az config.php-b?l adódik!
A config.php fájlban ki kell tölteni a dbpass és dbname nev? mez?ket! alapból nincs megadva mivel te magad hozod létre!
samo 2009-03-05 19:11:17
Nekem a feldolgoz.php-ben talál hibát az apache, a 34.sornál ahol a header van, emiatt nem is dob vissza az index.php-re, de ha a vissza gombbal visszalépek és lefrissítem akkor megjelenik a beírás:SSSS
Nem értem...
Hinda 2008-08-13 20:34:58
Nekem nem engedi lefuttatni, 1064-es hibát ír ki. Miért?
Tudom, hogy én vagyok süti, bevallom, a mysql nem az er?sségem.
Ökovilág webáruház
Vásároljon <b>kedvező árú</b> környezetbarát termékeket, olcsó és gyors szállítással!
www.okovilag.hu

Ingyenes foglalkozás
Ingyenes készségfejlesztő foglalkozás óvodás kortól az FMH-ban!
www.kistudosclub.hu

Éljen egészségesebben
Rendelje meg ingyenes füzetünket, és olvassa el hasznos tanácsainkat
Pharmaton.Vital.csucsformaban.hu

Miért fizetne többet?
Akciós élelmiszer, műszaki cikk, gyümölcs, bútor. Nézzen be, megéri!
www.tesco.hu

Toyota készletakció
Auris Optimis modellek 1 000 000 Ft árelőnnyel! Részletek
www.toyota.hu

Hirdessen itt