Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pobranie dwóch tabel
Forum PHP.pl > Forum > Przedszkole
Hosiek
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 ?
Leihto
  1. $q = mysql_query("SELECT * FROM `pojazdy` WHERE WLASCICIEL=`test`");
  2. while($row = mysql_fetch_array($q))
  3. {
  4. // twoj kod
  5. }
Hosiek
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 ?
untorched
  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 tongue.gif
pmir13
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().
Hosiek
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.
untorched
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..
Hosiek
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
untorched
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..
Hosiek
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 smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.