Sono lieto di presentarvi la prima parte di una serie in due parti sulla creazione di un sito di foto utilizzando PHP, jQuery e AJAX. Inizialmente, avevo intenzione di inserire l'intero tutorial in uno screencast, ma questo è diventato rapidamente un sogno irrealizzabile quando ho capito che c'era semplicemente troppo da coprire. Tuttavia, anche se guardi solo questo primo video, dovresti imparare molto.
Ritireremo le immagini da un database, creando un semplice modulo di accesso con autenticazione e consentiremo quindi che il nostro database sia aggiornato in modo asincrono. Suona bene? Se è così, entriamoci dentro.
Per questa lezione, il nostro obiettivo è creare una sezione di gestione delle foto in cui un amministratore possa recuperare le foto da un database e aggiornare il titolo delle sue foto semplicemente facendo clic sul testo appropriato. Per rendere questa pagina più sicura, creeremo anche un semplice sistema di appartenenza. Nei tutorial successivi, approfondiremo questi concetti.
Apri PHPMyAdmin e crea un database chiamato "db". All'interno di questo database, dovremo aggiungere due tabelle: "foto" e "utenti".
Piuttosto che codificare le nostre immagini nel nostro documento, le memorizzeremo in un database. Anche se potessimo rendere questo tavolo tanto sofisticato come vogliamo, lo terremo semplice per ora.
Per modificare le nostre foto, dobbiamo creare un semplice sistema di iscrizione che consenta al nostro utente di accedere e modificare le sue foto. Ovviamente non vogliamo dare a tutti la cosa giusta!
Crea un nuovo documento php e aggiungi quanto segue nel tuo documento.
Il mio sito di foto
Non preoccuparti troppo di alcuni di ciò che è qui. Andremo su tutto in tempo. Ma come una rapida panoramica, stiamo importando la nostra libreria jQuery, un plugin jQuery lightbox e i nostri script personalizzati (che creeremo presto). Prenditi qualche secondo per rivedere il file CSS. Non lo esaminerò troppo in questo articolo scritto - poiché è già abbastanza lungo! Fare riferimento allo screencast per ulteriori informazioni. Ma ti assicuro che è roba piuttosto standard e semplice.
La cosa principale su cui devi concentrarti adesso è:
Questa sarà la sezione in cui recupereremo le nostre foto dal database. Lavoriamo su questo adesso. Crea una nuova pagina
chiamato "getPhotos.php".
Passiamo rapidamente a ciò che dobbiamo realizzare con questo codice.
Incolla il seguente codice nel tuo documento:
query ($ query) o die (mysqli_error ($ mysqli)); if ($ result) echo "
La prima cosa che dobbiamo fare è creare una connessione al nostro database. Tuttavia, lo faremo molte volte nel corso di questo progetto. Creiamo quindi un'altra pagina chiamata "database.php" e memorizziamo le informazioni lì. In questo modo, abbiamo solo bisogno di modificare un file, in caso di necessità. Aggiungi il seguente codice nel tuo file database.php.
Stiamo creando una variabile chiamata "$ mysqli" e la stiamo impostando su una nuova istanza dell'oggetto "MySQLi". Dobbiamo passare in quattro parametri:
Per mantenere le cose pulite, inseriremo tali valori nelle variabili e li faremo riferimento. Se la connessione non viene effettuata, lo diremo a "morire".
Ora torniamo al nostro file "getPhotos.php". Il prossimo passo è quello di interrogare il database.
$ query = "SELEZIONA id, titolo, src DA foto"; $ result = $ mysqli-> query ($ query) o die (mysqli_error ($ mysqli));
La nostra richiesta è estremamente semplice. Stiamo essenzialmente recuperando tutto dal database. Potresti voler modificare questo
interrogare per adattarsi alla propria applicazione. Passiamo la query usando "$ mysqli-> query ($ query)".
Se quella query è stata eseguita con successo, creeremo la nostra lista non ordinata e aggiungeremo le nostre immagini.
eco "
Creiamo una variabile chiamata $ row che sarà uguale a ogni istanza di una riga nel database. Finché ci sono file
per essere recuperato, questa variabile conterrà le informazioni della riga specifica.
Conserveremo tutte le informazioni di cui abbiamo bisogno nelle variabili. Ad esempio, diciamo che in una riga abbiamo i seguenti dati.
Eseguendo $ row-> title, possiamo prendere quel valore e memorizzarlo nella nostra variabile $ title. Quindi in questo caso, $ title = "La mia foto preferita"; $ src = "10.jpg"; $ id = 4;.
Tutto ciò che dobbiamo fare ora è aggiungere tali informazioni nei nostri tag image e anchor. L'ultima riga aggiungerà un campo di input. Questo alla fine permetterà all'utente di aggiornare il titolo dell'immagine in modo asincrono.
Se esegui "index.php" nel tuo browser, dovresti vedere quanto segue:
Ora che abbiamo il layout di base del nostro sito, provializziamo! Inizieremo riassumendo ciò che abbiamo bisogno del nostro PHP. Trovo che questo aiuta molto quando si lavora.
Crea un file PHP chiamato "changePhotoTitle.php" e incolla il seguente codice:
?
query ($ update_query) o die (mysqli_error ($ mysqli)); if ($ result) echo "Success!
"; echo" Il titolo di questa foto è stato modificato in: $ titolo";?>
Abbiamo richiesto di nuovo il file del database. (Non siamo contenti di averlo memorizzato in un file separato?) Quindi ne stiamo creando due
variabili. $ title equivale a qualunque cosa l'utente inserisca in quel campo di input. $ id è uguale al rispettivo campo id in
il database.
Per evitare un'iniezione SQL, avvolgeremo quei valori dei post con mysql_real_escape_string ().
L'aggiornamento è piuttosto semplice. Aggiorna la tabella delle foto e modifica il campo del titolo in qualsiasi parte entri in quella casella di testo; Ma cambia solo il campo del titolo che ha un id uguale a $ id. (Fare riferimento allo screencast per una migliore comprensione).
Se l'aggiornamento è stato eseguito correttamente, echeggeremo un messaggio di congratulazioni.
Per eseguire l'aggiornamento senza un postback, utilizzeremo jQuery. Crea un nuovo file Javascript chiamato "scripts.js" e
incolla quanto segue:
$ (function () $ ('h4'). click (function () $ (this) .slideUp (). next ('input'). slideDown ();); $ ('ul # photos input' ) .change (function () var id = $ (this) .parent ('li'). find ('img'). attr ('id'); var thisParam = $ (questo); var title = $ ( this) .val (); $ .ajax (type: 'POST', url: 'changePhotoTitle.php', data: 'title =' + title + '& id =' + id, success: function (response) $ ('input'). slideUp (); $ (thisParam) .prev ('h4'). text (title) .slideDown (); $ ('# response'). fadeIn (1000) .empty (). append ( risposta) .prepend ('X'); $ ('span # x'). click (function () $ ('div # response'). fadeOut ('slow');); ); ); );
Usando "$ .ajax", chiameremo l'aggiornamento. $ .ajax accetterà quattro parametri.
Ora ovviamente, non vogliamo che nessuno sia in grado di modificare i titoli di queste immagini. Quindi, creeremo un semplice sistema di appartenenza.
Crea una nuova pagina chiamata "login.php" e aggiungi il seguente codice:
Accedi per modificare le foto
All'interno del body tag, abbiamo un semplice modulo che ha due campi: uno per il nome utente, l'altro per la password. Quando l'utente fa clic sul pulsante "Accedi", le informazioni da quelle caselle di testo verranno pubblicate su "confirmLoginCredentials.php". Vai avanti, crea quella pagina adesso e aggiungi quanto segue.
query ($ q) o die (mysqli_error ($ mysqli)); if (! mysqli_num_rows ($ result) == 1) header ("Location: login.php"); else setcookie ('authorized', 1, 0); header ("Location: index.php"); ?>
Come al solito, stiamo memorizzando i valori da quelle caselle di testo in variabili denominate $ username e $ password, rispettivamente. Tiriamo ancora una volta il nostro file database.php. La nostra query recupera la riga dal database dove user_name e la password sono uguali a ciò che è stato inserito in queste due caselle di testo. È necessario restituire solo una riga. Se ciò non accade, l'utente verrà reindirizzato a "login.php". Altrimenti, li invieremo alla pagina principale "index.php" e imposteremo un cookie.
setcookie ('autorizzato', 1, 0);
Il nome del nostro cookie sarà "autorizzato"; il valore sarà uguale a 1; e la data di scadenza sarà 0. 0 significa essenzialmente che quando l'utente chiude il suo browser, quel cookie scadrà.
Quando l'utente viene indirizzato alla pagina index.php, dobbiamo scrivere un breve bit di codice che assicuri che ci sia il cookie richiesto sul computer dell'utente. Torna a index.php e aggiungi il codice seguente nella parte superiore del documento.
Se l'utente ha un cookie denominato "autorizzato" sul suo computer e quel cookie ha un valore uguale a 1, quindi visualizza la pagina. Ma se NON lo fanno, rimandali a login.php.
Il passaggio finale in questo tutorial è consentire all'utente di disconnettersi. Trova il tag sulla tua pagina index.php che assomiglia a questo:
disconnettersi
Sto aggiungendo una coppia chiave-valore a questo URL. Quel valore sarà passato a 'login.php'. Vai a questa pagina e aggiungi il tuo ultimo bit di codice in cima.
Se, nella querystring, la chiave di "logout" è uguale a 1, imposta un cookie con una data di scadenza di un'ora fa. Questo rimuoverà il cookie dal computer dell'utente.
Quindi abbiamo creato un bel po '. Sfortunatamente, fare tutto ciò che mi piacerebbe prenderebbe pagine e pagine. Forse la prossima settimana verrà pubblicata la seconda parte. Nella parte 2, implementeremo quanto segue:
Grazie mille per aver guardato lo screencast e aver esaminato l'articolo. C'è altro in arrivo!