ISCRIVITI Facile PHP con MySQL


In primo luogo vi spiegherò che cosa questo tutorial è quello di aiutarlo ad unire e come visualizzare il processo. Qui vi mostrerò un esempio di codice, e, infine, scavare tutti i miei esempi.

Questo tutorial è per PHP e MySQL. Io non sono addentro in qualsiasi ambiente di database in modo che può o non può essere simile ad un altro software MySQL. Questo può rendere il codice più fruibile, ma anche se non è possibile utilizzare il codice il resto di questa guida può aiutare a vedere esattamente cosa sta succedendo e come ottenere ciò che si vuole fare in modo che si può, in teoria, essere utile per altre lingue e database.




Il problema

ISCRIVITI può contribuire a salvare la banca dati per gonfiare, che è sempre una buona cosa da evitare ... soprattutto se il server web ospitante impone una quota disco (che la maggior parte lo fanno gratis e gli altri che sono pagato per i pacchetti di fascia bassa), che generalmente comprendono tutti i dati memorizzati nei database. Si noti che questo non sminuisce la larghezza di banda che la stessa quantità di dati inviati dal server al browser client. Come si aiuta ad eliminare il gonfiore sarà discusso nella prossima sezione.

Utilizzando una tabella join consente di utilizzare il maggior numero di colonne in una tabella che ha bisogno la sceneggiatura, ma anche gettare le colonne legate da un altro proprio come si farebbe con le colonne della prima tabella tavolo.

Si noti che ci sono diversi tipi di join e questo vi mostrerà come fare il più semplice, ma può contribuire a dare una migliore comprensione del processo che è possibile scaricare per contribuire a rendere l'apprendimento più facile di altri sindacati.

Setup

Ora, per l'applicazione nel mondo reale ... immaginate che si sta programmando un sistema che crea pagine dinamiche. Lo script genera "pagine" al volo tirando i dati da visualizzare in esso dal database e quindi dati stampa/eco crea una pagina web standard nel client browser. Ora, di coinvolgere altre persone che vogliono offrire una funzione di commento che persone che leggono la pagina possono fare commenti.

Ora immaginate che hai già un sistema di profilo con il proprio database in cui l'utente può salvare un percorso o l'URL di un'immagine da utilizzare come icona/avatar sul vostro profilo, e in qualsiasi altro luogo postare qualcosa sul sito .

Ecco un possibile set-up per la tabella page_comments:

  1. COMMENT_ID - Questo sarà probabilmente un numero di incremento automatico che agirà come indice della tabella. Questo viene trasmesso per il bene della cancellazione o modifica di un commento. Dare ogni commento lasciato su ogni "pagina" sul loro sito web il loro numero di iscrizione.
  2. page_id - Per questa serie ogni pagina ha un numero di identificazione che lo script utilizzato per estrarre i dati corretti dal database per stampare la pagina visualizzata. Questo dovrebbe essere usato nella tabella commenti, perché faremo il nostro script "sapere" per cui ogni pagina commenti appartiene. Se non si desidera che i commenti lasciati da ogni pagina in ogni pagina, e sarebbe inutile. Nel modulo per lasciare un commento avresti bisogno di passare lungo alla pagina di login che si salva in questa colonna quando si lascia un commento.
  3. commentor - Io lo uso per indicare il nome della persona che ha lasciato il commento. Per questo lavoro, e nella maggior parte dei casi in modo che sarebbe in ogni caso, il nome del commentor sarà il tuo nome utente, se assegno. Per questo codice funzioni correttamente questi valori devono essere uguali. Pertanto, il valore di questa colonna per ogni commento sinistra deve essere il nome utente di un membro che è memorizzato quasi permanente in un altro database.
  4. Data - Questo non è essenziale, ma vorrebbe che la gente a vedere la data e l'ora in cui il commento è stato lasciato.
  5. Commento - Ora, questo è il corpo del testo, il membro è inserito come il tuo commento.
Per quanto riguarda il profilo del database: Questo conterrà tutte le colonne come sempre è necessario mantenere la quantità di informazioni del profilo utente che si sceglie di avere, ma solo è utilizzato colonna NOME UTENTE in questo esempio.
  1. Nome utente - Questo è ovviamente il nome utente del membro per lasciare un commento. Lascia un commento non influisce sul profilo del tavolo, ma non metterà a nudo quando mostriamo i commenti che sono stati salvati. Questo sarà probabilmente l'indice della colonna della tabella di profilo.
Ora, quando un membro lascia un commento su una pagina che volete delle informazioni richieste da salvare nelle rispettive colonne delle page_comments tabella. Ancora una volta, vogliamo mostrare la commentor icona/avatar con ogni commento, ma per risparmiare spazio su disco useremo un JOIN per tirare il percorso/URL dell'immagine di ogni commentor una tabella che è già. Se il tuo sito diventa molto popolare e ha centinaia di pagine, con una media di dieci ogni commento si parla di migliaia di righe delle page_comments tabella ciascuno con una imbottita con colonna di dati esistenti. Avere una colonna riempita con forse URL lungo è più informazioni da memorizzare, che può essere riempito più veloce per azione.

A CODICE soluzione

$ Risultato = mysql_query (" Page_comments.commentor SELECT, page_comments.date, page_comments.comment, profile.img_url Page_comments DA INNER JOIN Profilo ON = page_comments.replier profile.username DOVE page_id = '$ page_id' "); while ($ row = mysql_fetch_array ($ result)) { $ COMMENT_ID = $ row ['COMMENT_ID']; $ Commentor = $ row ['commentor']; $ Date = $ row ['data']; $ Comment = $ row ['commenti']; $ Img_url = $ row ['img_url']; echo " */Che cosa si vuole fare eco a visualizzare il layout dei dati/elementi della pagina/commento./* "; }

Spiegazioni

Ora vi spiegherò riga per riga e quindi aiutare a visualizzare ciò che sta accadendo here.Start di query MySQL. Io uso "$ result" ma potete usare quello che vuoi fino a quando si fa riferimento la stessa variabile per la linea 11 mysql_fetch_array fa.

2. Cominciamo con il comando SELECT. Probabilmente siete molto familiarità con questo, perché è uno dei più utilizzati nelle query. Ora è possibile denominare le colonne che si desidera utilizzare una virgola separati, come si farebbe in un non-join query, ma c'è una grande differenza. necessario le colonne si riferiscono alla stessa tabella.colonna Come mostrato nell'esempio. Questo è visto come "tabella nome name.column". Come non unirsi alle domande non devono dichiarare tutte le colonne disponibili nella tabella. Solo quelli contenenti informazioni da utilizzare nel resto del codice. Tutti tranne uno sono tavolo page_comments e l'ultima è la tabella di profilo. Abbiamo bisogno solo una colonna specifica della tabella di profilo, ma potrebbe utilizzare più ... basta aggiungere altri nello stesso modo.

4. Comando standard. Per questo viene sarà chiamato tabella principale che può pensare come quella con la maggior parte delle colonne che si intende utilizzare. In questo esempio stiamo usando page_comments perché in fondo vogliamo usare tutte le colonne nella tabella, ma poi aggiungiamo una linea aggiuntiva alla fine di ogni colonna per i quali i dati è imbottito nella seconda tabella.
5. INNER JOIN - Questo è il tipo più comune e non è necessario specificare INTERNO. È possibile specificare solo JOIN e si comportano allo stesso modo. Questa è la tabella con la colonna (s) la cui colonna di dati viene popolata più stanno unendo la tabella principale che stiamo usando. Naturalmente, questo esempio è la tabella di profilo.
6. ON - Questo è il più importante perché racconta la query come si desidera unire le tabelle ... come in quelle colonne deve corrispondere colonna da aggiungere alla tabella principale. È necessario specificare le colonne nello stesso formato tabella.colonna comando SELECT. Nell'esempio stiamo dicendo MySQL per creare un gioco quando i dati nella colonna dei page_comments Commentor è lo stesso come il nome della colonna del profilo utente.
7. DOVE - Usato in più MySQL interroga anche. Poiché ogni individuo commento "appartiene" ad una pagina specifica e quindi ha un valore intero nella colonna delle page_comments tavolo page_id vogliamo usare solo le righe della tabella in cui valore page_id. Quindi, se qualcuno vede la pagina con il page_id '5' MySQL restituirà solo le righe di commenti che sono stati lasciati sulla pagina con questo ID.
10. MENTRE - Dopo l'esecuzione della query che si desidera utilizzare i risultati restituiti da utilizzare mysql_fetch_array per creare un array associativo contenente le chiavi ei valori delle righe restituite dalla query. Assicurarsi di cambiare il nome della variabile ($ risultato) in questa linea se si è utilizzato uno diverso nella prima riga di codice.
12-16. Su queste linee di convertire il file in variabili. Non tutti fa questo, ma lo faccio perché rende più facile per lanciare i dati dal database, senza dover concatenare $ row ['column_name'] e l'uso delle virgolette in tutta la dichiarazione eco.
Il resto: mettere quello che vuoi echo'd il browser più probabile contiene HTML, possibilmente in un formato di tabella e dei dati estratti dal database. E come è sempre necessario formattare una singola linea che echo'd dichiarazione una volta per ogni riga che la query MySQL restituito.
Naturalmente all'interno della query è possibile aggiungere comandi come LIMIT se si desidera solo un certo numero di righe restituite, che è essenziale se si utilizza qualcosa di simile con la mia pagina di codice php. È inoltre possibile aggiungere il comando ORDER, se si desidera controllare come le righe sono ordinati. Tecnicamente intera query può essere scritta in una sola riga, ma troppo tempo fa, quindi il mio codice attraverso linee diverse.

Concetto display

La prima immagine di una rappresentazione fisica della tabella principale. Sarebbe attraverso la parte superiore dei nomi delle colonne con le seguenti linee di essere i risultati. Come in una tabella HTML. Quindi pensare alla tabella come page_comments:

COMMENT_ID | page_id | commentor | Data | Commenti

E il tavolo come un profilo (con colonne inutili non sono elencati):

Nome Utente | img_url

Si può pensare di aderire come la creazione di una tabella temporanea. Non viene creato nessun nuovo tavolo, ma solo se la query restituisce le righe img_url aggiunge valore colonna della riga nella tabella per creare page_comments:

Lo script primo gioco tutte le righe in cui il valore della colonna è pari ID page_id della pagina che si sta visualizzando. Questi sono gli unici file che ci interessano ad ogni visita per assicurarsi che stiamo facendo solo eco i commenti relativi. Poi, per ogni riga restituita dalla query MySQL poi trovare la linea della tabella di profilo in cui il nome utente valore della colonna corrisponde al nome di commentor associato a ogni commento. Quando una riga della tabella corrispondente profilo colonna linea aggiunge linea page_comments valore img_url ... così:

COMMENT_ID | page_id | commentor | Data | Valutazione | img_url

Così ora è possibile ottenere il img_url essere utilizzato in un tag img src HTML per visualizzare l'icona/avatar con il tuo nome commentor/utente, la data di osservazione e il commento stesso. Questo, naturalmente, quando lo stesso utente opera discusso più volte nella stessa pagina.

Spero che abbiate acquisito una certa conoscenza di questo solido e aiutarvi nel codice. Se posso fare tutte le modifiche che rendono questo meglio o più chiara prega di commento e fatemi sapere e vedrò cosa posso fare.

Divertiti!

parole di cautela!

Ho trovato questo bocconcino di fare in giro con il mio codice. Questo è particolarmente importante con questo tipo di unione. Se le tabelle del database sono impostati correttamente, non si nota questo comunque. Ma sto aggiungendo questa sezione perché voglio dare quante più informazioni possibile su di esso.

La ricerca MySQL non farà corrisponde una riga nella prima tabella, se la colonna corrispondente non corrisponde al valore nella colonna della seconda tabella.

Per testare il mio forum ho creato un po 'di "risposte false nella parte posteriore, dove ho aggiunto il nome utente, la data e reply_body manualmente. Quando ho voluto creare una risposta filo da una persona diversa dal conto principale (admin) ho usato "CM" (abbreviazione di Christopher-Michael, I) dispositivo di colonna che risponde tavolo forum_replies. Ma quando ho visto il forum di tutte le risposte alle prestazioni di discussione, tranne che ho avuto la replier come CM.

Alla fine mi sono reso conto che il nome utente corretto per l'account utente è stato C_M. Una volta che sono passato a CM C_M come replier per le risposte che alla fine è apparso nel thread come dovrebbero.

Ho voluto chiarire questo perché a mio parere la sezione concetto mi sembra che tutte le linee che possiedono la combinazione 'thread_id' sono aggiunti alla matrice creata dalla query, e quindi, se per qualche motivo il codice viene subito conto al tavolo i profili di riga thread_reply rimarrebbero una festa, ma non ci sarebbe alcun valore di img_url poiché non vi era alcuna corrispondenza nella seconda tabella. Ciò si tradurrebbe in un valore vuoto per $ img_url allora viene visualizzato un tag img src rotto e un avatar.

Tuttavia, dal momento che la query è stata in grado di trovare una corrispondenza nella tabella di profilo, dal momento che il valore 'username' non è sul tavolo ... lui non ha considerato la riga della tabella forum_replies è un gioco e poi la risposta non è nemmeno indicato se si soddisfano i criteri di avere il 'thread_id' adeguata.

Certo, se avessi usato il modo in cui questo commento quando è collegato al conto C_M poi le forum_replies nome utente corretto essere salvati nella tabella e testare la risposta come previsto.

Così che cosa si riduce a questa sezione: Se sai che una riga della tabella seguente nella query dovrebbe riflettersi nel rispetto dei criteri, se ... verificare che i due valori vengono poi confrontati dichiarazione circa il gioco vero e proprio.

(0)
(0)

Commenti - 0

Non ci sono commenti

Aggiungi un commento

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caratteri rimanenti: 3000
captcha