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:
$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ń:
$zbroja = mysql_fetch_array(mysql_query("SELECT * FROM item WHERE owner_id = '$id' AND window='EQUIPMENT' AND pos='0'")); $zbroja_id = $zbroja['vnum']; $helm = mysql_fetch_array(mysql_query("SELECT * FROM item WHERE owner_id = '$id' AND window='EQUIPMENT' AND pos='1'")); $helm_id = $helm['vnum']; //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:
$zbroja_nazwa = $zbroja_info['nazwa']; $helm_nazwa = $helm_info['nazwa']; //itd.
Oto moje dwa problemy. Proszę o pomoc ;)