+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 1 su 1

Discussione: PHP 4: Realizzare un Guestbook

  1. #1
    Skull86 non è in linea Novello
    Luogo
    Italy
    Post
    22

    PHP 4: Realizzare un Guestbook

    Che cosa è un Guestbook ?

    Un Guestbook non è altro che una raccolta di messaggi, postati dagli utenti. Questi utenti, scrivendo vari messaggi, decidono di esprimere il loro personale parere sul sito che stanno visitando. Proprio per questo motivo, la struttura del Guestbook deve essere molto semplice ma soprattutto carina e simpatica, in modo da attirare l’ utente a leggere i messaggi lasciati e quindi a scriverne dei nuovi.

    Struttura

    Come è stato già detto, la struttura del Guestbook è essenzialmente semplice. Seguendo questo Tutorial saremo in grado di realizzare un Guestbook completo anche di amministrazione, simile a questo:



    Il Guestbook analizzato in questo Tutorial, infatti consta soltanto di cinque pagine.

    -> install.php
    -> conn.php
    -> default.php
    -> insert.php
    -> admin.php
    -> delete.php

    Queste cinque pagine possono essere racchiuse in due gruppi: Lato Utente e Lato Amministratore. Le pagine default.php e insert.php sono Lato Utente, in quanto interagiscono con gli utenti che visitano il Guestbook e quindi postano messaggi. Mentre le pagine admin.php e delete.php, sono Lato Amministratore perché vengono utilizzate appunto dall’ amministratore del Guestbook nel caso in cui si debba eliminare qualche messaggio. In fine le pagina conn.php e install.php possono essere classificate come Lato Utente/Lato Amministratore in quanto vengono utilizzate da entrambi. Proprio per questo motivo, iniziamo ad analizzare queste pagine.

    Pagina : install.php

    Questa pagina serve per creare il Database del nostro Guestbook e la tabella che contiene i messaggi postati dagli utenti.

    Creiamo il Database

    Codice PHP:
    mysql_connect("localhost""root")or die ("Non riesco a connettermi !");

    $strsql "CREATE DATABASE `guestbook`";
    $query mysql_query($strsql); 
    Creiamo la tabella

    Codice PHP:
    mysql_select_db("guestbook") or die ("Non riesco a selezionare la tabella ");

    $strsql2 "CREATE TABLE `messaggi` (
                `id` TINYINT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
                `testo` MEDIUMTEXT NOT NULL, 
                `data_ora` MEDIUMTEXT NOT NULL, 
                `autore` MEDIUMTEXT NOT NULL, 
                `email` MEDIUMTEXT NOT NULL, 
                `sito` MEDIUMTEXT NOT NULL, 
                `voto` SMALLINT(1) DEFAULT '1' NOT NULL
                ); "
    ;
    $query2 mysql_query($strsql2);

    mysql_close(); 
    Dopo aver creato il database e la tabella, aggiungiamo un comando, in modo che la pagina install.php ci porti direttamente alla pagina del guestbook, default.php

    Codice PHP:
    header('Location: default.php'); 
    Pagina: conn.php

    Questa pagina è fondamentale in quanto serve per effettuare la connessione con il database del nostro Guestbook. Per collegarci con il database utilizziamo i classici comandi offerti da MySQL

    Codice PHP:
    mysql_connect("localhost""root") or die ("Non riesco a selezionare la tabella "); 
    Quindi selezioniamo il database su cui vogliamo lavorare

    Codice PHP:
    mysql_select_db("guestbook") or die ("Non riesco a selezionare la tabella"); 
    Una cosa molto importante da ricordare e che alla fine di ogni pagina che lavora con i database, bisogna sempre chiudere la connessione a MySQL.

    Lato Utente

    La parte Lato Utente, comprende quelle pagine, che interagiscono direttamente con l’ utente, cioè che permettono la visualizzazione dei messaggi postati sul nostro Guestbook, e l’ eventuale inserimento di nuovi messaggi. La pagina default.php è proprio quella che restituisce la lista di tutti i messaggi, mentre la pagina insert.php, è utilizzata dall’ utente per l’ inserimento del messaggio.

    Pagina: default.php

    La primissima operazione da effettuare è includere la pagina di connessione, in quanto tutte le pagine del nostro Guestbook lavorano con la tabella del Database:

    Codice PHP:
    include("conn.php"); 
    Ora possiamo iniziare con la vera programmazione del Guestbook ;-).
    Una cosa importante da fare, è quella di dare visione all’ utente sul numero di messaggi lasciati nel Guestbook. Per fare ciò basta soltanto contare il numero di record della tabella del Database e quindi restituire questo valore:

    Codice PHP:
    $strsql3 "select count(*) as numero from messaggi";
    $query3 mysql_query($strsql3);

    $row3 mysql_fetch_array($query3);
    $numero $row3["numero"];

    mysql_free_result($query3); 
    Quindi rendiamo in output questo valore nel codice Html del Guestbook:

    Codice PHP:
    I nostri Utenti hanno postato  <?=$numero?> messaggio/i
    E’ arrivato il momento di visualizzare i messaggi postati dagli Utenti. Questi messaggi non verranno visualizzati tutti in una pagina, altrimenti uscirebbe una pagina lunga chilometri, ma soltanto cinque messaggi per pagina; dobbiamo quindi impostare il numero di messaggi per pagina (quindi il numero di record da visualizzare) e per le pagine successive l’ inizio, ovvero il punto di partenza da cui selezioneremo gli altri messaggi; naturalmente nella prima pagina l’ inizio è zero:

    Codice PHP:
    $numero_record 5;
    if(!isset(
    $HTTP_GET_VARS["inizio"])){
        
    $inizio 0;
    }else{
        
    $inizio $HTTP_GET_VARS["inizio"];

    Ora selezioniamo dalla tabella del Database i messaggi, o meglio non tutti i messaggi ma a gruppi di cinque:

    Codice PHP:
    $strsql "select * from messaggi order by id desc limit $inizio,$numero_record";
    $query mysql_query($strsql); 
    Quindi troviamo il numero totale di record presenti nella tabella del Database:

    Codice PHP:
    $strsql2 "select * from messaggi";
    $query2 mysql_query($strsql2);

    $numero_record_totali mysql_numrows($query2); 
    Rimane soltanto di ricavare il numero totale di pagine in relazione al numero di messaggi che vogliamo visualizzare:

    Codice PHP:
    $numero_pagine ceil($numero_record_totali/$numero_record); 
    Finalmente possiamo rendere in output i messaggi del Guestbook. Per visualizzare i messaggi utilizziamo il classico ciclo While recuperando tutti i campi della tabella del Database:

    Codice PHP:
    while($row mysql_fetch_array($query)){
         
    $autore $row["autore"];
         
    $email $row["email"];
         
    $sito $row["sito"];
         
    $testo $row["testo"];
         
    $data_ora $row["data_ora"];
         
    $voto $row["voto"];
         
         echo
    "Autore: ".$autore." (".$email.")<br>";
         echo
    "Sito: ".$sito."<br>";
         echo
    "Testo: ".$testo."<br>";
         echo
    "Data e Ora: ".$data_ora."<br>";
         echo
    "Valutazione: ".$voto."<br><hr>";

    Siccome con il ciclo while non vengono visualizzati tutti i messaggi ma soltanto cinque, bisogna creare un For che restituisca il numero di pagine, in modo da andare avanti con la visualizzazione dei messaggi:

    Codice PHP:
    if($numero_pagine 1){
         for(
    $pagina 1$pagina <= $numero_pagine$pagina++){
              if(
    $pagina == $pagina_corrente){
                   echo
    "<b>".$pagina."</b>";
              }else{
                   echo
    "<a href='default.php?inizio=".(($pagina 1) * $numero_record)."'>".$pagina."</a>";
              }
         }
    }
    mysql_free_result($query);
    mysql_free_result($query2); 
    Chiudiamo la connessione a MySQL

    Codice PHP:
    mysql_close(); 
    La pagina default.php, è quasi giunta a termine, bisogna soltanto aggiungere il form che contiene i campi per l’ inserimento dei messaggi nella tabella del Database:

    Codice PHP:
    <form method="post" action="insert.php">
    Autore: <input type="text" name="autore" size="15">
    Sito (http://): <input type="text" name="sito" size="25">
    E-Mail: <input type="text" name="email" size="20">
    Testo: <textarea name="testo" cols="40" rows="6"></textarea>
    Voto: <select name="voto">
    <
    option value="1">1</option>
    <
    option value="2">2</option>
    <
    option value="3">3</option>
    <
    option value="4">4</option>
    <
    option value="5">5</option>
    </
    select>
    <
    input type="submit" value="Inserisci Messaggio">
    </
    form>
    ( * ) 
    Campi obbligatori 
    Pagina: insert.php

    Siccome dobbiamo utilizzare il Database del Guestbook, per prima cosa includiamo il file di connessione, poi recuperiamo i dati inviati dal form e impostiamo la data e l’ ora corrente:

    Codice PHP:
    include("conn.php");

    $autore $HTTP_POST_VARS["autore"];
    $sito $HTTP_POST_VARS["sito"];
    $email $HTTP_POST_VARS["email"];
    $testo $HTTP_POST_VARS["testo"];
    $voto $HTTP_POST_VARS["voto"];
    $data date("d/m/Y")." - ".date("H:i:s"); 
    Modifichiamo la variabile $sito, togliendo "http://" casomai l’ utente l’ avesse inserito nel campo del form:

    Codice PHP:
    $sito str_replace("http://"""$sito); 
    Ora dobbiamo eseguire una serie di controlli; prima verifichiamo se i campi obbligatori sono stati compilati. Quindi controlliamo che l’ indirizzo E-mail sia corretto ed infine inseriamo il messaggio nella tabella del Database:

    Codice PHP:
    if((strlen($autore) == 0) or (strlen($email) == 0) or (strlen($testo) == 0)){
         
    header('Location: default.php?messaggio=Attenzione,+devi+compilare+tutti+i+campi+obbligatori+!');
    }else{
         if(
    eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})",$email)){
              
    $strsql "insert into messaggi(id, testo, data_ora, autore, email, sito, voto) values('', '$testo', '$data', '$autore', '$email', '$sito', '$voto')";
              
    $query mysql_query($strsql);
              
    header('Location: default.php?messaggio=Messaggio+inserito+correttamente+!');
         }else{
              
    header('Location: default.php?messaggio=Specificare+un+indirizzo+E-mail+valido+!');
         }

    Chiudiamo la connessione al Database:

    Codice PHP:
    mysql_close(); 
    Se tutti questi controlli trovano qualche errore, o se il messaggio viene inserito, il codice ci riporta ala pagina default.php e manda in output un responso. Quindi bisogna tornare nelle pagina default.php e all' inizio della pagina, dopo l' inclusione del file di connessione, inserire il responso:

    Codice PHP:
    if(!isset($messaggio)){
         
    $messaggio "";
    }else{
         echo 
    "<font color='green'><b>".$messaggio."</b></font>";

    Lato Amministratore

    La parte Lato Amministratore, è riservata appunto all' Amministratore del sito, quindi non deve eccellere in grafica, ma deve essere semplice ed efficace, in quanto è utilizzate per eliminare i messaggi. Questa parte, comprende la pagina admin.php, nella quale è presente l' elenco di tutti i messaggi e la pagina delete.php, che serve per l' eliminazione dei messaggi.

    Pagina: admin.php

    Per prima cosa, includiamo sempre il file di connesione al Database:

    Codice PHP:
    include("conn.php"); 
    Quindi recuperiamo tutti i messagi dal Database attraverso il solito ciclo While e chiudiamo la connessione al Database:

    Codice PHP:
    $strsql "select * from messaggi order by id desc";
    $query mysql_query($strsql);

    while(
    $row mysql_fetch_array($query)){
         
    $id $row["id"];
         
    $autore $row["autore"];
         
    $testo $row["testo"];
         
    $email $row["email"];
         
    $sito $row["sito"];
         
    $data $row["data_ora"];
         
    $voto $row["voto"];

         echo 
    "<b>Autore: </b>".$autore." (".$email.")<br>";
         echo 
    "<b>Sito: </b>http://".$sito."<br>";
         echo 
    "<b>Testo: </b>".$testo."<br>";
         echo 
    "<b>Data e Ora: </b>".$data."<br>";
         echo 
    "<b>Voto: </b>".$voto."<br>";
         echo 
    "<a href='delete.php?id=".$id."'>Elimina</a><hr>";    
    }

    mysql_free_result($query);
    mysql_close(); 
    Sotto la visualizzazione di ogni messaggio, aggiungiamo un collegamento alla pagina delete.php, che invierà l' id del messaggio.

    Pagina: delete.php

    Come al solito, includiamo il file di connessione alla tabella del nostro Database:

    Codice PHP:
    include("conn.php"); 
    Ora recuperiamo l' id del messaggio, che precedentemente è stato inviatao dalla pagina admin.php, ed eliminiamo il messaggio dalla tabella del Database:

    Codice PHP:
    $id $HTTP_GET_VARS["id"];

    $strsql "delete from messaggi where id = $id";
    $query mysql_query($strsql);
    header('Location: admin.php');[/code]

    Dopo aver eliminato il messaggioil codice ci porterà di nuovo alla pagina admin.phpInfine chiudiamo la connessione al Database:

    [
    code]mysql_close(); 
    Conclusioni

    Puoi scaricare il codice sorgente completo di questo Tutorial per testarlo o intergrarlo nel tuo sito web. Ecco il link PHP Guestbook (14 Kb)
    Ultima modifica di Master85; 20-11-2006 16:22 

+ Rispondi al Thread

Discussioni simili

  1. Risposte: 3
    Ultimo Post: 04-10-2006, 19:52
  2. Articolo: Realizzare la pagina "chi siamo"
    Da DaniloChiantia nel forum Grafica, Internet Marketing, SEO
    Risposte: 0
    Ultimo Post: 29-11-2005, 15:50

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi