GTA-Expert Forum: [GUIDA] MySQL Plugin per SA-MP - GTA-Expert Forum

Salta al contenuto

  • (3 Pagine)
  • +
  • 1
  • 2
  • 3
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[GUIDA] MySQL Plugin per SA-MP

#1 L'utente è offline   SKE92beyond 

  • Ladro
  • Gruppo: Utenti
  • Messaggi: 576
  • Iscritto il: 17/10/08
  • Provenienza:Cesena
  • GTA Preferito:GTA IV

Inviato il 04 ottobre 2009 - 13:18

MYSQL PLUGIN


1) a_sampmysql.inc Download Link: Click
2a) SAMP-MySql Windows Plugin Package Download: Click
2b) SAMP-MySql Ubuntu Plugin Package Download: Click


Di 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 - Setup
I 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
#include <a_sampmysql>


Funzioni & Esempi

Elenco Funzioni.
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:
samp_mysql_connect(123.45.67.890, UserSKE, PassSKE);


samp_mysql_select_db(db[])
La funzione si collega 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:
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:
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 richiesto

Esempio:
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 ritorna0.

Parametro della funzione:

Line[]: La stringa dentro la quale saranno contenuti tutti i valori dei campi della query.

Esempio:
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ì
"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 ritorna0.

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)
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 richiesto

Esempio:
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 richiesto

Esempio:
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 richiesto

Esempio:
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:
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 richiesto

Esempio:
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:
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 richiesto

Esempio:
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





To Admins
Spoiler


Spero possa servire questo tutorial a qualche utente che usi il DB ;)

~ SKE92beyond ~
[QUOTE=Jpk ubriaco]
Jpk: se mmond è gay nonnsignifica che i sono gat+e se ziuo si fa
Jpk: jnon significa che io mi facci+
Giovanni94m: sisi
[/QUOTE]

0

#2 L'utente è offline   ~>Snake95<~ 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1253
  • Iscritto il: 06/02/08
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 16:23

Guida utile, peccato che tutti i plug-in MySQL per samp crashino al selezionamento dei campi per ricavarne i dati.
Post reso importante :D
Immagine Postata
0

#3 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 04 ottobre 2009 - 16:25

ma funziona con altervista o deve essere per forza un dominio privato?
0

#4 L'utente è offline   ~>Snake95<~ 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1253
  • Iscritto il: 06/02/08
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 16:29

No.
Altervista ed altri servizi "gratis" non funzionano e ti spiego il perchè.
Altervista come tutti gli altri blocca gli IP delle connessioni "esterne", percio' serve un host a pagamento per due cose diverse, database MySQL e server Sa-Mp.
Certi servizi di hosting (sa-mp) hanno anche la possibilità di aprire un database MySQL che accetta solo le connessioni locali (127.0.0.1).
Immagine Postata
0

#5 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 04 ottobre 2009 - 16:37

quindi servizi gratuiti non esistono proprio?

:asd: io col mio pc hosto il sito e il server: il sito lo apro con hfs, ho installato il database php e mysql e poi al sito gli faccio leggere i file che voglio, salvandoli nella cartella scriptfile.
0

#6 L'utente è offline   SKE92beyond 

  • Ladro
  • Gruppo: Utenti
  • Messaggi: 576
  • Iscritto il: 17/10/08
  • Provenienza:Cesena
  • GTA Preferito:GTA IV

Inviato il 04 ottobre 2009 - 18:09

Quote

Originally posted by ~>Snake95<~@04/10/09 - 17:23
Guida utile, peccato che tutti i plug-in MySQL per samp crashino al selezionamento dei campi per ricavarne i dati.
Post reso importante :D

Snake ti devo contraddire il server che gestisco io è hostato e uso tutte le funzioni e non mi crasha :) Quindi è utilissimo

EDIT: @FT941: Aruba non sarà gratuito ma vende DB Mysql a solo 7 Euro all'anno e hanno una qualità davvero altissima. Vedi un pò te :)


EDIT2: Non so come sia successo ma è apparso un doppio post, cancellate quello spra perfavore

~ SKE92beyond ~
[QUOTE=Jpk ubriaco]
Jpk: se mmond è gay nonnsignifica che i sono gat+e se ziuo si fa
Jpk: jnon significa che io mi facci+
Giovanni94m: sisi
[/QUOTE]

0

#7 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 04 ottobre 2009 - 18:22

Scusa ma te sei maggiorenne? :m:
0

#8 L'utente è offline   SKE92beyond 

  • Ladro
  • Gruppo: Utenti
  • Messaggi: 576
  • Iscritto il: 17/10/08
  • Provenienza:Cesena
  • GTA Preferito:GTA IV

Inviato il 04 ottobre 2009 - 18:31

Quote

Originally posted by FT941@04/10/09 - 19:22
Scusa ma te sei maggiorenne? :m:

E che c'entra?
Io ti ho detto i costi, poi te puoi farlo intestare ai tuoi per dire.. anche se poi realmente paghi te

~ SKE92beyond ~
[QUOTE=Jpk ubriaco]
Jpk: se mmond è gay nonnsignifica che i sono gat+e se ziuo si fa
Jpk: jnon significa che io mi facci+
Giovanni94m: sisi
[/QUOTE]

0

#9 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 04 ottobre 2009 - 18:47

:rotfl: non capirebbero
0

#10 L'utente è offline   ~>Snake95<~ 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1253
  • Iscritto il: 06/02/08
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 20:36

Beh ci stanno altri servizi che puoi acquistare tutto online in una pagina web, selezionando i pacchetti e tutto senza chiederti informazioni approfondite o parlare con gli hoster, puoi anche pagare da cellulare senza postepay o paypal.
@SKE92beyond: :asd: ho provato di tutto per far andare /login e crashava sempre, strano...
Immagine Postata
0

#11 L'utente è offline   SKE92beyond 

  • Ladro
  • Gruppo: Utenti
  • Messaggi: 576
  • Iscritto il: 17/10/08
  • Provenienza:Cesena
  • GTA Preferito:GTA IV

Inviato il 04 ottobre 2009 - 21:23

Guarda snake io in cima alla mia GM ho incollato questo:

native samp_mysql_connect(server[], user[], password[]);
native samp_mysql_select_db(db[]);
native samp_mysql_query(query[]);
native samp_mysql_store_result();
native samp_mysql_fetch_row(line[]);
native samp_mysql_get_field(field[], value[]);
native samp_mysql_num_rows();
native samp_mysql_num_fields();
native samp_mysql_ping();
native samp_mysql_real_escape_string(src[], dest[]);
native samp_mysql_free_result();
native samp_mysql_strtok(dest[], separator[], src[]);
native samp_mysql_close();


Non utilizzo l'include (poi a sto punto aggiornerò anche la guida)
e ti assicuro che il mio /login è perfettamente funzionante, nessun crash :) davvero se vuoi te lo farò provare :asd:

Se avesse crashato non avrei fatto la guida :embè:

~ SKE92beyond ~
[QUOTE=Jpk ubriaco]
Jpk: se mmond è gay nonnsignifica che i sono gat+e se ziuo si fa
Jpk: jnon significa che io mi facci+
Giovanni94m: sisi
[/QUOTE]

0

#12 L'utente è offline   MisterSAMP 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1884
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 21:27

Quote

Originally posted by ~>Snake95<~@04/10/09 - 21:36
Beh ci stanno altri servizi che puoi acquistare tutto online in una pagina web, selezionando i pacchetti e tutto senza chiederti informazioni approfondite o parlare con gli hoster, puoi anche pagare da cellulare senza postepay o paypal.
@SKE92beyond: :asd: ho provato di tutto per far andare /login e crashava sempre, strano...

Scusa snake ma veramente si può pagare con il credito telefonico? se si come? e anche un server samp?
14/07/09 - 02/09/13

The return 26/04/15
0

#13 L'utente è offline   ~>Snake95<~ 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1253
  • Iscritto il: 06/02/08
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 21:34

Quote

Originally posted by SKE92beyond@04/10/09 - 22:23
Guarda snake io in cima alla mia GM ho incollato questo:

native samp_mysql_connect(server[], user[], password[]);
native samp_mysql_select_db(db[]);
native samp_mysql_query(query[]);
native samp_mysql_store_result();
native samp_mysql_fetch_row(line[]);
native samp_mysql_get_field(field[], value[]);
native samp_mysql_num_rows();
native samp_mysql_num_fields();
native samp_mysql_ping();
native samp_mysql_real_escape_string(src[], dest[]);
native samp_mysql_free_result();
native samp_mysql_strtok(dest[], separator[], src[]);
native samp_mysql_close();


Non utilizzo l'include (poi a sto punto aggiornerò anche la guida)
e ti assicuro che il mio /login è perfettamente funzionante, nessun crash :) davvero se vuoi te lo farò provare :asd:

