MYSQL PLUGIN
ATTENZIONE!!! La seguente guida tratta un plugin ormai superato ma comunque funzionante, presto verrà postata una guida aggiornata.1) a_sampmysql.inc Download Link:
Click2a) SAMP-MySql Windows Plugin Package Download:
Click2b) SAMP-MySql Ubuntu Plugin Package Download:
ClickDi seguito ci sono le istruzioni e informazioni varie riguardo al plugin MySql per SA-MP (Windows Package) il quale potrà essere usato per gestire in un altro modo i dati sul server.(invece che scriverli sui file, ad esempio)
Primi passi - SetupI Database (DB) usano linguaggio SQL, per chi non sia pratico di questo linguaggio può cominciare a darci un'occhiata dal di
qui.
Estraete tutto il contenuto dell'archivio e mettetelo in una cartella a vostra scelta.
Copiate ed in collate IL CONTENUTO della cartella "src" e mettetelo dentro la cartella plugins. Copiate ed incollate anche il file "sampmysql.dll" nella cartella plugins.
Aprite il file server.cfg e alla riga "plugins" aggiungete di fianco: sampmysql.
Andate
qui per scaricare l'importantissimo file
libmysql.dll che è la libreria del Database.
Questo file va messo nella cartella generale del vostro server, ovvero dove è presente il file samp-server.exe.
mettete il file "a_sampmysql.inc" dentro la cartella pawno/includes/ del vostro server, aprite la vostra GM e nelle prime righe aggiungete
Codice:
#include <a_sampmysql>
Funzioni & EsempiElenco Funzioni.
Codice:
samp_mysql_connect(server[], user[], password[]);
samp_mysql_select_db(db[]);
samp_mysql_query(query[]);
samp_mysql_store_result();
samp_mysql_fetch_row(line[]);
samp_mysql_get_field(field[], value[]); //questa funzione non è dichiarata nel file a_sampmysql.inc, aggiungila manualmente, funzionerà perfettamente
samp_mysql_num_rows();
samp_mysql_num_fields();
samp_mysql_ping();
samp_mysql_real_escape_string(src[], dest[]);
samp_mysql_free_result();
samp_mysql_strtok(dest[], separator[], src[]);
samp_mysql_close();
samp_mysql_connect(server[], user[], password[])La funzione iniziale senza la quale crea la connessione tra il vostro server e il DB.
Ritorna il valore
1 se tutto è andato bene altrimenti torna il valore
0.
Parametri della funzione:
Server[]: IP del Database
User[]: Lo username con cui vi connettete al DB
Password[]: La password con cui vi connettete al DB
Esempio:
Codice:
samp_mysql_connect(123.45.67.890, UserSKE, PassSKE);
Effettua la connesione al Database che specifichiamo.
Ritorna il valore
1 se tutto è andato per il meglio altrimenti ritorna il valore
0.
Parametro della funzione:
DB[]: Nient'altro che il nome del database a cui collegarsi.
Esempio:
Codice:
samp_mysql_connect(123.45.67.890, UserSKE, PassSKE);
samp_mysql_select_db(NomeDB);
samp_mysql_query(query[])La funzione eseguira una serie di istruzioni nel database: prelevare dati, registrare dati, cancellare dati.
Ritorna il valore
1 se tutto è andato per il meglio altrimenti ritorna il valore
0.
Parametro della funzione:
Query[]: Le istruzioni da eseguire.
Esempio:Codice:
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
La query appena descritta preleva i valori di tutti i campi della riga, della tabella "utenti", dove il campo "nome_utente" corrisponde alla stringa "Kevin".
samp_mysql_store_result()Questa funzione DEVE essere chiamata appena dopo aver eseguito la funzione query appena vista, poichè prepara il risultato della query.
Ritorna il valore
1 se tutto è andato per il meglio altrimenti ritorna il valore
0.
Nessun parametro richiestoEsempio:Codice:
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
samp_mysq_store_result();
samp_mysql_fetch_row(line[])La funzione "fetch_row" separa tutti i valori dei campi della query eseguita con il carattere "|".
Ritorna il valore
1 se tutto è andato per il meglio, se non ci sono altri campi ritorna
0.
Parametro della funzione:
Line[]: La stringa dentro la quale saranno contenuti tutti i valori dei campi della query.
Esempio:Codice:
new valori[128];
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
samp_mysq_store_result();
samp_mysql_fetch_row(valori);
In questo esempio dentro la stringa "valori" si avrà più o meno una cosa così
Codice:
"Kevin|kevin.******@libero.it|mypassword|8500"
Il primo valore è il nome utente, il secondo è l'email, il terzo è la password e l'ultimo sono i soldi che il giocatore ha IN-GAME.
samp_mysql_get_field(field[], value[])Questa funzione prende il valore di un campo specifico della tabella del database. (Questa funzione va eseguita dopo fetch_row per prendere i valori)
Ritorna il valore
1 se tutto è qualche valore è stato trovato, se non ha trovato nulla ritorna
0.
Parametri della funzione:
Field[]: Il nome del campo da cui prelevare il valore.
Value[]: La variabile dove verrà inserito il valore dal campo prelevato.
Esempio: (Uso sempre lo stesso esempio che si amplia ogni volta in modo che possiate capire)
Codice:
new valori[128], campo[64];
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
samp_mysq_store_result();
samp_mysql_fetch_row(valori);
samp_mysql_get_field("nome_utente", campo);
printf("Dal campo 'nome_utente' è stato prelevato il valore: %s", campo);
In questo caso vista la query e il valore preso dentro la stringa "campo" c'è il nome: "Kevin".
samp_mysql_num_rows()La funzione ritorna il valore del numero di righe di un certo risultato di una query
Nessun parametro richiestoEsempio:Codice:
new valori[128], campo[64];
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
samp_mysq_store_result();
new linee = samp_mysql_num_rows();
samp_mysql_num_field()La funzione ritorna il valore del numero di campi di un certo risultato di una query
Nessun parametro richiestoEsempio:Codice:
new valori[128], campo[64];
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
samp_mysq_store_result();
new campi = samp_mysql_num_field();
samp_mysql_num_ping()La funzione controlla che la connessione al DB sia eseguita correttamente.
Se torna
0 allora tutto è ok, se torna un valore diverso da 0 allora la connessione non è correttamente riuscita.
Nessun parametro richiestoEsempio:
Codice:
samp_mysql_connect(123.45.67.890, UserSKE, PassSKE);
samp_mysql_select_db(NomeDB);
if(samp_mysql_ping() == 0)
{
print("Connessione al DB avvenuta con successo");
}
samp_mysql_real_escape_String(src[], dest[])Questa funzione è davvero molto utile, infatti se dobbiamo eseguire una query essa controlla che non ci siano caratteri speciali e quindi "sistema" la query in modo che non rechi danni al DB.
Parametri della funzione:
Scr[]: Query sorgente da cui prelevare il codice
Dest[]: Stringa dove torna la query sistemata (Questa stringa DEVE essere grande il doppio+1 della query sorgente Es: se "query[64]" allora "query_sist[129]")
Esempio:Codice:
new q[128], q2[257];
format(q, sizeof(q), "INSERT INTO utenti(nome_utente, email, password, soldi) VALUES('%s', '%s', '%s', %d)", NomeUtente, Email, Pass, Soldi);
samp_mysql_real_escape_string(q,q2);
samp_mysql_query(q2);
La query inserisce nel database i vari valori per stabilire un nuovo account utente. Con la funzione real_escape_string si controlla che tutti i campi siano inseriti senza provocare "buchi" nel sistema.
samp_mysql_free_result()La funzione farà crashare il vostro server. Quindi è inutilizzabile comunque essa permette di liberare la memoria alloccata al risultato di una query eseguita.
Nessun parametro richiestoEsempio:
Codice:
samp_mysql_free_result();
samp_mysql_strtok(dest[], separator[], src[])Questa funzione funziona esattamente come "strtok()", splitta una stringa a seconda del carattere separatore passato come paramentro.
Parametri della funzione:
Dest[]: La stringa dove destinare il valore di un campo.
Separator[]: Il carattere separatore al quale fare riferimento.
Src[]: La stringa a cui applicare la funzione.
Esempio:Codice:
new valori[128], campo[64];
samp_mysql_query("SELECT * FROM utenti WHERE nome_utente="Kevin");
samp_mysq_store_result();
samp_mysql_fetch_row(valori);
samp_mysql_strtok(campo, "|", valori);
printf("Il valore del primo campo della query è: %s", campo);
Alla fin fine questa funzione fa un lavoro simile alla funzione "get_field"
samp_mysql_close()Chiude la connessione al DB.
Nessun parametro richiestoEsempio:
Codice:
samp_mysql_connect(123.45.67.890, UserSKE, PassSKE);
samp_mysql_select_db(NomeDB);
if(samp_mysql_ping() == 0)
{
print("Connessione al DB avvenuta con successo");
}
samp_mysql_close();
TUTORIAL MADE BY SKE92beyond AKA Beyond
Spero possa servire questo tutorial a qualche utente che usi il DB ;)