Programmatore PHP esperto nella realizzazione di Scipt AJAX e nella costruzione di applicazioni asincrone che interagiscono con database MySQL | Realizzazione Siti Dinamici in PHP / AJAX / MySQL
Selezione Dinamica da Database con AJAX e PHP
Scritto da: Daniele Tabacco | Categoria: Programmatore AJAX|commenti Commenti: (12)

In questo Articolo presenterò un brevissimo ma efficacissimo esempio di realizzazione di uno script AJAX e PHP con un interazione con database MySQL tecnologie utili ad un Programmatore PHP per la realizzazione di siti dinamici.

Con quest'esempio simuleremo la selezione di una scheda di un dipendente all'interno di un database MySQL, tali dati verranno estrapolati utilizzando PHP e ovviamente un Programmatore PHP potrà ampliare o sfruttare tale script per la realizzazione di elementi ben più complessi.

Lo script è composto banalmente da 2 file, uno è il file principale che viene richiamato dal server e che sarà la maschera che l'utente vedrà sempre visibile, mentre il secondo lavorerà in maniera asincrona in background per l'aggiornamento dei dati utilizzando Javascript e AJAX

Potete esaminare il funzionamento di questo Script QUI

Per rendere chiaro l'esempio per prima cosa descriviamo il semplice DB MySQL utilizzato in questo esempio:

Adesso eseminiamo il file che si occupa di chiamare la funzione mostraInfo responsabile degli aggiornamenti asincroni AJAX:

<script type="text/javascript">
var xmlhttp;

function mostraInfo(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="mostra_utenti.php";
url=url+"?q="+str;
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("info").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
</script>

<form>
Seleziona Dipendente:
<select name="users" onChange="mostraInfo(this.value)">
<?php
//Seleziono quelli che sono i dipendenti
$connessione = mysql_connect('xxxx', 'xxxx', 'xxxx');
mysql_select_db("xxxx", $connessione);
$query = "SELECT * FROM `dipendenti` ORDER BY nome ASC";
$result = mysql_query($query);
while($riga = mysql_fetch_array($result)){
echo "<option value='$riga[id]'>$riga[nome] $riga[cognome]</option>";
}
?>
</select>
</form>
<br />
<div id="info"></div>

La funzione mostraInfo si occupa di creare l'oggetto XMLHTTP e richiama il file creato con PHP che effettua la selezione delle informazioni che il Programmatore PHP intende portare all'attenzione dell'utilizzatore dello script.

Il secondo file è quello richiamato dallo script principale e che effettua una richiesta al server per l'aggiornamento delle informazioni, tale file non verrà mai visualizzato dall'utente che ne otterrà solo gli aggiornamenti:

<?php
$q=$_GET["q"];

$con = mysql_connect('xxxx', 'xxxx', 'xxxx');
mysql_select_db("xxxx", $con);

$sql="SELECT * FROM dipendenti WHERE id = '".$q."'";

$result = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>Nome</th>
<th>Cognome</th>
<th>Anni</th>
<th>Lavoro</th>
<th>Stipendio</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['nome'] . "</td>";
echo "<td>" . $row['cognome'] . "</td>";
echo "<td>" . $row['anni'] . "</td>";
echo "<td>" . $row['lavoro'] . "</td>";
echo "<td>" . $row['stipendio'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_close($con);
?>

Commenti:
implementazione
Marco - Inserito il: 20/05/10
Ciao, si potrebbe fare a due scelte? Che si possa scegliere prima A, poi B e a quel punto visualizzare i dati? Potresti scrivere tale implementazione? Grazie

Semplice
Daniele Tabacco - Inserito il: 20/05/10
Non occorre fare un implementazione nuova, bastano semplicemente pochissime correzioni all'attuale script, facendo passare alla funzione che estrapola i dati più valori. Spero di averti aiutato.

refresh
Dogo - Inserito il: 27/05/10
E come si può modificare per aggiornare le info mostrate automaticamente ogni tot secondi? Oppure aggiornare le info mostrate quando il risultato della query cambia... ciao e complimenti per l'articolo

Non ho capito
Daniele Tabacco - Inserito il: 27/05/10
Potresti dirmi meglio cosa intendi? cosa vuoi che lo script faccia?

implementazione
Marco - Inserito il: 31/05/10
ho sostituito il nome con MARCA, il cognome con MODELLO. Vorrei che scegliendo MARCA uscisse una seconda tendina per la scelta del modello e solo dopo il risultato. Devo comunque far passare alla funzione che estrapola i dati più valori ? Grazie

scelta a due campi
marco - Inserito il: 05/07/10
Ciao, potresti scrivere quelle due righe in più per la scelta dei due campi? Sempre con lo stesso tipo di DB. Grazie

Dati automatici
Francesco - Inserito il: 29/07/10
E per fare in modo che ogni tot secondi lo script mostri i dati seguenti nel database?

Ottimo
Informatico latente - Inserito il: 06/11/10
Eccellente! Grazie infinite!

ciao
gianluca - Inserito il: 01/02/11
ciao, e si potrebbe fare che dopo che si è popolata dinamicamente la prima select ce ne sia un altra che si debba popolare con una funzione ajax a seconda di quello che viene selezionato nella prima?grazie.

Tendine concatenate
Bruno Piras - Inserito il: 27/10/11
Grazie mille ho adattatoil tuo script parzialmente alle mie esigenze perche' anche a me servirebbe selezionare piu' campi mi spiego: Ho una tabella dove owfs (domotica casalinga) mi stora i valori dei vari ambienti ogni minuto, ogni riga contiene le colonne con: id anno mese giorno ora minuti temp_1 temp_2 temp_3 etc etc ora il menu a tendina come puoi bene capire mi apre tutti i record, io invece vorrei partire selezionando anno poi mese, poi giorno e a quel punto potrei anche avere l'esplosione dei 1400 records giornalieri. Consigli ? Sono nuovo in questo settore...

Bellissimo
daniele - Inserito il: 26/11/11
Bella pillola, davvero utile e con un'incredibile funzionalità-

Trasformare la select in link
gianluca - Inserito il: 23/12/11
Io vorrei poter usare questa funzione avendo al posto di una select un elenco di link che alla pressione svolgono la stessa funzione della select attuale! Come faccio????



(non visibile)







Captcha
Copia i caratteri che vedi sopra:

Tags: | torna su


Social Link:
linkedIn


Contattami su Skype:
Il mio stato


Realizzazione Siti Mobile e WebApps iPhone:

Vuoi Sviluppare l'Applicazione Mobile (WebApps) del tuo sito o della tua attività? un Applicazione Web, o pianificare la Realizzazione Sito Mobile? Contattami e scegli un Programmatore di WebApps Mobile e Programmatore di Siti Internet Mobile! Sviluppo WebApps per iPhone e Android

Collaborazioni:

Kuddle Network

antoniomaresca

cocreando

Scambio Link

Parlano di Me:

twago

Archivio Ultimi Articoli:

Risorse utili per un Programmatore PHP:
Sito Ufficiale del PHP , Download di PHP , Manuale e Documentazione PHP , Risorse e Siti Utili.

Cerchi un Programmatore PHP con esperienza consolidata? Molte aziende a Napoli, Milano, Roma e Ferrara si sono affidate a me. Contattami per una Consulenza Gratuita, per Realizzare un Applicazione Web o Sviluppare Siti Internet, Creare Portali Dinamici, o come Programmatore iPhone, Realizzazione Siti Mobile
 
Daniele Tabacco - Questo sito e' interamente realizzato da me secondo gli standard del W3C - css valido w3c css valido xhtml