Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Pobranie dwóch tabel
Hosiek
post
Post #1





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


A więc chodzi o to, mam zrobione "SELECT * FROM `pojazdy` WHERE WLASCICIEL=`test`) i pobiera i odczytuje w porządku, jednak jest tak ze mam dwa razy wlasciciela test, jednak z innymi wartosicami, jak moge pobrać oby dwa i zapisac to ?

Przykład, mam coś takiego

ID | WLASCICIEL | wartosc 1 | wartosc 2 | wartosc 3 |
1 | test | 56 | 16 | 513 |
2 | test | 25 | 67 | 54 |

wlasiciel jest tu i tu taki sam, jednak wartosci sie zmieniają, chce pobrac te i te wartosci, jest taka moziwosc ?
Go to the top of the page
+Quote Post
Leihto
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 4
Dołączył: 9.01.2012

Ostrzeżenie: (0%)
-----


  1. $q = mysql_query("SELECT * FROM `pojazdy` WHERE WLASCICIEL=`test`");
  2. while($row = mysql_fetch_array($q))
  3. {
  4. // twoj kod
  5. }
Go to the top of the page
+Quote Post
Hosiek
post
Post #3





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(Leihto @ 23.01.2012, 19:40:55 ) *
  1. $q = mysql_query("SELECT * FROM `pojazdy` WHERE WLASCICIEL=`test`");
  2. while($row = mysql_fetch_array($q))
  3. {
  4. // twoj kod
  5. }


A mógł byś mi powiedzieć na jakiej zasadzie to działa ?
Go to the top of the page
+Quote Post
untorched
post
Post #4





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


  1. $q = mysql_query("SELECT * FROM `pojazdy` WHERE WLASCICIEL=`test`"); // Pobierz z tabeli pojazdy wszystkie wpisy dla których WLASCICIEL to test
  2.  
  3. if(mysql_num_rows($q) < 1)
  4. {
  5. echo 'Osoba <b>test</b> nie posiada żadnych pojazdów!';
  6. }
  7. else
  8. {
  9. echo '<b>Test</b> posiada pojazdy o ID: ';
  10. while($row = mysql_fetch_array($q)) // Odczytuj kolejno każdy wpis podczas wykonywania pętli i zapisuj jego zwrot w postaci tablicy do zmiennej $row
  11. {
  12. echo $row['ID'].' ';
  13. }
  14.  
  15. }


Chyba tyle wystarczy, aby zrozumieć? A może nie o to chodzi? Bo lekko nie ogarnąłem o co ci dokładnie chodzi.

Edit:
Ahh no tak, sorki, z pośpiechu jakoś tak mi się napisało (IMG:style_emoticons/default/tongue.gif)

Ten post edytował untorched 23.01.2012, 21:13:42
Go to the top of the page
+Quote Post
pmir13
post
Post #5





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


Pragnę jedynie zauważyć, że $q, czyli zmienna typu result zwracana przez mysql_query jest FALSE tylko wtedy, gdy przy wykonywaniu wystąpił błąd, do sprawdzania ilości zwróconych rekordów trzeba dodatkowo użyć mysql_num_rows().
Go to the top of the page
+Quote Post
Hosiek
post
Post #6





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Hmm...dokladnie chodzi mi o odczytanie tego w języku squirrel. Ma to wyglądac tak: wpisuje komende /pojazdy i ma pokazac jakie pojazdy mam, one są dodane do mysql. Z jednym to nie problem, jednak jak jest ich wiecej musi byc pętla, i z tym mam problem. Może pokazam wam kod jaki mam i spróbojecie coś znalesc.
Kod
if(cmd[0] == "/pojazdy" || cmd[0] == "/vehicles")
    {
        if (cmd.len() >=2)
        {
            sendPlayerMessage(playerid, "WSKAZÓWKA: Użyj /pojazdy", Pomaranczowy);
        }
        else
        {
        local result = mysql_query(handler, "SELECT * FROM `pojazdy` WHERE WLASCICIEL=\'"+ getPlayerName(playerid) +"\'");  //Wykonanie zapytania do mysql
        if(result = false)  //wykona jesli nie wykonało połączenia
        {
            sendPlayerMessage(playerid, "Nie Posiadasz żadnych pojazdów.", Pomaranczowy);
            
        }
        else
        {
            sendPlayerMessage(playerid, "Twoje pojazdy: ", Pomaranczowy);
            while(row = mysql_fetch_assoc(result))
            {
            sendPlayerMessage(playerid, row[ID], Pomaranczowy);
            }
        }
        }
        mysql_free_result(result);  //Na koniec pracy z mysql
        return 1;
    }


jak daje mysql_fetch_array to wywala błąd ze tego nie zna, wiec dałem mysql_fetch_assoc. to samo z mysql_num_rows, wywala błąd jak to daje.
Teraz jest tak ze pojawia sie "Twoje pojazdy: "i tyle, czyli ta pętla nie do konca działa.
Go to the top of the page
+Quote Post
untorched
post
Post #7





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Człowieku, trzeba było napisać w jakim języku chcesz to mieć. Przecież w każdym języku pisze się inaczej. Po za tym jak mi się zdaje to nie forum dot. squirrel'a tylko języków programowania web'owego. Jeśli chcesz pisać sobie pluginy do modów GTA San Andreas ewentualnie innych gier z tej serii(domyślam się po kodzie), to poszukaj w ich dokumentacji jak używać ich funkcji..

