Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    guestbook in php senza il database!

    ciao a tutti!

    dopo molta ricerca, ho trovato il codice in php che permette di creare un guestbook senza aver bisogno di un database di supporto: si inserisce un nome, il messaggio e confermando il messaggio si salva nella stessa pagina.
    volevo però capire come funziona il codice, qualcuno potrebbe gentilmente commentarlo?
    grazie a tutti! buona serata!

    codice:
    <?PHP ob_start(); header("Cache-Control: No-Cache"); if (!is_file("philip_data")){ $dbc = sqlite_open("philip_data"); $query = "CREATE TABLE guestbook (inputId PRIMARY KEY, inputText TEXT NOT NULL);"; sqlite_query($dbc,$query); header("Location: {$_SERVER['PHP_SELF']}"); } else { $dbc = sqlite_open("philip_data"); if ($_POST['message']){ $tid = date("H:i:s d/m-Y"); $_POST['message'] = stripslashes(htmlspecialchars($_POST['message'])); $_POST['name'] = stripslashes(htmlspecialchars($_POST['name'])); $mess = "Postet av: {$_POST['name']}
    
    {$_POST['message']}
    
    Postet: $tid<hr/>"; $query = "INSERT INTO guestbook (inputText) VALUES ('$mess');"; sqlite_query($dbc,$query); header("Location: {$_SERVER['PHP_SELF']}"); } $query = "SELECT inputText FROM guestbook ORDER BY inputId DESC;"; $array = sqlite_single_query($dbc,$query); if(count($array)>15){ $extrapages = floor(count($array)/15); $extrapages++; if (count($array)%15 == 0){ $extrapages--; } if($_GET['page']){ $num = $_GET['page'] * 15; for($i=$num;$i<count($array);$i++){ $extra[] = array_pop($array); } for($i=0;$i<$num-15;$i++){ $extra[] = array_shift($array); } } else { for($i=15;$i<count($array);$i++){ $extra[] = array_pop($array); } } } echo "<table border=\"0\" cellpadding=\"10\" cols=\"50\"><tr><td><form action=\"{$_SERVER['PHP_SELF']}\" method=\"POST\">Socio: <input type=\"text\" name=\"name\" />
    Scrivi il tuo messaggio:
    <textarea cols=\"30\" rows=\"10\" name=\"message\"></textarea>
    <input type=\"submit\" value=\"Firma.\"/></form></td></tr>"; if($array && is_array($array)){ foreach ($array as $input){ echo "<tr><td width=\"20\">$input</td></tr>\n"; } } elseif ($array){ echo "<tr><td width=\"20\">$array</td></tr>"; } else { echo "<td><tr><h4>Ecco tutti i messaggi dei soci!</h4></td></tr>"; } echo "</table>"; if ($extrapages != 0){ echo extrapages($extrapages); } } function extrapages($num){ $to = "<table borders=\"0\" cellpadding=\"10\"><tr><td>"; for($i=0;$i<$num;$i++){ $top = $i+1; $to .= "<a href=\"?page=$top\">$top</a> "; } $to .= "</td></tr></table>"; return $to; } ?>
    ehi ehi ehi! what's your name?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    161
    non è che questo codice non utilizzi un database...

    Dopo che con PHP non è stato più fornito il supporto alle librerie per l'accesso a MySQL, è stato implementato il supporto a SQLite per aiutare chi ha necessità di un database ma ha solamente accesso alla configurazione minima di PHP.
    Ed è quello che utilizza questo codice.

    sqlite_open apre un database SQLite e crea il database se non esiste, dopo di che viene utilizzato quel database

  3. #3
    okay; grazie!

    però volevo capire come funziona il codice, gentilmente qualcuno me lo commenta un po'?

    buona giornata!
    ehi ehi ehi! what's your name?

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    indentalo!!!!
    Da un'occhiata veloce mi sembra ci sia poco da commentare cmq!!!

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    indentalo!!!!
    Da un'occhiata veloce mi sembra ci sia poco da commentare cmq!!!

  6. #6
    magari un po' come funziona la parte del database...
    ...

    codice:
    <?PHP
    	ob_start();
    	header("Cache-Control: No-Cache");
    	if (!is_file("philip_data")){		// controllo se esiste il file
    		$dbc = sqlite_open("philip_data");	// variabile d'apertura sqlite il file di tipo database
    		$query = "CREATE TABLE guestbook (inputId PRIMARY KEY, inputText TEXT NOT NULL);";
    		sqlite_query($dbc,$query);
    		header("Location: {$_SERVER['PHP_SELF']}");
    	} else {
    	 	$dbc = sqlite_open("philip_data");
    	 	if ($_POST['message']){
    	 	 	$tid = date("H:i:s d/m-Y");	// variabile data con formato definito
    	 	 	$_POST['message'] = stripslashes(htmlspecialchars($_POST['message']));
    	 	 	$_POST['name'] = stripslashes(htmlspecialchars($_POST['name']));
    			$mess = "Postet av: {$_POST['name']}
    
    {$_POST['message']}
    
    Postet: $tid<hr/>";
    			$query = "INSERT INTO guestbook (inputText) VALUES ('$mess');";
    			sqlite_query($dbc,$query);
    			header("Location: {$_SERVER['PHP_SELF']}");
    		}
    		$query = "SELECT inputText FROM guestbook ORDER BY inputId DESC;";
    		$array = sqlite_single_query($dbc,$query);
    		if(count($array)>15){
    		 	$extrapages = floor(count($array)/15);
    		 	$extrapages++;
    		 	if (count($array)%15 == 0){
    				$extrapages--;
    			}
    			if($_GET['page']){
    				$num = $_GET['page'] * 15;
    				for($i=$num;$i<count($array);$i++){
    					$extra[] = array_pop($array);
    				}
    				for($i=0;$i<$num-15;$i++){
    					$extra[] = array_shift($array);
    				}
    			} else {
    				for($i=15;$i<count($array);$i++){
    					$extra[] = array_pop($array);
    				}
    			}
    		}
    		echo "<table border=\"0\" cellpadding=\"10\" cols=\"50\"><tr><td><form action=\"{$_SERVER['PHP_SELF']}\" method=\"POST\">Socio: <input type=\"text\" name=\"name\" />
    Scrivi il tuo messaggio:
    <textarea cols=\"30\" rows=\"10\" name=\"message\"></textarea>
    <input type=\"submit\" value=\"Firma.\"/></form></td></tr>";
    		if($array && is_array($array)){
    			foreach ($array as $input){
    				echo "<tr><td width=\"20\">$input</td></tr>\n";
    			}
    		} elseif ($array){
    			echo "<tr><td width=\"20\">$array</td></tr>";
    		} else {
    			echo "<td><tr><h4>Ecco tutti i messaggi dei soci!</h4></td></tr>";
    		}
    		echo "</table>";
    		if ($extrapages != 0){
    			echo extrapages($extrapages);
    		}
    	}
    	function extrapages($num){
    		$to = "<table borders=\"0\" cellpadding=\"10\"><tr><td>";
    		for($i=0;$i<$num;$i++){
    		 	$top = $i+1;
    			$to .= "<a href=\"?page=$top\">$top</a> ";
    		}
    		$to .= "</td></tr></table>";
    		return $to;
    	}
    ?>
    ehi ehi ehi! what's your name?

  7. #7
    anche perchè, volevo capire come salvare i messaggi dentro una listbox e non all'esterno, contenuti nella pagina come credo faccia questo codice.

    qualcuno ha qualche idea?

    vi ringrazio!
    ehi ehi ehi! what's your name?

  8. #8
    okay dai, mi spiego meglio:

    mi basta questa parte:

    codice:
    $query = "SELECT inputText FROM guestbook ORDER BY inputId DESC;";	// crea la query per l'ordinamento
    $array = sqlite_single_query($dbc,$query);	// ordina i messaggi in ordine decrescente
    		if(count($array)>15){
    		 	$extrapages = floor(count($array)/15);
    		 	$extrapages++;
    		 	if (count($array)%15 == 0){
    				$extrapages--;
    			}
    			if($_GET['page']){
    				$num = $_GET['page'] * 15;
    				for($i=$num;$i<count($array);$i++){
    					$extra[] = array_pop($array);
    				}
    				for($i=0;$i<$num-15;$i++){
    					$extra[] = array_shift($array);
    				}
    			} else {
    				for($i=15;$i<count($array);$i++){
    					$extra[] = array_pop($array);
    				}
    			}
    		}
    inoltre non riesco a capire il significato di: inputId PRIMARY KEY e inputText TEXT NOT NULL che in questo spezzone l'inputId viene ordinato decrescentemente.
    ehi ehi ehi! what's your name?

  9. #9
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    una volta che la tabella è creata quel pezzo di codice "CREATE TABLE etc etc" lo puoi togliere.......

    http://www.vbsimple.net/database/db_08_11.htm

  10. #10
    difatti viene usato solamente per crearla nel caso il file non esistesse, se invece esiste inserisce solamente i dati con "INSERT INTO".

    ecco, ma appunto non so cosa sia: (inputId PRIMARY KEY, inputText TEXT NOT NULL).

    ciao ciao!
    ehi ehi ehi! what's your name?

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.