Se avesse crashato non avrei fatto la guida :embè:

Ora cercherò di riprovare con XAMPP, ti farò sapere :asd:
Mister SAMP ce ne stanno di hosting con pagamento tramite telefonino, se proprio ti serve ti mando un PM con l'indirizzo. :blush:
Immagine Postata
0

#14 L'utente è offline   MisterSAMP 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1884
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 21:36

Quote

Originally posted by ~>Snake95<~+04/10/09 - 22:34

Quote

(~>Snake95<~ @ 04/10/09 - 22:34)
-SKE92beyond
@04/10/09 - 22:23
Guarda snake io in cima alla mia GM ho incollato questo:

native samp_mysql_connect(server[], user[], password[]);
native samp_mysql_select_db(db[]);
native samp_mysql_query(query[]);
native samp_mysql_store_result();
native samp_mysql_fetch_row(line[]);
native samp_mysql_get_field(field[], value[]);
native samp_mysql_num_rows();
native samp_mysql_num_fields();
native samp_mysql_ping();
native samp_mysql_real_escape_string(src[], dest[]);
native samp_mysql_free_result();
native samp_mysql_strtok(dest[], separator[], src[]);
native samp_mysql_close();


Non utilizzo l'include (poi a sto punto aggiornerò anche la guida)
e ti assicuro che il mio /login è perfettamente funzionante, nessun crash :) davvero se vuoi te lo farò provare :asd:

Se avesse crashato non avrei fatto la guida :embè:

Ora cercherò di riprovare con XAMPP, ti farò sapere :asd:
Mister SAMP ce ne stanno di hosting con pagamento tramite telefonino, se proprio ti serve ti mando un PM con l'indirizzo. :blush: [/b]

Magari, te ne sarei molto grato.. Ma ci sono anche per gta samp?
14/07/09 - 02/09/13

The return 26/04/15
0

#15 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 04 ottobre 2009 - 21:42

anche a me!!!! :w00t:


ma come si chiama questo metodo di pagamento?? paycellular? sauhduhasd
0

#16 L'utente è offline   MisterSAMP 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1884
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 22:13

Grazie 1000 ma allo step 5 mi dice di chiamare un numero O_O
14/07/09 - 02/09/13

The return 26/04/15
0

#17 L'utente è offline   ~>Snake95<~ 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1253
  • Iscritto il: 06/02/08
  • GTA Preferito:Sconosciuto

Inviato il 04 ottobre 2009 - 22:49

Lo devi chiamare per effettuare il pagamento, i soldi della telefonata saranno quelli usati per completare il pagamento.
Immagine Postata
0

#18 L'utente è offline   MisterSAMP 

  • Sicario
  • Gruppo: Utenti
  • Messaggi: 1884
  • Iscritto il: 14/07/09
  • GTA Preferito:Sconosciuto

Inviato il 05 ottobre 2009 - 05:59

Quote

Originally posted by ~>Snake95<~@04/10/09 - 23:49
Lo devi chiamare per effettuare il pagamento, i soldi della telefonata saranno quelli usati per completare il pagamento.

Ah ecco, ma solo per la prima volta? poi quando chiamo, attendo e vedo quando riattaccare?avevo scelto 100 slot, 15 euro al mese..io chiamo tanto il credito telefonico lo gestisco io, ..ma tu hai già fatto questa cosa?
14/07/09 - 02/09/13

The return 26/04/15
0

#19 L'utente è offline   Giovanni94m 

  • Teppista
  • Gruppo: Utenti
  • Messaggi: 439
  • Iscritto il: 08/08/09
  • Provenienza:Agrigento
  • GTA Preferito:GTA: Vice City

Inviato il 05 ottobre 2009 - 13:16

ragazzi fate na postepay così potete pagare tranquillamente con carta di credito
per ricaricarla basta andare in posta o in una ricevitoria sisal
pero deve essere intestata a un maggiorenne
ce una versione anche per i minorenni ma ci vuole sempre un genitore
Immagine Postata
0

#20 L'utente è offline   StanleY 

  • Cacciatore di taglie
  • Gruppo: Utenti
  • Messaggi: 1033
  • Iscritto il: 22/02/09
  • Provenienza:Palermo
  • GTA Preferito:GTA: San Andreas

Inviato il 05 ottobre 2009 - 13:17

io c'è l'ho cioè è intestata a mio padre però se vado alla posta me la ricaricano ???
0

  • (3 Pagine)
  • +
  • 1
  • 2
  • 3
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

1 utenti stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi