Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Guestbook

  1. #1
    Utente di HTML.it L'avatar di otium
    Registrato dal
    Nov 2003
    Messaggi
    154

    [PHP] Guestbook

    Sto cercando di rendere il codice di questo guestbook valido per XHTML 1.0 Transitional

    Errori del validatore W3C

    Cosa dovrei correggere?

    Questo è il codice della pagina:

    Codice PHP:
    <body>
    <div id="container">
    [img]images/header.png[/img]
    <div id="wrapper">
    <div id="content">
    <h1>Guestbook</h1>
    <?php
    class guestbook {
        
    // parametri
        
    var $separatore_righe "--inizioriga--";
        var 
    $separatore_campi "--finecampo--";
            
    // numero di record mostrato per pagina: è possibile modificare questo valore a vostro piacimento
        
    var $record_per_pagina 10;
            
    // informazioni sulla locazione e sul nome del file di testo
        
    var $percorso_fisico_guest "";
        var 
    $guesttxt "guests.txt";
        var 
    $nomefile;
            
    // larghezza in pixel della tabella esterna
        
    var $larghezza_tabella "600";
            
    // settando questa opzione a vero, il visitatore potrà visualizzare i dettagli di un singolo record
        
    var $mostra_dettagli true;
        
    // caratteristiche del guestbook
        
    var $righe = array();
        var 
    $posizione;
        var 
    $numero_righe;
        var 
    $book;
        var 
    $linea;
        
    // COSTRUTTORE
        
    function guestbook() {
            
    $this->nomefile $this->percorso_fisico_guest.$this->guesttxt;
            if (isset(
    $_POST["indietro"]) || isset($_POST["avanti"])) {
                
    $this->posizione $_POST["posizione"];
                
    $this->leggi_guestbook();
            } else {
                if (isset(
    $_POST["azione"]) && ($_POST["azione"] == "inserimento")) {
                    
    $this->posizione 0;
                } else {
                    
    $this->leggi_guestbook();
                    
    $this->posizione 0;
                }
            }
        }
        
    // metodo per il calcolo della data
        
    function dataora_attuale() {
            
    $mesi = array("gennaio""febbraio""marzo""aprile""maggio""giugno""luglio""agosto""settembre""ottobre""novembre""dicembre");
            
    $mese = (int)date("m") - 1;
            
    $data date("d")." ".$mesi[$mese]." ".date("Y");
            
    $ora strftime ("%H:%M");
            
    $data_finale $data." ore: ".$ora;
            return 
    $data_finale;
        }
        
    // rimozione tag HTML
        
    function striptags($stringa) {
            
    $tag_consentiti '[b][i]<u>
    '
    ;
            return 
    strip_tags($stringa$tag_consentiti );
        }
        
    // metodo per leggere il file di testo. Verrà memorizzato nella caratteristica $book
        
    function leggi_guestbook() {
            if (!
    file_exists($this->nomefile)) {
                echo 
    '
                    <h2>ERRORE:</h2>
                    Il file '
    .$this->nomefile.' non è presente su disco.

                    Createlo, anche vuoto, e riavviate lo script
                '
    ;
                die;
            }
            
    $dimensione filesize ($this->nomefile);
            if (
    $dimensione == 0) {
                
    $this->numero_righe 0;
                return;
            }
            
    $this->book =  stripslashes(file_get_contents($this->nomefile));
            
    $this->righe split($this->separatore_righe$this->book);
            
    $this->righe array_reverse($this->righe);
            
    $this->numero_righe count($this->righe) - 1;
        }
        
    // metodo per mostrare un singolo record
        
    function mostra_record($indice) {
            list (
    $dataora$nome$email$citta$contatto$commento) = split($this->separatore_campi$this->righe[$indice]);
            
    $html_record '<table border="0" width="'.($this->larghezza_tabella-4).'" class="tabellaesterna">';
            
    $html_record .= '
                <tr>
                    <td>
                        <table border="0" width="'
    .($this->larghezza_tabella-20).'" cellspacing="0" cellpadding="2" class="tabellainterna">
                            <tr>
                                <td width="100" align="left" class="intestazione">
                                    inserito il:
                                </td>
                                <td align="left" class="testo">
                                    '
    .$dataora.'
                                </td>
                            </tr>
                            <tr>
                                <td width="100" align="left" class="intestazione">
                                    Nome:
                                </td>
                                <td align="left" class="testo">
                                    '
    .$this->striptags($nome).'
                                </td>
                            </tr>
                            <tr>
                                <td width="100" align="left" class="intestazione">
                                    e-mail:
                                </td>
                                <td align="left" class="testo">
                                    '
    .$this->striptags($email).'
                                </td>
                            </tr>
                            <tr>
                                <td width="100" align="left" class="intestazione">
                                    Città:
                                </td>
                                <td align="left" class="testo">
                                    '
    .$this->striptags($citta).'
                                </td>
                            </tr>
                            <tr>
                                <td width="100" align="left" class="intestazione">
                                    riferito da:
                                </td>
                                <td align="left" class="testo">
                                    '
    .$this->striptags($contatto).'
                                </td>
                            </tr>
                            <tr>
                                <td width="100" align="left" class="intestazione" valign="top">
                                    Commento:
                                </td>
                                <td align="left" class="testo" valign="top">
                                    '
    .$this->striptags($commento).'
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            '
    ;
            
    $html_record .= '<tr><td>[url="guestbook.php"]torna alla lista[/url]</td></tr>';
            
    $html_record .= '</table>';
            return 
    $html_record;
        }
        
    // metodo per gestire la visualizzazione della lista dei record con paginazione
        
    function mostra_lista() {
            if (
    $this->numero_righe == 0) {
                return 
    "nessuno fin ora ha firmato il guestbook";
            }
            
    $limite $this->record_per_pagina// numero di record mostrati per pagina
            
    if (isset($_POST["indietro"])) { 
                
    $this->posizione--; 
                
    $inizio $this->posizione*$limite;
            } else if (isset(
    $_POST["avanti"])) { 
                    
    $this->posizione++; 
                    
    $inizio $this->posizione*$limite;
                } else {    
                    
    $inizio 0;
                }
            
    $contatore 0;
            
    $indice_riga $inizio;
            
    $html_lista '<table border="0" width="'.($this->larghezza_tabella-4).'" class="tabellaesterna">';
            while ((
    $indice_riga $this->numero_righe) && ($contatore $limite)) {
                list (
    $dataora$nome$email$citta$contatto$commento) = split($this->separatore_campi$this->righe[$indice_riga]);
                if (
    $this->mostra_dettagli) {
                    
    $dettagli '[url="javascript: document.mostradettagli.indice.value=\''.$indice_riga.'\'; document.mostradettagli.submit()"]dettagli[/url]';
                } else {
                    
    $dettagli '';
                }
                
    $html_lista .= '
                    <tr>
                        <td valign="top">
                            <table border="0" width="'
    .($this->larghezza_tabella-26).'" cellspacing="0" cellpadding="4" class="tabellainterna" align="center">
                                <tr>
                                    <td width="100" align="left" class="intestazione">
                                        Nome:
                                    </td>
                                    <td align="left" class="testo">
                                        '
    .$this->striptags($nome).'
                                    </td>
                                </tr>
                                <tr>
                                    <td width="100" align="left" class="intestazione">
                                        Città:
                                    </td>
                                    <td align="left" class="testo">
                                        '
    .$this->striptags($citta).'
                                    </td>
                                </tr>
                                <tr>
                                    <td valign="top" width="100" align="left" class="intestazione">
                                        Commento:
                                    </td>
                                    <td valign="top" align="left" class="testo">
                                        '
    .ereg_replace("\n""
    "
    $this->striptags($commento)).'
                                    </td>
                                </tr>
                                <tr>
                                    <td align="left" width="100" valign="top" class="intestazione">
                                        '
    .$dettagli.'
                                    </td>
                                    <td align="right">
                                        '
    .$dataora.'
                                    </td>
                                </tr>
                            </table>
                        <td>
                    </tr>
                '
    ;
                
    $contatore++;
                
    $indice_riga++;
            }
            
    $html_pulsanti '';
            if (
    $this->numero_righe $limite) {
                if (
    $inizio >=  $limite) {
                    
    $html_pulsanti .= '<input type="submit" value="<<" name="indietro" class="pulsanti">';
                }
                if (
    $indice_riga $this->numero_righe) {
                    
    $html_pulsanti .= '<input type="submit" value=">>" name="avanti" class="pulsanti">';
                }
            }
            
    $html_lista .= '
                        <form method="post" action="guestbook.php" name="pageing">
                <tr>
                    <td>
                            <input type="hidden" value="mostralista" name="azione" />
                            <input type="hidden" name="posizione" value="'
    .$this->posizione.'" />
                            '
    .$html_pulsanti.'
                    </td>
                </tr>
                        </form>
            '
    ;
            
    $html_lista .= '
                </table>
                        <form method="post" action="guestbook.php" name="mostradettagli">
                            <input type="hidden" value="dettagli" name="azione" />
                            <input type="hidden" name="indice" value="" />
                        </form>
                '
    ;
            return 
    $html_lista;
        }
        
    // Metodo per l'inserimento di un nuovo record
        
    function aggiungi_record() {
            
    $test_non_vuoto trim($_POST["nome"].$_POST["email"].$_POST["citta"].$_POST["contatto"].$_POST["commento"]);
            if (
    $test_non_vuoto != "") {
                
    $this->linea $this->separatore_righe.$_POST["dataora"].$this->separatore_campi.$_POST["nome"].$this->separatore_campi.$_POST["email"].$this->separatore_campi.$_POST["citta"].$this->separatore_campi.$_POST["contatto"].$this->separatore_campi.$_POST["commento"]."\r\n";
                
    $puntatore fopen($this->nomefile"a");
                
    $this->linea $this->striptags($this->linea);
                
    fputs($puntatore$this->linea);
                
    fclose($puntatore);
            }
            
    $this->leggi_guestbook();
        }
        
    // metodo per la raccolta dati di un nuovo record
        
    function leggi_dati() {
            
    $html_form_immissione '
                <script type="text/javascript" language="JavaScript">
                    <!--
                        function controlla() {
                            if ((document.inseriscirecord.nome.value == \'\') || (document.inseriscirecord.commento.value == \'\')) {
                                alert(\'inserisci almeno il nome e un commento!\');
                                return false;
                            } else {
                                return true;
                            }
                        }
                    //-->
                </script>
                <form method="post" action="guestbook.php" name="inseriscirecord" onsubmit="return controlla();">
                      <table border="0" width="'
    .($this->larghezza_tabella 2).'" cellspacing="1" cellpadding="4" class="tabellainterna">
                        <tr>
                            <td colspan="2" class="intestazione" width="'
    .($this->larghezza_tabella 2).'">
                                Firma il nostro guestbook!
                            </td>
                        </tr>
                        <tr>
                            <th align="left">
                                nome: 
                            </th>
                            <td>
                                <input type="text" name="nome" size="40" class="areatesto" />
                            </td>
                        </tr>
                        <tr>
                            <th align="left">
                                e-mail: 
                            </th>
                            <td>
                                <input type="text" name="email" size="40" class="areatesto" />
                            </td>
                        </tr>
                        <tr>
                            <th align="left">
                                città: 
                            </th>
                            <td>
                                <input type="text" name="citta" size="40" class="areatesto" />
                            </td>
                        </tr>
                        <tr>
                            <th align="left">
                                riferito

                                da: 
                            </th>
                            <td>
                                <input type="text" name="contatto" size="40" class="areatesto" />
                            </td>
                        </tr>
                        <tr>
                            <th align="left" valign="top">
                                commenti: 
                            </th>
                            <td>
                                <textarea name="commento" rows="5" cols="45" class="areatesto"></textarea>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2" class="intestazione">
                                <input type="hidden" value="inserimento" name="azione" />
                                <input type="hidden" name="dataora" value="'
    .$this->dataora_attuale().'" />
                                <input type="submit" name="postati" value="vai !" class="pulsanti" />
                                <input type="reset" name="cancell" value="cancella" class="pulsanti" />
                            </td>
                        </tr>    
                    </table>
                </form>
            '
    ;
            return 
    $html_form_immissione;
        }
    }
    $guests = new guestbook();
    if (isset(
    $_POST["azione"]) && ($_POST["azione"] == "inserimento")) {
        
    $guests->aggiungi_record();

    $html "<table><tr><td>";
    if (isset(
    $_POST["azione"]) && ($_POST["azione"] == "dettagli")) {
        
    $html .= $guests->mostra_record($_POST["indice"]);
    } else {
        
    $html .= $guests->mostra_lista();
    }
    $html .= "</td></tr><tr><td>";
    $html .= $guests->leggi_dati();
    $html .= "</td></tr></table>";
    unset(
    $guests);
    ?>
    <?=$html?>
    </div>
    </div>
    <?php
    include("menu.php");
    ?>
    <div id="banner">Qui ci va il banner
    </div>
    </div>
    </body>
    </html>
    Pilota virtuale ACVPadova

  2. #2
    Utente di HTML.it L'avatar di otium
    Registrato dal
    Nov 2003
    Messaggi
    154
    E questo è il CSS associato

    codice:
    body {margin: auto;
          padding: 0;
    		vertical-align: top;
    		font-family: Countryblueprint, times, serif;
              }
    
    h1 {text-align: center;
       }		
    		
    p {margin:0 10px 10px 5px;}
    
    p#centrato {margin:0 10px 10px 5px;
                text-align: center;
    		     }
    		
    div#container {text-align: left;
                   width:990px;
                   margin:0 auto;
                  }
    
    div#wrapper {float:left;
                 width:100%
                }			 
    			 
    div#content {width: 660px;
                 margin: 20px 150px 0px 180px;
    		       font-family: Countryblueprint, times, serif;
                }
    		   
    div#navigation {float:left;
                    width: 175px;
                    margin-left:-990px;
                   }
    
    img {border: 0;
        }
    
    div#banner {float:left;
                width:150px;
    		      margin-left:-150px;
               }
      
    /* Guestbook */
    
    .tabellaesterna
    {
    	background-color: #ed8888; 
    	text-decoration: none;
    	color: #FFFFFF;
    	font-family: Verdana, serif;
    	font-size: 10pt;
    	padding-top: 4pt;
    	padding-right: 0pt;
    	padding-bottom: 4pt;
    	padding-left: 0pt;
    	border-width: 2px;
    	border-style: outset;
    	empty-cells: show;
    	margin: 0px;
    }
    .pulsanti
    {
    	background-color: #ffffff; 
    	font-family: Tahoma, Verdana, serif;
    	font-size: 10pt;
    	font-style: normal;
    	font-variant: normal;
    	font-stretch: normal;
    	color: #c80f0f;            
    	border-width: 1px;
    	border-style: outset;
    	border-color: #d21f1f;     
    	outline-style: double;
    	outline-width: 1px;
    	padding: 1px;
    	margin: 1px;
    	text-decoration: none;
    }
    .areatesto
    {
    	font-family: Verdana, Tahoma, Arial, serif;
    	font-size: 10pt;
    	font-weight: normal;
    	font-style: normal;
    	font-variant: normal;
    	font-stretch: normal;
    	font-size-adjust: none;
    	color: #000000;
    	text-decoration: none;
    	text-align: left;
    	text-transform: none;
    	vertical-align: middle;
    	line-height: normal;
    	word-spacing: normal;
    	letter-spacing: normal;
    	white-space: normal;
    	margin-top: 0px;
    	margin-right: 0px;
    	margin-bottom: 0px;
    	margin-left: 0px;
    	padding-top: 1px;
    	padding-right: 1px;
    	padding-bottom: 1px;
    	padding-left: 1px;
    	border-width: 1px;
    	border-style: inset;
    	border-color: #000000;
    	outline-width: 0px;
    	outline-style: none;
    	background-color: #FFFFFF;
    }
    .tabellainterna
    {
    	background-color: #FFFFFF; 
    	text-decoration: none;
    	color: #c40000;            
    	font-family: Verdana, serif;
    	font-size: 10pt;
    	border-width: 1px;
    	border-style: solid;
    	border-color: #000000;     
    	margin: 0px;
    	padding: 0px;
    }
    .intestazione
    {
    	background-color: #bc1515; 
    	color: #FFFFFF;
    	font-style: normal;
    	font-family: Verdana, serif;
    	font-size: 10pt;
    }
    .testo
    {
    	font-family: Tahoma, serif;
    	font-size: 10pt; 
    }
    Pilota virtuale ACVPadova

  3. #3
    non devi postare il codice php, ma il codice html della pagina

  4. #4
    Utente di HTML.it L'avatar di otium
    Registrato dal
    Nov 2003
    Messaggi
    154
    Come si rende questo guestbook tableless?
    Suggerimenti?
    Pilota virtuale ACVPadova

  5. #5
    prova a togliere le tabelle ad esempio....oppure guarda nella mia firma

  6. #6
    Utente di HTML.it L'avatar di otium
    Registrato dal
    Nov 2003
    Messaggi
    154
    Originariamente inviato da pugia
    prova a togliere le tabelle ad esempio....oppure guarda nella mia firma
    Togliere le mie tabelle è il mio obiettivo, però non sono molto pratico di PHP, quindi temo di fare errori.

    Grazie per la proposta del Pugiabook, ma avrei difficoltà ad integrarlo nelle mie pagine, mi sembra complesso!
    Pilota virtuale ACVPadova

  7. #7
    come ti hanno già scritto sopra, il problema non è nel php ma nel codice html che viene generato!

    Per quanto riguarda il pugiabook ti assicuro che è molto semplice da integrare nelle proprie pagine, se come viene generato te ne accorgerai

  8. #8
    Ciao Otium.
    Fai così: apri una pagina del tuo guestbook dal browser, il php viene parsato e il browser visualizzerà SOLO html (o xhtml).
    Se per esempio usi MSIE clicca con il tasto dx del mouse in uno spazio vuoto della pagina e poi sulla voce "HTML" (o su "Visualizza sorgente pagina" nel caso di FireFox): quello è il codice HTML su cui lavorare per correggere eventuali errori di validità segnalati dal W3C validator.

    È necessario fare così anche perché il numero di riga che il validator W3C ti segnala è quello del file html generato dallo script php, non quello dello script php (che ovviamente non può essere letto lato client).

    Fatto questo sarà tutto più semplice: per esempio il validator potrebbe dirti (tanto per fare un esempio):
    codice:
    line 34: IMG attribute "ALT" missing;
    il che vuol dire che l'attributo alt (= alternative text) del tag img alla riga 34 non è presente, così vedi a che punto del tuo script viene generata la riga 34 e lo aggiungi/correggi... Ok?

    Alcune considerazioni
    Ovviamente un pagina php è quasi inevitabilmente dinamica (= ragione per cui usi php, altrimenti useresti solo html), questo vuol dire che il contenuto html generato dipende dalle istruzioni (condizionali) dello script, e quindi non è sempre lo stesso.
    Ciononostante gli errori di validità W3C saranno sempre gli stessi perché il validator analizza il contenuto della pagina senza alcun inserimento di valori in eventuali campi dei form.
    Ciò vuol dire che se vuoi analizzare errori eventualmente generati in seguito alla compilazione dei form, o in seguito a diversi valori di variabili locali o superglobali (= di sessione, get/post, cookies...) dovrai inserire manualmente quelle variabili nello script e validare la pagina conseguentemente generata.

    Ciao
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  9. #9
    Utente di HTML.it L'avatar di otium
    Registrato dal
    Nov 2003
    Messaggi
    154
    Questo è html generato dal guestbook inserendo un messaggio:
    codice:
    <body>
    <div id="container">
    [img]images/header.png[/img]
    <div id="wrapper">
    <div id="content">
    <h1>Guestbook</h1>
    
    <table><tr><td><table border="0" width="596" class="tabellaesterna">
    				<tr>
    					<td valign="top">
    						<table border="0" width="574" cellspacing="0" cellpadding="4" class="tabellainterna" align="center">
    							<tr>
    
    								<td width="100" align="left" class="intestazione">
    									Nome:
    								</td>
    								<td align="left" class="testo">
    									pippo
    								</td>
    							</tr>
    							<tr>
    								<td width="100" align="left" class="intestazione">
    									Città:
    								</td>
    
    								<td align="left" class="testo">
    									
    								</td>
    							</tr>
    							<tr>
    								<td valign="top" width="100" align="left" class="intestazione">
    									Commento:
    								</td>
    								<td valign="top" align="left" class="testo">
    									prova
    
    
    
    								</td>
    							</tr>
    							<tr>
    								<td align="left" width="100" valign="top" class="intestazione">
    									dettagli
    								</td>
    								<td align="right">
    									01 maggio 2006 ore: 00:11
    								</td>
    
    							</tr>
    						</table>
    					<td>
    				</tr>
    			
    					<form method="post" action="guestbook.php" name="pageing">
    			<tr>
    				<td>
    						<input type="hidden" value="mostralista" name="azione" />
    						<input type="hidden" name="posizione" value="0" />
    
    						
    				</td>
    			</tr>
    					</form>
    		
    			</table>
    					<form method="post" action="guestbook.php" name="mostradettagli">
    						<input type="hidden" value="dettagli" name="azione" />
    						<input type="hidden" name="indice" value="" />
    					</form>
    			</td></tr><tr><td>
    
    			<script type="text/javascript" language="JavaScript">
    				<!--
    					function controlla() {
    						if ((document.inseriscirecord.nome.value == '') || (document.inseriscirecord.commento.value == '')) {
    							alert('inserisci almeno il nome e un commento!');
    							return false;
    						} else {
    							return true;
    						}
    					}
    				//-->
    			</script>
    			<form method="post" action="guestbook.php" name="inseriscirecord" onsubmit="return controlla();">
      				<table border="0" width="598" cellspacing="1" cellpadding="4" class="tabellainterna">
    					<tr>
    						<td colspan="2" class="intestazione" width="598">
    							Firma il nostro guestbook!
    						</td>
    					</tr>
    					<tr>
    
    						<th align="left">
    							nome: 
    						</th>
    						<td>
    							<input type="text" name="nome" size="40" class="areatesto" />
    						</td>
    					</tr>
    					<tr>
    						<th align="left">
    
    							e-mail: 
    						</th>
    						<td>
    							<input type="text" name="email" size="40" class="areatesto" />
    						</td>
    					</tr>
    					<tr>
    						<th align="left">
    							città: 
    						</th>
    
    						<td>
    							<input type="text" name="citta" size="40" class="areatesto" />
    						</td>
    					</tr>
    					<tr>
    						<th align="left">
    							riferito
    
    							da: 
    						</th>
    
    						<td>
    							<input type="text" name="contatto" size="40" class="areatesto" />
    						</td>
    					</tr>
    					<tr>
    						<th align="left" valign="top">
    							commenti: 
    						</th>
    						<td>
    
    							<textarea name="commento" rows="5" cols="45" class="areatesto"></textarea>
    						</td>
    					</tr>
    					<tr>
    						<td colspan="2" class="intestazione">
    							<input type="hidden" value="inserimento" name="azione" />
    							<input type="hidden" name="dataora" value="01 maggio 2006 ore: 14:25" />
    							<input type="submit" name="postati" value="vai !" class="pulsanti" />
    							<input type="reset" name="cancell" value="cancella" class="pulsanti" />
    
    						</td>
    					</tr>	
    				</table>
    			</form>
    		</td></tr></table></div>
    </div>
    <div id="navigation">
    [img]images/home.png[/img]
    
    [img]images/gallery.png[/img]
    
    [img]images/mezzobicchiere.png[/img]
    
    [img]images/guestbook.png[/img]
    
    [img]images/contatti.png[/img]
    </div><div id="banner">Qui ci va il banner
    
    </div>
    </div>
    </body>
    Errori rilevati dal validatore
    Pilota virtuale ACVPadova

  10. #10
    chiedi a un moderatore di spostare la discussione, non ha molto a che fare col piaccappì

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.