Ten post edytował untorched 23.01.2012, 21:44:55
Go to the top of the page
+Quote Post
Hosiek
post
Post #8





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


To jest do GTA IV, tam są funkcje ale do mysql działa to jak w c++, powinno działac to tak samo.

w puginie który instalowałem, czyli dodatkowy mysql są takie polecenia.
Kod
mysql_connect( string hostname, string username, string password, string database ) -- connects to a server
mysql_close( mysql_handler handler ) -- Closes a mysql-connection

mysql_escape_string( mysql_handler handler, string text ) -- escapes a string
* It's what you should do to ALL things you're inputting - such as
* "SELECT * FROM accounts WHERE username = '" + username + "' AND password = '" + password + "'"
* If anyone uses > '; DROP TABLE accounts; -- < as password, then the table is gone.

mysql_ping( mysql_handler handler ) -- returns true if you're still connected to the server
mysql_errno( mysql_handler handler ) -- returns the last error's number
mysql_error( mysql_handler handler ) -- returns the last error's text
mysql_query( mysql_handler handler, string query ) -- executes a query
mysql_free_result( mysql_result result ) -- free's a result (should do after you're done with each query)
mysql_fetch_assoc( mysql_result result ) -- returns a row from the result in associative, converting types automatically.
mysql_insert_id( mysql_handler handler ) -- returns the last insert id, obviously only useful with "INSERT INTO ..."
mysql_affected_rows( mysql_handler handler ) - returns the number of deleted/updated/whatever'd rows in the raw query


Ten post edytował Hosiek 23.01.2012, 21:56:51
Go to the top of the page
+Quote Post
untorched
post
Post #9





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Kod
if(cmd[0] == "/pojazdy" || cmd[0] == "/vehicles")
    {
        if (cmd.len() >=2)
        {
            sendPlayerMessage(playerid, "WSKAZÓWKA: Użyj /pojazdy", Pomaranczowy);
        }
        else
        {
        local result = mysql_query(handler, "SELECT * FROM `pojazdy` WHERE WLASCICIEL=\'"+ getPlayerName(playerid) +"\'");  //Wykonanie zapytania do mysql
        if(mysql_affected_rows(handler) < 1 )  //wykona jesli nie wykonało połączenia
        {
            sendPlayerMessage(playerid, "Nie Posiadasz żadnych pojazdów.", Pomaranczowy);
            
        }
        else
        {
            sendPlayerMessage(playerid, "Twoje pojazdy: ", Pomaranczowy);
            local rows = mysql_fetch_assoc(result);
            
            for(int i = 0; i < sizeof(rows); i++)
            {
                sendPlayerMessage(playerid, rows[i](tu nie powinna być jakaś zmienna rzutowana z int na char[]?), Pomaranczowy);
            }
        }
        }
        mysql_free_result(result);  //Na koniec pracy z mysql
        return 1;
    }


Skoro twierdzisz, że squirrel(nie znam tego języka kompletnie) jest podobnym składniowo językiem do C++, to powinno wyglądać mniej więcej tak..
Go to the top of the page
+Quote Post
Hosiek
post
Post #10





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

Ostrzeżenie: (0%)
-----


Cytat(untorched @ 23.01.2012, 22:30:22 ) *
Kod
if(cmd[0] == "/pojazdy" || cmd[0] == "/vehicles")
    {
        if (cmd.len() >=2)
        {
            sendPlayerMessage(playerid, "WSKAZÓWKA: Użyj /pojazdy", Pomaranczowy);
        }
        else
        {
        local result = mysql_query(handler, "SELECT * FROM `pojazdy` WHERE WLASCICIEL=\'"+ getPlayerName(playerid) +"\'");  //Wykonanie zapytania do mysql
        if(mysql_affected_rows(handler) < 1 )  //wykona jesli nie wykonało połączenia
        {
            sendPlayerMessage(playerid, "Nie Posiadasz żadnych pojazdów.", Pomaranczowy);
            
        }
        else
        {
            sendPlayerMessage(playerid, "Twoje pojazdy: ", Pomaranczowy);
            local rows = mysql_fetch_assoc(result);
            
            for(int i = 0; i < sizeof(rows); i++)
            {
                sendPlayerMessage(playerid, rows[i](tu nie powinna być jakaś zmienna rzutowana z int na char[]?), Pomaranczowy);
            }
        }
        }
        mysql_free_result(result);  //Na koniec pracy z mysql
        return 1;
    }


Skoro twierdzisz, że squirrel(nie znam tego języka kompletnie) jest podobnym składniowo językiem do C++, to powinno wyglądać mniej więcej tak..



troszeczkie zmieniłem ale działa, dzięki wielkie (IMG:style_emoticons/default/smile.gif)

Ten post edytował Hosiek 24.01.2012, 16:24:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 04:57