Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tablica z danymi według pola
Forum PHP.pl > Forum > PHP
ZuyPan
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 ;)
Piogola
  1. SELECT itemy.*, item.* FROM item, itemy WHERE itemy.id = item.vnum AND window='EQUIPMENT' AND item.owner_id = '$id'

Powinieneś dostać potrzebne tobie dane
DiH
ci*
ZuyPan
Wszystko fajnie spoko, ale... To chyba nie o to mi chodziło wink.gif W Twoim zapytaniu nigdzie nie ma mowy o polu "pos". A to właśnie pole pos ma być takim jak by kluczem. Jeszcze raz przedstawię to na przykładzie:

$helm_id = $ekwipunek['pos' == 1];
a teraz za pomocą opisu "słownego"

zmienna $helm_id zawiera w sobie zawartość pola vnum z rekordu w którym wartość pola pos wynosi 1
i tak z wszystkimi przedmiotami czyli np.

$zbroja_id = $ekwipunek['pos' == 0];
zmienna $zbroja_id zawiera w sobie zawartość pola vnum z rekordu w którym wartość pola pos wynosi 0


A z Twoim zapytaniem nie umiem czegoś takiego wykonać.
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.