- Home
- Categorie
- Coding e Sistemistica
- PHP
- FAQ - Php
-
Cosa è MySql?
E' un software DBMS (Database management system) relazionale, progettato per consentire la manipolazione, il controllo ed un discreto livello di sicurezza dei Database, in modalità multi-utente. Supportato sia da sistemi Unix che Windows, anche se il primo ha una “corsia preferenziale” solitamente. Supporta gran parte della sintassi SQL e con l'avanzare del suo sviluppo si prevede un'integrazione totale.
-
Cosa è un Database?
Non è altro che un archivio di dati strutturato che permette la gestione dei suoi contenuti (inserimento, aggiornamento, ricerca e cancellazione) da parte di applicazioni software.In poche parole il Database fa da archivio ai nostri dati mentre la gestione è affidata, nel caso trattato da questa sezione, al MySql.
-
Posso installare in locale un database server MySql?
Certo! Come altre tipologie di database è possibile installare il database server MySql anche su un normalissimo Personal Computer, senza per questo rinunciare alle sue potenzialità.
-
Dove posso reperirlo?
Dal sito ufficiale: www.mysql.com.
L'attuale versione in uso è la 5.
-
Ho scaricato il modulo PHP, il Web Server Apache ed il database server MySql. Ed ora?
Completa l'installazione dei tre pacchetti e quindi passa alla configurazione degli stessi al fine di poterli interfacciare tra loro. Puoi seguire le guide che trovi in rete, ne riportiamo qualcuna qui di seguito:
Windows: http://www.giorgiotave.it/forum/php-mysql/101-guida-php-installazione-lamp-su-win32.html
** Linux:** http://php.html.it/guide/leggi/92/guida-php-su-linux/
-
Interfacciare tutti e tre i programmi è troppo laborioso. Non c'è un altro metodo?
Risposta affermativa anche in questo caso. Esistono in rete molti pacchetti all-in-one che possono fare al caso tuo, riportiamo qui di seguito le specifiche di quelli più usati:Easyphp (ver. 1.8), pacchetto all-in-one contenente:
-
Web Server Apache (Ver. 1.3.33);
-
Database server MySql (Ver. 4.1.9);
-
Modulo PHP (Ver. 4.3.10);
-
PhpMyAdmin (Ver. 2.6.1), *sistema di amministrazione del vostro database server MySql*;
Reperibile su: http://www.easyphp.org/
XAMPP (ver. 1.6.5), altro pacchetto all-in-one contenente:
-
Web Server Apache (Ver. 2.2.6);
-
Database server MySql (Ver. 5.0.51);
-
Modulo PHP (Ver. 5.2.5 e Ver. 4.4.6, entrambe le versioni per poter testare i vostri script);
-
PhpMyAdmin (Ver. 2.11.3);
-
Filezilla FTP Server (Ver. 0.9.24);
-
Mercury Mail Transport System (Ver. 4.52);
-
OpenSSL (Ver. 0.9.8g).
Reperibile su: http://www.apachefriends.org/it/xampp.html
-
-
Cosa è un sistema di amministrazione database (PhpMyAdmin)?
Un sistema di amministrazione di database è un applicativo che permette di amministrare in maniera rapida e sicura, tramite un interfaccia web, un database. E' multi-utente e la gestione dei permessi è prerogativa del database stesso. Tramite l'interfaccia web di questa applicazione è possibile manipolare un database server MySql in maniera molto semplice. A livello base e senza ricorrere all'ausilio del linguaggio SQL è possibile effettuare: inserimento dati e cancellazione, creazione database, tabelle e relativa cancellazione, inquiry e molto altro ancora. Per “richieste” di livello più alto si potrà ricorrere al linguaggio SQL nell'apposito input-box.
-
Iterazione PHP-MySql.
Aver appreso le nozioni di un linguaggio di programmazione per Web dinamico (come PHP) ormai non basta, la quantità di informazioni, ed aggiornamenti delle stesse, diventa un grosso problema senza un “contenitore”, qualcosa che li memorizzi a tempo indeterminato, e va' di certo contro corrente con lo sviluppo attuale del Web: separare il contenuto dalla struttura stessa del sito. In tal modo si potrà manipolare l'uno, o l'altra, con facilità e senza dover “rifare” o “ridistribuire” un sito integralmente.
Grazie all'iterazione di un linguaggio di programmazione per pagine dinamiche ed un database, giusto per fare un esempio, potrai “rivestire” il tuo sito senza perdere alcun dato precedentemente memorizzato, o, viceversa, potrai mantenere la tua struttura intatta aggiornando i dati che questa presenterà all'utente, cliccando semplicemente un tasto.
L'accoppiata PHP-MySql attualmente è tra le più diffuse nel settore, offrendo a chi effettua tale scelta, e gratuitamente, un linguaggio ed un database di qualità tecniche non indifferenti.
-
Come faccio a recuperare i dati inviati tramite un form?
Tramite le variabili superglobali $_POST, $_GET (oppure, come vedremo, $_REQUEST).
Quale usare dipende dal metodo di trasmissione dei dati del form utilizzato.
Metodo GET
Immaginiamo di avere una pagina con il seguente form:
[html]<form action="page.php" name="form" method="GET">
<input type="text" name="name">
<input type="submit" value="Submit"></form>[/html]diciamo di aver digitato ForumGT nell'input box della form, il valore del campo name, come si potrà notare, verrà trasmesso alla pagina page.php tramite url:http://www.miosito.ext/page.php?name=ForumGT ```per poter recuperare in *page.php* il valore del testo digitato nel campo *name* della form, entra in gioco la variabile superglobale *$_GET*: [php]$name=$_GET['name']; echo $name; // risultato: ForumGT[/php]Come è facile intuire, tramite la variabile superglobale *$_GET* sarà possibile recuperare un qualunque valore passato tramite url al nostro script: [html]<a href="http://www.miosito.ext/page.php?name=ForumGT">ForumGT</a> <a href="http://www.miosito.ext/page.php?name=GT">GT</a>[/html]a seconda del link cliccato la variabile *$_GET* assumerà il valore assegnato a *name* [php]$name=$_GET['name']; // cliccando sul primo link echo $name; // risultato: ForumGT // invece cliccando sul secondo link echo $name; // risultato: GT[/php]Il metodo *GET* è solitamente consigliato quando i parametri da postare sono esigui in quantità ed in contenuto. Bisogna anche ricordare che l'url della pagina fa da postino ed un semplice refresh indurrebbe a rieseguire lo script dato che il valore di *name*, nel nostro caso, è ancora memorizzato nella nostra barra degli indirizzi. ;) ***Metodo POST*** Immaginiamo di avere una pagina con il seguente form: [html]<form action="page.php" name="form" method="POST"> <input type="text" name="name"> <input type="submit" value="Submit"></form>[/html]come per l'esempio usato per il metodo *GET*, diciamo di aver digitato *ForumGT *nella nostra input box. Diversamente dal metodo *GET*, invece, i valori inviati non daranno nessun output all'utente, in quanto questi *viaggeranno* in background. Per recuperare il valore digitato nella input box, bisognerà utilizzare la variabile superglobale *$_POST* in *page.php*: [php]$name=$_POST['name']; echo $name; // risultato: ForumGT[/php] ***$_REQUEST*** Sia che si utilizzi il metodo *GET* o che si utilizzi il metodo *POST*, esiste una variabile superglobale che memorizza i dati trasmessi con entrambi i metodi. Questa variabile è *$_REQUEST*. Il suo utilizzo è perfettamente uguale ai precedenti esempi: [php]$name=$_REQUEST['name'];[/php]
-
Ho creato un Database, cosa devo fare adesso per usarlo?
Ogniqualvolta dovrai lavorare sul tuo Database dovrai far eseguire al tuo script i seguenti comandi:
ipotizzando di aver "parcheggiato" il nostro Database su PC, il nostro host sarà localhost:
[php]$db_host = "localhost";[/php](o comunque quello che ci comunicherà il nostro hosting)
Conoscere dove si trova il Database ovviamente non basta, troppo facile ;), ci serviranno ovviamente il nome utente e la password d'accesso:
[php]$db_user = "nome_utente";
$db_psw = "password";[/php]Ma questo non basta, bisogna entrare nel vivo della nostra amministrazione di MySql. Infatti usando il comando mysql_connect, con i parametri poc'anzi creati, avremo accesso al nostro Database Server MySql:
[php]$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita");[/php]Se tutto è andato per il meglio e non verrà visualizzata la tanto temuta scritta "Connessione al server non stabilita", possiamo iniziare a muovere i primi passi all'interno del nostro Database Server MySql.
Il prossimo passo è quello di selezionare il Database ove intendiamo lavorare ovviamente, usando il comando mysql_select_db.
Ipotizziamo di aver creato un Database di nome pluto per il nostro esempio:
[php]$db_name = "pluto";
$db_pluto = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita");[/php]Anche in questo caso, se non otteniamo l'output della scritta "Connessione al Db non stabilita", significa che tutto è andato a buon fine, siamo connessi al nostro Database e possiamo liberamente lavorarci su.
Riepilogando, il nostro piccolo script che ci permetterà di connetterci al nostro Database sarà il seguente:
[php]$db_host = "localhost";
$db_user = "nome_utente";
$db_psw = "password";
$db_name = "pluto";$connessione = mysql_connect ($db_host, $db_user, $db_psw) or die ("Connessione al server non stabilita");
$db_pluto = mysql_select_db ($db_name, $connessione) or die ("Connessione al Db non stabilita");[/php]IMPORTANTE!!! Da non dimenticare MAI. Ogni volta che ci si connette al nostro Database bisogna ricordare di chiudere la connessione a fine lavoro (solitamente a fine della pagina che contiene il nostro script che lavorerà sul Db).
e per chiudere la nostra connessione basterà utilizzare il comando mysql_close:
[php]mysql_close($connessione);[/php]
-
**
Memorizzo una stringa in una variabile, ma se tramite un form invio il suo valore ad un altro script, la stringa passa incompleta. Perchè?**
Spesso si commette l'errore, forse meglio chiamarla svista, di non includere il valore della variabile dentro gli apici o doppie virgolette.
Infatti se abbiamo il seguente script:
[php]<?
$string="ciao sono uno script";
?>
<form action="page.php" method="post">
<input type="text" name="testo" value=<? echo $string; ?>>
.....
</form>[/php]il risultato del nostro script sarà il seguente codice HTML:
[html]<form action="page.php" method="post">
<input type="text" name="testo" value=ciao sono uno script>
.....
</form>[/html]Come potrai ben immaginare per lo script il valore di value (:D) sarà solo ciao, dato che lo spazio verrà inteso come fine vecchio attributo (value) e inizio nuova occorrenza (o nuovo attributo), occorrenza che non verra' interpretata dato che "sono", "uno", "script" non sono attributi HTML
Pertanto, lasciando così il form, il valore inviato alla pagina page.php sarà solo ciao:
page.php
[php]<?
$testo=$_POST['testo'];
echo $testo; // risultato: ciao
?>[/php]Per risolvere basterà, così come aviene per gli altri attributi, includere il valore di $string dentro apici o doppie virgolette:
[php]<?
$string="ciao sono uno script";
?>
<form action="page.php" method="post">
<input type="text" name="testo" value="<? echo $string; ?>">
.....
</form>[/php]il risultato del nostro script sarà il seguente codice HTML:
[html]<form action="page.php" method="post">
<input type="text" name="testo" value="ciao sono uno script">
.....
</form>[/html]e finalmente nella nostra page.php riusciremo ad ottenere quanto ci aspettavamo:
[php]<?
$testo=$_POST['testo'];
echo $testo; // risultato: ciao sono uno script
?>[/php]
-
**
Quali sono gli operatori di confronto PHP?**
Gli operatori di confronto PHP sono i seguenti:
-
Quali sono gli operatori di confronto MySql?
Gli operatori di confronto MySql sono i seguenti:
-
Come posso ottenere l'orario attuale?
Puoi procedere in vari modi, uno dei possibili metodi è il seguente:
prelevare il timestamp del server ove si esegue lo script tramite la funzione time() e quindi formattare questo valore tramite la funzione date() per ottenere la data secondo le nostre esigenze:
[php]$data=time();
$data=date('Y-m-d H:i:s', $data);
echo $data; // risultato: 2008-02-20 19:13:00[/php]Questo metodo pero' restituisce, come detto, l'orario del server dove risiede lo script, quindi se questo si trovasse all'estero e con un fuso orario diverso dal nostro dovremmo elaborare il valore ottenuto tramite time() aggiungendo o sottraendo il valore in secondi dei fusi orari che ci separano da quello del server.
Portando un esempio, diciamo di lavorare su un server che si trova in Inghilterra, che, come sappiamo, ha un'ora di fuso orario dall'Italia, in meno. Per ottenere l'ora italiana prelevando l'orario del server inglese procederemo nel seguente modo:
[php]$data=time() + 3600; // aggiungo il valore in secondi equivalente ad un'ora
$data=date('Y-m-d H:i:s', $data);
echo $data; // risultato: 2008-02-20 20:13:00[/php]
-
**
Cos'è il timestamp?**
Il timestamp, o meglio l'UNIX timestamp, è un intero lungo il cui valore è il numero di secondi che separa la data/orario specificate dalla UNIX Epoch che equivale al 01 Gennaio 1970 00:00:00.
-
A cosa serve il simbolo @?
@ è un operatore di controllo degli errori che si utilizza come prefisso ad un'espressione di PHP per far ignorare eventuali Warning o messaggi di errore che la stessa espressione potrebbe generare.
Qualora fosse abilitata la track_errors, eventuali messaggi di errore e Warning verranno salvati nella variabile globale $php_errormsg, quest'ultima, essendo una variabile e non un array, conterrà ovviamente l'ultimo warning generato.
Quì di seguito alcuni esempi classici di utilizzo dell'operatore @:
[php]$handle = fopen ( $file, 'a+'); // se non va a buon fine restituisce un E_WARNING
$handle = @fopen ( $file, 'a+'); // in questo modo non verrà restituito alcun messaggio di errore$query = @mysql_query ($sql, $conn);
$value = @$array[$id]; // se l'indice $id non esiste non verranno restituiti messaggi di errore[/php]Come detto l'utilizzo di questo operatore è specifico per espressioni del linguaggio, ovvero tutto cio' che puo' restituire un valore o una risorsa da utilizzare(Es. una query).
-
Cosa sono i Riferimenti?
I riferimenti, sono metodi speciali che PHP usa per gestire le variabili e le interazioni tra queste.
Prendiamo in esempio due variabili $a e $b:[php]
$b = 5;
$a = $b;echo $a; //Ris: 5
echo $b; //Ris: 5
[/php]$a ed $b sono due variabili indipendenti, in questo caso, entrambe assumono il valore 5.
Se durante l'esecuzione modifico il valore di $a e lo pongo uguale a 6 viene:[php]
$b = 5;
$a = $b;echo $a; //Ris: 5
echo $b; //Ris: 5$a = 6;
echo $a; //Ris: 6
echo $b; //Ris: 5
[/php]Si nota subito che le due variabile anche se vengono ugualiate e contengono gli stessi valori ($a = $b) sono due oggetti indipendenti.
Questo è uno dei metodi più semplici utilizzati per la gestione delle variabili in PHP.
Con l'uso dei riferimenti, invece non succede più così.
Quando si precende il nome di una variabile con il simbolo &, non si ottiene più il valore della variabile, ma un riferimento ad essa, l'equivalente dei puntatori in C.
Con i riferimenti, una variabile diventa un alias di un'altra variabile ($a è l'alias di $b, oppure $a punta a $b).[php]
$b = 5;
$a =& $b; //Altra Sintassi: $a = & $b; oppure $a = &$b;
[/php]Ora le due variabili $a e $b condividono lo stesso spazio di memoria, quindi un cambiamento al valore dell'una si riflette sul valore dell'altra.
[php]
$b = 5;
$a =& $b;echo $a; //Ris: 5
echo $b; //Ris: 5$a = 10;
echo $a; //Ris: 10
echo $b; //Ris: 10
[/php]Il concetto di fondo è quello di chiamare lo stesso oggetto variabile con due nomi differenti.
Per eliminire un alias di un oggetto, si utilizza la funzione unset();
Avendo definito più nomi ad un oggetto, con la funzione unset(); non si perde il dato, ma solo un puntatore, quindi se le variabile $a e $b puntano allo stesso oggetto, se "distruggo" $b, mi rimane sempre $a per recuperare l'oggetto desiderato.[php]
$b = 5;
$a =& $b;echo $a; //Ris: 5
echo $b; //Ris: 5$a = 10;
echo $a; //Ris: 10
echo $b; //Ris: 10unset($b);
echo $a; //Ris: 10
echo $b; //Ris: VARIABILE NON DEFINITA
[/php]L'utilità dei riferimenti si vede nell'utilizzo di funzioni.
Passare un riferimento di una variabile come argomento della funzione è molto più veloce e permette di allocare meno spazio in memoria rispetto alla normale copia della variabile.[php]
function funzione(&$valore)
{
$valore += 5;
}$a = 10;
funzione($a);echo $a; //Ris: 15
[/php]Di conseguenza, anche una funzione può restituire un puntatore ad una variabile.
[php]
function &funzione()
{
static $valore = 0; //STATIC: $valore ha visibilità (può essere usata) solo all'interno della funzione
$valore++;
return $valore;
}echo funzione(); //Ris: 1
echo funzione(); //Ris: 2
echo funzione(); //Ris: 3$a =& funzione();
$a = 10;echo funzione(); //Ris: 11
[/php]In conclusione, l'utilizzo dei riferimenti porta benefici come la riduzione della memoria utilizzata dal server, in particolare nell'uso di grandi strutture dati come gli array.
-
Come posso verificare la presenza di un parola, o di una stringa, all'interno di un'altra stringa?
Un metodo molto immediato è quello di utilizzare la funzione strstr();.
Questa funzione restituirà FALSE qualora non venisse trovata alcuna occorrenza della parola, o stringa, ricercata.
[php]<?
$string = "ForumGT";
$search = "GT";
if (strstr ($string, $search))
{
// eseguo le istruzioni
}
else
{
echo "Nessuna occorrenza di $search è contenuta nella stringa";
}
?>[/php]
La suddetta funzione è, pero', case sensitive, pertanto se cercassimo all'interno della nostra stringa "ForumGT", la stringa "gt", otterremo FALSE come risultato. Per ovviare a questo "problema" possiamo ricorrere all'equivalente non case sensitive di questa funzione, ovvero stristr();
-
Come posso trasformare una determinata parola, o stringa, in un link**?**
Puoi utilizzare la funzione str_replace(); per sostituire la parola cercata con il relativo link.
[php]<?
$string = "Benvenuto nel ForumGT";
$replace = "<a href="http://www.giorgiotave.it/forum/problemi-col-forumgt/45923-ciao-e-benvenuto-nel-forum-gt.html">ForumGT</a>";
$string = str_replace ("ForumGT", $replace, $string);
echo $string; // risultato HTML: Benvenuto nel <a href="http://www.giorgiotave.it/forum/problemi-col-forumgt/45923-ciao-e-benvenuto-nel-forum-gt.html">ForumGT</a>
?>[/php]che tradotto in visualizzazione sarà:Benvenuto nel ForumGT
Essendo case sensitive la nostra funzione ovviamente non riconoscerà la stringa "forumgt" all'interno di $string. Per ovviare a questo possiamo utilizzare l'equivalente *non case sensitive *della funzione, ovvero str_ireplace();.
-
Come posso creare un Database nel mio Database Server?
Le strade percorribili sono diverse:- Tramite creazione di uno script PHP*
- Tramite l'input box SQL del phpMyAdmin
- Tramite utilizzo della procedura guidata del phpMyAdmin
Creazione tramite script PHP*
Nella nostra pagina PHP andremo per prima cosa ad inserire i nostri dati di connessione al Database Server e quindi i comandi relativi alla creazione del Database specificando il charset che dovrà utilizzare il Db stesso di default:
[LEFT][PHP]<?php
$connection = @mysql_connect($db_host,$db_user,$db_pass) or die ("Connessione al server non stabilita");
$sql = "CREATE DATABASEnuovo_database
DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci";
$query = @mysql_query($sql) or die (mysql_error());
@mysql_close($connection);
?>[/PHP][/LEFT]
Ci basterà richiamare la presente pagina dal browser per poter creare il nostro nuovo_database.
*molti hosting, per motivi di sicurezza, non permettono la creazione/cancellazione/modifica di Database o tabelle tramite comandi esterni o script.Tramite l'input box "SQL" del phpMyAdmin
Una volta effettuato l'accesso al nostro phpMyAdmin abbiamo la possibilità (in qualunque posizione del Database Server ci troviamo) di immettere direttamente la nostra istruzione SQL di creazione del Database nella input box prevista dal programma.
Basterà cliccare sulla linguetta SQLper far apparire la textarea dove andremo ad inserire la nostra istruzione SQL:
Limitandoci infine a cliccare su "Esegui" il phpMyAdmin creerà il nostro nuovo_database dandoci conferma dell'avvenuta creazione:
Tramite utilizzo procedura guidata del phpMyAdmin
Una volta effettuato l'accesso al nostro phpMyAdmin ci si presenterà immediatamente nella Home la possibilità di creare il nostro nuovo_database tramite l'apposito pannello:Basterà indicare il nome del Database che vogliamo creare, il charset che questo utilizzerà come default ed infine cliccare su Crea.
Similarmente al caso precedente il pannello ci restituirà la conferma dell'avvenuta creazione: