Molto spesso il codice php risulta sporco e disordinato, oggi vediamo come rendere il codice più ordinato e leggibile grazie alle funzioni PHP.
Salve a tutti, è passato un po di tempo dal mio ultimo articolo su questo questo sito.
Una delle cose che odio di più quando programmo in php (o in qualsiasi altro linguaggio di programmazione/scripting) è avere un codice disordinato, infatti scrivere un codice in modo pulito e leggibile ci permette di poterlo modificare anche molto tempo dopo che l’abbiamo creato.
Oggi vi spiegherò come scrivere query al database in modo ordinato scrivendo tutto il codice in una funzione e poi recuperandolo grazie ad un ciclo foreach.
01. Creiamo la tabella
Creiamo la tabella mysql che useremo come esempio per questo articolo:
CREATE TABLE example ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, autore varchar(100) NOT NULL, titolo varchar(500) NOT NULL, tag varchar(100) NOT NULL ) INSERT INTO example (id, autore, titolo, tag) VALUES ( 0, "Giacomo", "Slider jQuery ad effetto fade", "jQuery" ) INSERT INTO example (id, autore, titolo, tag) VALUES ( 1, "Giacomo", "Guida javascript – input file personalizzati", "Javascript" ) INSERT INTO example (id, autore, titolo, tag) VALUES ( 2, "Giacomo", "I migliori libri per imparare PHP", "PHP" ) INSERT INTO example (id, autore, titolo, tag) VALUES ( 3, "Riccardo Mel", "Script login utente in php e mysql sicuro", "PHP" ) INSERT INTO example (id, autore, titolo, tag) VALUES ( 4, "Riccardo Mel", "Form di contatti in PHP con antispam", "PHP" )
In questa tabella MySql sono stati inseriti alcuni degli articoli presenti in questo sito.
02. Organizziamo la funzione
Dopo aver creato il database andremo a creare un file chiamato librery.php dove saranno inserite le funzioni che gestiranno le chiamate al database.
<?php function Articoli() { $connessione = mysql_connect("localhost","username","password")or die("Connessione non riuscita: " . mysql_error()); mysql_select_db("nome del database", $connessione) or die("Errore nella selezione del database" . mysql_error()); $dati = array(); $temp = array(); $query = "SELECT * FROM example"; $query = mysql_query($query); if (!$query) die("errore nella query ".mysql_error()); while($row = mysql_fetch_array($query)){ $temp['id'] = $row['id']; $temp['autore'] = $row['autore']; $temp['titolo'] = $row['titolo']; $temp['tag'] = $row['tag']; $dati[] = $temp; } mysql_close(); return $dati; } ?>
Effettuiamo la connessione al database direttamente dentro la funzione in modo da connettersi solo quando necessario.
Nel codice abbiamo creato 2 array di nome dati e temp, il secondo conterrà dei dati temporanei che verranno inseriti dentro l’array “dati“. Tramite un ciclo while recuperiamo i dati dal database e li inseriamo nell’array temp. Alla fine del codice facciamo ritornare l’array dati e chiudiamo la connessione al database.
Ora non ci resta che creare una pagina che stamperà i dati ricavati tramite la funzione scritta in precedenza.
<table width="600px" border="1"> <tr> <td>Id</td> <td>Autore</td> <td>Titolo</td> <td>Tag</td> </tr> <?php foreach(Articoli() as $var) { ?> <tr> <td><?php echo $var['id'] ?></td> <td><?php echo $var['autore'] ?></td> <td><?php echo $var['titolo'] ?></td> <td><?php echo $var['tag'] ?></td> </tr> <?php } ?> </table>
Siccome la funzione articoli() fa ritornare un array possiamo usare un ciclo foreach per recuperare i dati
Leggi la documentazione per il ciclo foreach
Spero che l’articolo vi sia stato d’aiuto per rendere i vostri progetti “più ordinati”. A presto!
Articolone Giacomo complimenti, fornisce molti spunti di riflessione e di miglioramento per tutti!
Grazie mille!
Grazie mille, era proprio l’argomento che stavo cercando di approfondire i questi giorni, mi hai letto nel pensiero.
P.S. attendo ancora l’articolo su come visualizzare i dati appena inseriti nel database senza aggiornare la pagina….Spero che riesci a trovare un po di tempo per farlo 😀
in che senso visualizzare i dati appena inseriti nel database? °-°
penso parlasse con me xD appena possibile !
Si il messaggio era rivolto a Riccardo, allora attendo 😀
Per quanto riguarda l’articolo, puoi spiegarmi perché hai usato temp?
il nome temp l’ho usato solo perché è un abbreviazione di TEMPoraneo xD
Ciao a tutti … premetto che non sono un esperto di php…. ma se mi date na mano… ve ne sarei grato …..
in due parole, ho creato un database in my sql…… attraverso un form composto da tre campi testo, autore, titolo e descrizione devo fare una ricerca nel mio database…. ( una ricerca avanzata insomma)… ho provato a creare il codice… ma non funzia nulla… mi potete aiutare?
<?php
// connettiamoci il nostro database
$db_host = "";
$db_user = "";
$db_password = "";
$db_name = "";
//connetto il database
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
// recuperiamo ora cerca inviato con post
$autore = $_POST['autore'];
$titolo = $_POST['titolo'];
$descrizione = $_POST['descrizione'];
$clausola = "";
if ( $_POST['autore'] != "" ) $clausola = 'autore LIKE "%' . $_POST['autore'] . '%"';
$temp = "";
if ( $_POST['titolo'] != "" ) $temp = 'titolo LIKE "%' . $_POST['titolo'] . '%"';
if ( $clausola != "" ) $clausola .= " AND ";
$clausola .= $temp;
$temp = "";
if ( $_POST['descrizione'] != "" ) $temp = 'descrizione LIKE "%' . $_POST['descrizione'] . '%"';
if ( $clausola != "" ) $clausola .= " AND ";
$clausola .= $temp;
if ($clausola != "" ) {
$query .= " WHERE ( " . $clausola . " )";
}
$query = "SELECT * FROM tabella WHERE autore LIKE '%$cerca%' AND titolo LIKE '%$cerca%'AND descrizione LIKE '%$cerca%'";
$autore = $row['autore'];
$titolo = $row['titolo'];
$descrizione = $row['descrizione'];
// stampiamo i nostri dati
echo "Autore: $autore”;
echo “Titolo: $titolo “;
echo “Descrizione: $descrizione”;
?>
Prova qui:
http://www.targetweb.it/form-di-ricerca-semplice-in-php/
e qui:
http://www.targetweb.it/form-ricerca-avanzata-php-mysql/