Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tablica z danymi według pola
ZuyPan
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

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


Witam.
Mam problem: W bazie danych mam tabelę item w której trzymam przedmioty graczy. Jej struktura jest następująca:
* id - klucz
* vnum - id przedmiotu z innej tabeli (zawiera ona informacje o przedmiotach)
* window - informacja o tym gdzie jest item (założony = EQUIPMENT i to nam wystarczy)
* owner_id - id posiadacza przedmiotu
* pos - jeśli przedmiot jest założony to jest to slot. Wartości prezentują się następująco:
0 - zbroja
1 - helm
2 - buty
3 - bransoleta
4 - broń
5 - naszyjnik
6 - kolczyki
10 - tarcza

Chcę najpierw pobrać wszystkie założone przedmioty przez gracza. Teoretycznie proste zapytanie:
  1. $ekwipunek = mysql_fetch_array(mysql_query("SELECT * FROM item WHERE owner_id = '$id' AND window='EQUIPMENT'"));

Jednakże chciałbym utworzyć coś w stylu:
$zbroja_id = $ekwipunek['pos' = 0];
$helm_id = $ekwipunek['pos' = 1];
...
$tarcza_id = $ekwipunek['pos' = 10];
Wiem, że to błędny zapis, ale nie wiem jak to zrobić. Chodzi o to aby np. $zbroja_id zawierała w sobie wartość pola vnum gdzie pole pos = 0. myślałem o pętli foreach i nawet próbowałem, ale po kilku godzinnej walce się poddałem. Oczywiście mógłbym zrobić to za pomocą kilku zapytań:
  1. $zbroja = mysql_fetch_array(mysql_query("SELECT * FROM item WHERE owner_id = '$id' AND window='EQUIPMENT' AND pos='0'"));
  2. $zbroja_id = $zbroja['vnum'];
  3.  
  4. $helm = mysql_fetch_array(mysql_query("SELECT * FROM item WHERE owner_id = '$id' AND window='EQUIPMENT' AND pos='1'"));
  5. $helm_id = $helm['vnum'];
  6.  
  7. //itd

Takie rozwiązanie na pewno nie jest optymalne. Jak więc to rozwiązać?

Kolejną sprawą jest: jak już będę miał odpowiednie id przedmiotu w odpowiednich zmiennych i będę chciał pobrać nazwy tych przedmiotów z innej tabeli (id przedmiotu z tej tabeli to vnum zapisane do zmiennej) to chciałbym zrobić to hurtowo aby za każdym razem nie robić zapytania w stylu:
  1. $zbroja_info = mysql_fetch_array(mysql_query("SELECT * FROM itemy WHERE id='$zbroja_id'"));
  2. $zbroja_nazwa = $zbroja_info['nazwa'];
  3.  
  4. $helm_info = mysql_fetch_array(mysql_query("SELECT * FROM itemy WHERE id='$helm_id'"));
  5. $helm_nazwa = $helm_info['nazwa'];
  6. //itd.

Oto moje dwa problemy. Proszę o pomoc ;)

Ten post edytował ZuyPan 25.07.2011, 19:29:25
Go to the top of the page
+Quote Post

Posty w temacie
- ZuyPan   Tablica z danymi według pola   25.07.2011, 19:26:55
- - Piogola   [SQL] pobierz, plaintext SELECT itemy.*, item.* FR...   25.07.2011, 20:02:05
- - DiH   ci*   25.07.2011, 20:55:25
- - ZuyPan   Wszystko fajnie spoko, ale... To chyba nie o to mi...   26.07.2011, 17:05:03


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: 17.10.2025 - 00:55