Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Jak pobrać dane do sql


Najlepsza odpowiedź GwynBleidD, 14.02.2014 15:29

new name[64], bool:pozytyw

get_user_name(id, name, charsmax(name))
// Tutaj nadajemy wartość pozytywowi: 0 lub 1 w zależności od naszych preferencji.

new query[128]
format(query, charsmax(query), "INSERT INTO `pozytywy_negatywy` (`name`, `wartosc`) VALUES ('%s', '%s')", name, pozytyw?"POZYTYW":"NEGATYW")
Przejdź do postu


  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 Petrus1610

    Zaawansowany

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:102
  • GG:
  • Imię:piotr
  • Lokalizacja:Kraków
Offline

Napisano 14.02.2014 14:49

Siema,

 

Mam problem, gdyż nie wiem jak pobrać do bazy pojedynczy wyraz różny dla danej funkcji.

 

Mam dwie fuknkcje np. jeden(id) i dwa(id). W każdej pobierem standardowe dane z serwera i przesyłam je do sql:

    new nick[33], admin[33], timestamp[32], ip[32], authid2[32], authid[32], hostname[64];
    get_user_name(id, nick, 32);
    get_user_name(his_tester[id], admin, 32);
    get_time ( "%m/%d/%Y - %H:%M:%S", timestamp, 31 );
    get_user_authid(id, authid, 31);
    get_user_ip(id, ip, 31, 1);
    get_user_authid(his_tester[id], authid2, 31);
    get_pcvar_string(g_Hostname, hostname, charsmax(hostname));

Jak w podobny sposób można pobrać pojedynczy wyraz np. POZYTYW lub NEGATYW zaleznie od wspomnianej funkcji jeden lub dwa.

Jedna funkcja zostaje uruchamiana w przypadku np. POZYTYWU, a druga w pzypadku NEGATYWU. Jak pobrać do jedej z kolumn takie dwwa wyrazy?


  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 14.02.2014 15:29   Najlepsza odpowiedź

new name[64], bool:pozytyw

get_user_name(id, name, charsmax(name))
// Tutaj nadajemy wartość pozytywowi: 0 lub 1 w zależności od naszych preferencji.

new query[128]
format(query, charsmax(query), "INSERT INTO `pozytywy_negatywy` (`name`, `wartosc`) VALUES ('%s', '%s')", name, pozytyw?"POZYTYW":"NEGATYW")

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#3 Petrus1610

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:102
  • GG:
  • Imię:piotr
  • Lokalizacja:Kraków
Offline

Napisano 14.02.2014 20:49

No nie chce mi dzialać...

 

Mam już jedno połączenie w ten sposób:

 

w miejscu, gdzie dane są pobierane:

    new query[1001];
    format(query,1000,IMPORRT_DB,nick,admin,timestamp,authid,authid2,ip,hostname);
    SQL_ThreadQuery(SqlConnection,"QueryCreateTable",query);
    return PLUGIN_CONTINUE;

no i dodane tworzenie bazy:

#define CREATE_DB    "CREATE TABLE IF NOT EXISTS `test` (`id` INT(12) NOT NULL AUTO_INCREMENT PRIMARY KEY ,`nick` VARCHAR(255) NOT NULL ,`admin` VARCHAR(255) NOT NULL ,`timestamp` VARCHAR(255) NOT NULL ,`authid` VARCHAR(255) NOT NULL ,`authid2` VARCHAR(255) NOT NULL ,`ip` VARCHAR(255) NOT NULL ,`hostname` VARCHAR(255) NOT NULL ,`name` VARCHAR(255) NOT NULL)"
#define IMPORRT_DB    "INSERT INTO `test` (nick,admin,timestamp,authid,authid2,ip,hostname) VALUES ('%s','%s','%s','%s','%s','%s','%s')"

Wszystko mi dodaje, poza tym "name" na końcu... w INSERT into nie ma tego 'name', bo dodałem drugą linię na dole:

    new query[1001];
    format(query, charsmax(query), "INSERT INTO `test` (`name`, `1`) VALUES ('%s', '%s')", name, pozytyw?"POZYTYW":"NEGATYW")
    format(query,1000,IMPORRT_DB,nick,admin,timestamp,authid,authid2,ip,hostname);
    SQL_ThreadQuery(SqlConnection,"QueryCreateTable",query);
    return PLUGIN_CONTINUE;

Próbowałem bezpośrednio podawać też w VALUES 'POZYTYW', ale też nie chce działać.

 

Sorki, jeżeli mam proste problemy, jednak dopiero zaczynam bawić się z bazami danych.

 

 


Użytkownik Petrus1610 edytował ten post 14.02.2014 21:17

  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 15.02.2014 05:30

Po pierwsze, mój przykład zakładał, że posiadasz w bazie danych tabelę o nazwie pozytywy_negatywy z co najmniej 2ma kolumnami o nazwach nazwa i wartosc i długościach takich, aby zmieściły się do nich odpowiednie napisy. Ty próbujesz wsadzić wartość do kolumny o nazwie `1`, która prawdopodobnie nie istnieje w bazie danych...

 

Najpierw stwórz odpowiednią tabelę w bazie, później wrzucaj do niej dane. To nie jest nvault, że możesz sobie tam wrzucić dane jakie chcesz i kiedy chcesz.


  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#5 Petrus1610

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:102
  • GG:
  • Imię:piotr
  • Lokalizacja:Kraków
Offline

Napisano 15.02.2014 10:04

Dzięki serdeczne za czas. Tak jak wspomniałem, dopiero zaczynam to rozkiniać.

Nie chciałem 2 tabel. Zrobiłem troche pewnie wieśniacko, ale zamiast głownego wpisu dla obu funkcji w defined dodałem do każdej osobno takie wpisy:

    format(query,1000,"INSERT INTO `32_bit` (nick,admin,timestamp,authid,authid2,ip,hostname,werdykt) VALUES ('%s','%s','%s','%s','%s','%s','%s','NEGATYW')",nick,admin,timestamp,authid,authid2,ip,hostname);

Dzięki jeszcze raz, 3maj się.


  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 15.02.2014 10:46

Nie musisz mieć 2ch tabel, wystarczy że zaktualizujesz bieżącą.

 

Nie musisz też 2 razy stosować format, kluczowy jest ten fragment:

pozytyw?"POZYTYW":"NEGATYW"

Który zamieni zmienną pozytyw na string POZYTYW lub NEGATYW w zależności od jej wartości. Jeśli wartość zmiennej będzie 0, zostanie wypisany NEGATYW, jeśli inna niż 0 (np 1 albo -5... cokolwiek różne od 0), będzie to POZYTYW. Taką wartość zamiast zmiennej liczbowej dostanie funkcja format, więc:

format(string, charsmax(string), "%s", pozytyw?"POZYTYW":"NEGATYW")

string będzie zawierał odpowiednio POZYTYW dla wartości różnej od 0 i NEGATYW dla wartości równej 0. Wklejając to do Twojego zapytania:

    format(query,1000,"INSERT INTO `32_bit` (nick,admin,timestamp,authid,authid2,ip,hostname,werdykt) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s')",nick,admin,timestamp,authid,authid2,ip,hostname, pozytyw?"POZYTYW":"NEGATYW");

i do zapytania wklejasz odpowiedni napis w zależności od wartości zmiennej. Oczywiście zmienną i napisy możesz zamienić na co tylko chcesz, umieszczenie tego w kodzie również.


GwynBleidD (15.02.2014 10:47):
I to raczej nie ma nic wspólnego z SQL, a raczej z tym jak się używa języka PAWN :)

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych