ESEMPI PHP

 

Di seguito sono riportati alcuni esempi di php.

 

 
1.HELLO WORLD !!!

 

Semplice script PHP che invia il testo "HELLO WORLD !!!" al browser
 
 
<html>
<body>
 
<?php  //inizio
//Uno script PHP inizia sempre con <? php e finisce con ? >
echo "HELLO WORLD !!!"; //echo è l'istruzione utilizzata per visualizzare il testo. Si può usare anche print
//fine
?> 
 
</html>
</body>
 
 
 
 
 
2. IF...ELSE
Il seguente esempio stampa in output il messaggio "Buon fine settimana!" se il giorno corrente è Venerdì,"Buona Domenica!!!" se il giorno corrente è Domenica, "Buona giornata!!!" se è un altro giorno:
 
<html>
<body>
<?php
$d=date("D"); //una variabile in PHP inizia con il segno $ seguito dal nome della variabile
if($d=="Fri")
{
echo "Buon fine settimana!!!";
}
elseif ($d=="Sun")
{
echo "Buona Domenica!!!";
}
else
{
echo "Buona giornata!!!";
}
 
?>
</body>
</html>
 
 
 
 
 
3. FILE
L'esempio seguente apre una file e lo legge riga per riga
 
<?php 
 
echo "Apro il file hello : "; 
//fopen("nome_file","modalità_apertura"), apre il file
$file = fopen("hello.php","r") or exit("Impossibile aprire il file!");
//fgetc legge il file carattere per carattere, feof fino alla fine del file
//fgets legge il file riga per riga
while(!feof($file));
{
echo fgets($file);
}
 
//chiusura file
fclose($file);
?>
 
Il file hello.php conterrà: 
 
<html>
<body>
 
<?php
echo "Hello World";
?>
 
</body>
</html>
 
 
 
 
 
4.FILE UPLOAD
 
Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato
 
<html>
<body>
 
<form action="upload_file.php" method="post"
option indica che i file saranno caricati in upload_file
enctype="multipart/form-data"
enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo
multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare
>
 
<label for="file">Filename:</label> 
 
<input type="file" name="file" id="file"/>
<br />
<input type="submit" name="submit" value="Submit"/> 
 
</form>
</html>
</body>
 
 
Il file "upload_file.php" stampa le informazioni del file caricato, contiene: 
 
<html>
<body>
<?php
if($_FILES["file"]["error"] > 0)
{
echo "Error:" .$_FILES["file"]["error"]. "<br />";
//1° parametro= nome di input del form, 2° parametro codice di errore del file caricato
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
//1° parametro= nome di input del form, 2° parametro nome del file caricato
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
//1° parametro= nome di input del form, 2° parametro tipo del file caricato
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
//1° parametro= nome di input del form, 2° parametro dimensione in byte del file caricato
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
//1° parametro= nome di input del form, 2° parametro copia temporanea del file sul server
}
?>
</html>
</body>
 
 
5.
Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato e stampa un messaggio d'errore nel caso in cui il file non rispetta le dimensioni richieste
 
<html>
<body>
 
<form action="upload_file2.php" method="post"
option indica che i file saranno caricati in upload_file
enctype="multipart/form-data"
enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo
multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare
>
 
<label for="file">Filename:</label> 
 
<input type="file" name="file" id="file"/>
<br />
<input type="submit" name="submit" value="Submit"/>
 
</form>
</html>
</body>
 
 
Il file upload_file2.php contiene :
 
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png", "c");
$extension = end(explode(".", $_FILES["file"]["name"]));
//si possono caricare caricare gif,jpeg e png di dimensione inferiore a 20 kb.
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else //se il file non rispetta le dimensioni richieste verrà stampato il messaggio d'errore
  {
  
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Errore file! " ;
  }
?>
 
 
 
 
 
6. COOKIES
 
Un cookie è un file che il server incorpora sul computer dell'utente.
L'esempio seguente mostra due modi per recuperare il valore di un cookie.
 
<?php
//setcookie () imposta un cookie.
setcookie("user", "Roberta Scarpato", time()+3600);
?>
<?php
// Recupero coockies
echo "Primo modo recupero coockies : <br />";
echo $_COOKIE["user"];
 
echo "<br /> Secondo modo recupero coockies : <br />";
//isset verifica se il coockies è stato impostato 
if (isset($_COOKIE["user"]))
  //in caso affermativo stamapa: 
  echo "Benvenuto -> " . $_COOKIE["user"] . "!<br />";
else
  echo "Welcome guest!<br />";
 
//eliminazione coockies
//setcookie("user", "", time()-3600);
 
?>
 
 
 
 
 
7. SESSIONI
 
Una sessione PHP consente di memorizzare le informazioni dell'utente sul server per l'utilizzo successivo 
 
L'esempio seguente,conta le volte che una pagina viene visualizzata. Se "views" è stato impostato, è possibile incrementare il contatore. Se "views" non esiste, creiamo una variabile "views":
 
<?php
//avvia una sessione
session_start();
 
 
//si utilizza una variabile PHP $_SESSION per recuperare le variabili di sessione
 
//isset controlla se il valore della variabile $_SESSION['views'] è già impostato
 
if(isset($_SESSION['views']))
//in caso affermativo vuol dire che non è la prima visita dell'utente e quindi la variabile viene incrementata
{
$_SESSION['views']=$_SESSION['views']+1;
//unset libera la variabile
//unset($_SESSION['views']);
}
else //altrimenti la si imposta alla prima visita
$_SESSION['views']=1;
 
echo "Valore Views=". $_SESSION['views'];
?>
 
<html>
<body>
 
<?php
//Stampa la variabile views
echo "<br /> Visita numero =". $_SESSION['views'];
 
 
?>
<?php
//ripristina la sessione e si perdono tutti i dati della sessione 
//session_destroy();
?>
</body>
</html>
 
 
 
 
 
8. E-MAIL
 
In PHP è possibile inviare messaggi di posta elettronica all'interno di uno script,con la funzione mail().
L'esempio seguente invia un messaggio di testo a un determinato indirizzo e-mail controllando se il campo e-mail nel modulo è valido.
 
<?php
// funzione che controlla il campo e-mail nel modulo:
function controlla($field)
  {
  //filter_var() funzione che analizza l'e-mail
  //FILTER_SANITIZE_EMAIL rimuove tutti i caratteri illegali all'interno dell'indirizzo
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);
 
 
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
// se l'email è corretta ritorna true altrimenti false
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }
 
//isset controlla se il campo email è già stato impostato
if (isset($_REQUEST['email']))
  {
 
   //in caso affermativo procede controllando se l'indirizzo è valido invocando la funzione controlla
   //request ritorna il valore di una variabile
  $bool = controlla($_REQUEST['email']);
  if ($bool==FALSE)
    {
//in caso negativo si ha un messaggio d'errore
    echo "Invalid input";
    }
  else
    {//altrimenti si invia l'email assegnadno i valori per parametri della funzione mail()
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
    //mail consente di inviare mail specificando indirizzo dest, oggetto e messaggio
    mail("nome.cognome@studenti.uniparthenope.it", "Subject: $subject",$message,"From: $email" );
    echo "Mail inviata! <br />";
    }
  }
else
  {//in caso negativo si compilano i campi
  echo "
  <form method='post' action='mailform.php'>
  Email: <input name='email' type='text' /><br />
  Subject: <input name='subject' type='text' /><br />
  Message:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' />
  </form>";
  }
?>
 
 
 
 
 
9. GESTIONE DEGLI ERRORI
 
L'esempio seguente consente di rilevare un errore e inviare una e-mail con un messaggio di errore,terminando lo script se si verifica un errore specifico
 
<?php
//funzione per gestire degli errori,parametri: livello di errore e messaggio d'errore
function errori($errno, $errstr)
  {
  echo "<b>Error:</b> [$errno] $errstr<br />"; //stampa il messaggio d'errore 
  echo "Webmaster has been notified"; //viene inviata una mail per informare dell'errore
  //error_log ()invia l' errore in un file specificato o una destinazione
  error_log("Error: [$errno] $errstr",1,
  die();//dichiarazione d'errore
  }
 
//gestore errori che ha come parametro la funzione creata eil livello d'errore, E_USER_WARNING avverte la presenza di un errore. L'esecuzione dello script non viene interrotta
set_error_handler("errori",E_USER_WARNING);
 
 
//testiamo la variabile test, se il valore è >1 si genera un errore
$test=2;
if ($test>1)
  {
  //attivazione errore con trigger_error,il messaggio rappresenterà il messaggio d'errore, sarà quindi il contenuto di errstr
  trigger_error("Valore errato! il valore deve essere 1 o minore! ",E_USER_WARNING);
  }
?>
 
 
 
 
 
10.ECCEZIONI
 
Un'eccezione è un errore particolare che si può verificare durante l'esecuzione di un codice.
La gestione delle eccezioni modifica il normale flusso di esecuzione in seguito a un'eccezione.
L'esepio seguente mostra come gestire le eccezioni.
 
<?php
//classe eccez che estende exception ereditando quindi tutti i metodi 
class eccez extends Exception
  {
  public function messaggio()
    {
    //assegna a msg il messaggio d'errore
    $msg = $this->getMessage().' Indirizzo e-mail non valido.';
    return $msg;
    }
  }
 
$email = "indirizzo@prova.com";
 
//Il blocco "try" contiene un blocco "try" per permettere di nuovo l'eccezione
try
  {
  try
    {
    //strpos controlla se nella stringa email c'è la parola example
    if(strpos($email, "example") !== FALSE)
      {
      //in caso affermatibo viene attivata l'eccezione
      throw new Exception($email);
      }
    }
  catch(Exception $e)
    {
    //Il blocco "catch" intercetta l'eccezione e ri-genera un oggetto eccez
    throw new eccez($email);
    }
  }
 
catch (eccez $e) //viene catturata l'eccezione e si genera il messaggio 
  {
  //display custom message
  echo $e->messaggio();
  }
?>
 
 
 
 
11. FILTRI
 
Un filtro PHP è utilizzato per verificare,validare e filtrare l'input dell'utente o dati personalizzati.
L'esempio seguente verifica se i dati immessi dall'utente sono corretti.
 
 
<html>
<body>
<form   method="get" >
Name: <input type="text" name="name"/>
Age: <input type="text" name="age" />
E-mail: <input type="text" name="email"/>
<input type="submit" //pulsante /> 
 
</form> 
<?php
//Un filtro PHP è utilizzato per controllare i dati provenienti da fonti non sicure.
//per evitare di chiamare le funzioni filter_var o filter_input più volte, si utilizza la filter_var_array o le funzioni filter_input_array.
 
$filters = array(
   //Imposta un array contenente il nome di variabili di input ed i filtri utilizzati per le variabili di input specificate
  "name" => array("filter"=>FILTER_SANITIZE_STRING), //verifica sela stringa è valida
  "age" => array("filter"=>FILTER_VALIDATE_INT,"options"=>array("min_range"=>1,"max_range"=>120)), //verifica se il valore intero è valido e seè compreso nel range
  "email"=> FILTER_VALIDATE_EMAIL); //verifica se l'email è corretta
 
$result = filter_input_array(INPUT_GET, $filters); //filtra più variabili con gli stessi filtri o filtri diversi
 
//se l'età è errata stampa un messaggio d'errore
if (!$result["age"])
  {
  echo("Errore età. L'età deve essere compresa tra 1 e 120!<br />");
  }
//se l'email è errata stampa un messaggio d'errore
elseif(!$result["email"])
  {
  echo("E-Mail non valida.<br />");
  }
//se la stringa è errata stampa un messaggio d'errore
else
  {
  echo("Dati utente validi!");
  
  }
?>
</html>
</body>
 
 
 
 
 
12. MYSQL
 
MySQL è un database,i cui dati vengono memorizzati in oggetti chiamate tabelle.Una tabella consiste di righe e colonne.
L'esempio seguente mostra come creare un database e le rispettive tabelle.
 
 
<?php
//per accedere ai dati di un database, è necessario creare una connessione al database.In PHP, questo è fatto con la funzione mysql_connect () che  memorizza il collegamento in una variabile ($ con) e chiede come parametri:servername Specifica il server a cui connettersi,nome utente Specifica il nome utente per effettuare il login, password Consente di specificare la password per effettuare il login 
 
$con = mysql_connect("localhost","robertina","123");
if (!$con)
  {
  //viene eseguito se la connessione fallisce
  die('Could not connect: ' . mysql_error());
  }
 
// CREATE DATABASE viene utilizzata per creare un database in MySQL. viene creato il database my_db
if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }
//Un database deve essere selezionato prima che una tabella viene creata. Il database viene selezionato con la funzione mysql_select_db () 
mysql_select_db("my_db", $con);
 
// L'istruzione CREATE TABLE viene utilizzato per creare una tabella in MySQL
//imposta il campo personID come il campo chiave primaria,NOT NULL specifica he non deve essere nullo. il campo chiave primaria è usato con l'impostazione AUTO_INCREMENT.
$sql = "CREATE TABLE Persone 
(
 
personID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(personID),
Nome varchar(15),
Cognome varchar(15),
Età int
)";
 
//esegue la query
mysql_query($sql,$con);
 
 
// chiude la connessione
mysql_close($con);
?>
 
13.
é possibile inserire i dati in un database prelevandoli da un form.
L'esempio seguente crea un modulo HTML che può essere utilizzato per aggiungere nuovi record alla tabella "Persone".
 
 
<html>
<body>
 
<form action="insert.php" method="post"
si connete a un file insert.php che effettua una connessione a un database e recupera i dati inseriti nel form per memorizzarli nel database  >
Nome: <input type="text" name="nome" />
Cognome: <input type="text" name="cognome" />
Età: <input type="text" name="età" />
<input type="submit" />
</form>
 
</body>
</html>
 
La pagina insert.php conterrà: 
 
<html>
<body>
<?php
$con = mysql_connect("localhost","robertina","1234");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
 
mysql_select_db("my_db", $con);
 
//questo file si connette a un database e recupera i valori dal form con le variabili PHP $ _POST.la funzione mysql_query () esegue l'istruzione INSERT INTO,usata per aggiungere nuovi record a una tabella di database, e un nuovo record viene aggiunto alla tabella "Persone".
 
$sql="INSERT INTO Persone (Nome, Cognome, Età)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
 
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
 
 
//mysql_query ora seleziona tutti i dati memorizzati nella tabella "Persone" 
// * seleziona tutti i dati della tabella):
$result = mysql_query("SELECT * FROM Persone");
 
//visualizza i dati in una tabella HTML
echo "<table border='1'>
<tr>
<th>Nome</th>
<th>Cognome</th>
</tr>";
 
//mysql_fetch_array () restituisce la prima riga dal recordset come una matrice. Ogni chiamata a mysql_fetch_array () restituisce la riga successiva nel recordset. Il ciclo while scorre tutti i record del recordset. Per stampare il valore di ogni riga, si usa la variabile PHP $ row ($ row ['Nome'] e $ row ['Cognome']).
 
while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Nome'] . "</td>";
  echo "<td>" . $row['Cognome'] . "</td>";
  echo "</tr>";
  }
 
echo "</table>";
mysql_close($con);
?>
 
</html>
</body>
 
14.
L'esempio seguente mostra come aggiornare i valori in un database.
 
<?php
//crea connessione
$con = mysql_connect("localhost","robertina","123");
if (!$con)
  {
  die('Errore connessione : ' . mysql_error());
  }
 
//selezione database
mysql_select_db("my_db", $con);
 
//update aggiorna i campi di una tabella con nuovi valori
//in qst caso aggiorna l'età nel record che ha come  nome e cognome quelli indicati
mysql_query("UPDATE Persone SET Età=23 WHERE Nome='roberta' AND Cognome='Scarpato'");
 
 
//selezione tutte i campi dalla tabella persone e le stampa ordinandole per età
$result = mysql_query("SELECT * FROM Persone ORDER BY età");
 
while($row = mysql_fetch_array($result))
  {
  echo $row['Nome'];
  echo " " . $row['Cognome'];
  echo " " . $row['Età'];
  echo "<br />";
  }
 
//cancella il record con il cognome indicato
mysql_query("DELETE FROM Persone WHERE Cognome='Scarpato'");
mysql_close($con);
?>
 
 
 
 
 
15. ODBC
 
Una connessione ODBC consente di connettersi a qualsiasi database, su qualsiasi computer della rete, fino a quando una connessione ODBC è disponibile.
L'esempio seguente mostra come creare una connessione al database, un set di risultati e  visualizzare i dati in una tabella HTML.
 
 
<?php
 
//Con una connessione ODBC, è possibile connettersi a qualsiasi database fino a quando la connessione è disponibile.
 
//Si crea una connessione a un DSN denominato northwind, senza nome utente e nessuna password.
$conn=odbc_connect('northwind','','');
 
if (!$conn)
  {
exit("Connessione Fallita: " . $conn);
  }
 
// Si crea un SQL prendendo tutti i campi da una tabella
$sql="SELECT * FROM customers";
 
//odbc_exec () viene utilizzata per eseguire un'istruzione SQL
$results=odbc_exec($conn,$sql);
 
if (!$results)
  {
exit("Error in SQL");
   }
 
//stampa
echo "<table><tr>";
echo "<th>Companyname</th>";
echo "<th>Contactname</th></tr>";
 
//odbc_fetch_row restituisce i record dal memorizzati in results. restituisce true se è in grado di restituire le righe, altrimenti false.Prende come parametri l'identificatore di risultato ODBC e un numero di riga (opzionale)
 
while (odbc_fetch_row($results))
  {
  //dbc_result () legge i campi di un record. Prende due parametri: l'identificatore di risultato ODBC e un numero o un nome di campo.
  $compname=odbc_result($results,"CompanyName");
  $conname=odbc_result($results,"ContactName");
  echo "<tr><td>$compname</td>";
  echo "<td>$conname</td></tr>";
  }
 
//chiude la connessione
odbc_close($conn);
echo "</table>";
?>
 
 
 
 
 
16.XML PARSER EXPA
 
Un file XML descrive la struttura dei dati.
L'esempio seguente inizializza il parser XML in PHP, definisce alcuni gestori e  analizzare il file XML.
 
 
<?php
 
//inizializzazione parser
$parser=xml_parser_create();
 
//funzione da usare con i tag di apertura
function start($parser,$element_name,$element_attrs)
  {
  switch($element_name)
    {
    case "NOTE":
    echo "-- Note --<br />";
    break;
    case "TO":
    echo "To: ";
    break;
    case "FROM":
    echo "From: ";
    break;
    case "HEADING":
    echo "Heading: ";
    break;
    case "BODY":
    echo "Message: ";
    }
  }
 
//funzione da usare con i tag di chiusura
function stop($parser,$element_name)
  {
  echo "<br />";
  }
 
//funzione da usare con i caratteri di tipo data
function char($parser,$data)
  {
  echo $data;
  }
 
//specificare la funzione da eseguire quando il parser incontra i tag di apertura e di chiusura
xml_set_element_handler($parser,"start","stop");
 
//specifica quale funzione verrà eseguito quando il parser incontra dati di tipo carattere
xml_set_character_data_handler($parser,"char");
 
//apre il file 
$fp=fopen("test.xml","r");
 
//Dom è un'interfaccia standard per l'accesso e la manipolazione di documenti HTML e XML
//crea nuovo documento Dom
$xmlDoc = new DOMDocument();
$xmlDoc->load("test.xml");
 
print $xmlDoc->saveXML();
 
//legge
while ($data=fread($fp,4096))
  {
  //Analizza il file "test.xml" con la funzione xml_parse ()
  //in caso di errore richiama xml_error_string per convertire l'errore in stringa, xml_get_error_code restituisce il codice di errore,xml_get_current_line_number restituisce la linea dell'eerrore
  xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));
  }
 
//libera la memoria allocata
xml_parser_free($parser);
?>
 
 
Il file test.xml contiene:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Antonio</to>
<from>Roberta</from>
<heading>Promemoria</heading>
<body>Ci vediamo stasera!</body>
</note>
 
 
 
 
 
17. SIMPLE XML
 
Consente  di ottenere gli attributi di un elemento e il testo.
L'esempio seguente mostra come restituire i nomi degli elementi e dei dati dal file test.xml.
 
<?php
 
//carica il file
$xml = simplexml_load_file("test.xml");
 
//Ottiene il nome del primo elemento 
 
 
echo $xml->getName() . "<br />";
//Creare un ciclo che si innesca su ogni nodo figlio, con la funzione children()
foreach($xml->children() as $child)
  {
  //Output il nome dell'elemento e dati per ciascun nodo figlio
  echo $child->getName() . ": " . $child . "<br />";
  }
?>
 
Il file "test.xml" contiene:
<note><to>Antonio</to><from>Roberta</from><heading>Promemoria</heading><body>Ci vediamo stasera!</body></note>
 
 
 
 
 
 
18. AJAX
 
AJAX è una tecnica per la creazione veloce di pagine Web.Consente di aggiornare parti di una pagina web, senza ricaricare l'intera pagina.
L'esempio seguente mostra come una pagina web comunica con un server web.
Quando un utente digita un carattere nel campo di input,  viene eseguita la funzione il "ShowHint ()" che viene attivata dall'evento "onkeyup".
Pagina html:
<html>
<head>
<script>
//questa funzione è attivata dall'evento onkeyup
function showHint(str)
{
//se il campo str.lenght è vuoto, viene cancellato il contenuto di txtHint e si esce dalla funzione
if (str.length==0)
  { 
  document.getElementById("txtHint").innerHTML="";
  return;
  }
 
//altrimenti si crea un oggetto XMLHttpRequest,usato per trasferire XML o altri dati da e a un web server
if (window.XMLHttpRequest)
  {
  // per IE7, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// per IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 
xmlhttp.onreadystatechange=function() //onreadystatechange Gestore dell'evento lanciato ad ogni cambiamento di stato.
  {
//readyState Restituisce lo stato corrente dell'istanza di XMLHttpRequest:0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.
//status Restituisce il codice HTTP restituito dal server 
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
//responseText Restituisce la risposta del server in formato stringa e l'assegna a txtHint
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
 
//open Specifica il metodo, l'URL e altri parametri opzionali per la richiesta.GET è utilizzato quando si richiedono dati.il secondo parametro è l'url,il terzo specifica se la richiesta deve essere gestita in modo asincrono oppure no ,true" significa che lo script può proseguire l'elaborazione senza aspettare la risposta dopo il metodo send()
 
xmlhttp.open("GET","ajax.php?q="+str,true);
xmlhttp.send(); //invia la richiesta a un server
}
</script>
</head>
<body>
 
<p><b>Start typing a name in the input field below:</b></p>
<form> 
First name: <input type="text" onkeyup="showHint(this.value)" size="20" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>
 
</body>
</html>
 
Il codice sorgente di "ajax.php" controlla una serie di nomi, e restituisce il nome, corrispondente al carattere inserito, al browser:
 
<?php
// ontrolla una serie di nomi, e restituisce il nome corrispondente (s) al browser:
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
 
//in q è memorizzato il carattere scritto dall'utente
$q=$_GET["q"];
 
//se la lunghezza di q è>0 cerca un nome corrispondente ai caratteri inseriti
if (strlen($q) > 0)
  {
//hint è la stringa di risposta
  $hint="";
  //cerca
  for($i=0; $i<count($a); $i++)
    {
   //controlla i caratteri delle stringhe presenti nell'array e lo assegna alla stringa di risposta
    if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
      {
      if ($hint=="")
        {
        $hint=$a[$i];
        }
      else
        {
        $hint=$hint." , ".$a[$i];
        }
      }
    }
  }
 
// se non è stato trovato nessun carattere uguale si stampa il messaggio ""nessun suggerimento, altrimentiviene visualizzato il nome cercato
if ($hint == "")
  {
  $response="Nessun suggerimento";
  }
else
  {
  $response=$hint;
  }
 
//output the response
echo $response;
?>
 
 
19.
L'esempio seguente mostra come una pagina web può scaricare informazioni da un database con AJAX
Pagina Html:
 
<html>
<head>
<script>
/*quando un utente seleziona un nome nell'elenco a tendina , la funzione showUserviene eseguita. La funzione viene attivata dall'evento onchange*/
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
 
xmlhttp.open("GET","ajax2.php?q="+str,true);
xmlhttp.send();
}
 
 
</script>
</head>
<body>
 
<form>
<select name="users" onchange="showUser(this.value)"
 >
<option value="">Select a person:</option>
<option value="1">Homer Simpson</option>
<option value="2">Marge Simpson</option>
<option value="3">Zio Paperone</option>
<option value="4">Pippo Pluto</option>
</select>
</form>
<br />
<div id="txtHint"><b>Informazioni persona.</b></div>
 
</body>
</html>
 
 
Il codice sorgente in "ajax2.php" esegue una query su un database MySQL, e restituisce il risultato in una tabella HTML:
 
<?php
$q=$_GET["q"];
 
//crea connessione al database
$con = mysql_connect('localhost', '', '');
if (!$con)
  {
  die('Errore connessione ' . mysql_error());
  }
//seleziona il database
mysql_select_db("ajax_demo", $con);
//seleziona tutti i record
$sql="SELECT * FROM user WHERE id = '".$q."'";
 
$result = mysql_query($sql);
 
echo "<table border='1'>
<tr>
<th>Nome</th>
<th>Cognome</th>
<th>Età</th>
<th>Città</th>
<th>Lavoro</th>
</tr>";
//mysql_fetch_array restituisce una riga da un recordset come array o come matrice
while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Nomr'] . "</td>";
  echo "<td>" . $row['Cognome'] . "</td>";
  echo "<td>" . $row['Età'] . "</td>";
  echo "<td>" . $row['Città'] . "</td>";
  echo "<td>" . $row['Lavoro'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
//chiusura connessione
mysql_close($con);
?>
 

Comments

Salvatore De Michele's picture

se vuoi un consiglio posta l'articolo usando full html e mettendo i codici tra i tag <pre></pre>.
 
comunque sono argomenti che si trovano anche sulle slide di Tec Web. ma può conmunque essere utile