[php][mysql] Problem z wyszukiwarką

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Strachu
Nowy
Nowy
Posty: 32
Rejestracja: pt lip 08, 2005 10:28 am

Re: [php][mysql] Problem z wyszukiwarką

Post autor: Strachu »

viraptor pisze:$results['u.id'];
Niedziała, sprawdzałem :(
viraptor pisze:Jak nie chcesz kropek, to SELECT u.id as uid, itd. -> dostajesz $results['uid'];
A jak to będzie wyglądać gdy pobieram wszystko z danej tabeli?(chodzi mi o zapytanie).
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [php][mysql] Problem z wyszukiwarką

Post autor: viraptor »

Wypisz sobie po prostu $results po takim zapytaniu, to będziesz wiedział jak się które pole nazywa... A z tymi kropkami, to coś dziwnego się dzieje u ciebie, bo normalnie tak zwraca wyniki.
Strachu
Nowy
Nowy
Posty: 32
Rejestracja: pt lip 08, 2005 10:28 am

Re: [php][mysql] Problem z wyszukiwarką

Post autor: Strachu »

viraptor pisze:Wypisz sobie po prostu $results po takim zapytaniu, to będziesz wiedział jak się które pole nazywa...
Próbowąłem tak funckcą print_r, to mi wyświetliło coś takiego:

Kod: Zaznacz cały

Array ( [0] => 3 [id] => 1 [1] => Cześć [name] => test [2] => 1 [forum] => 1 [3] => 3 [reply] => 3 [4] => 3 [autor] => 3 [5] => 20:28:03, 15-07-2005 [createdate] => 20:28:03, 15-07-2005 [6] => 3 [7] => 0 [user_level] => 0 [8] => Xardas [username] => Xardas [9] => c4ca4238a0b923820dcc509a6f75849b [pass] => c4ca4238a0b923820dcc509a6f75849b [10] => [email protected] [email] => [email protected] [11] => Wieża Xardasa [u_from] => Wieża Xardasa [12] => 20:26:50, 15-07-2005 [register_date] => 20:26:50, 15-07-2005 [13] => 2 [posts] => 7 [14] => 1 [15] => test [16] => To jest testowe forum, możesz w nim robić co chcesz :D [description] => To jest testowe forum, możesz w nim robić co chcesz :D [17] => 7 [18] => 3 [topics] => 3 ) 
[0] prawdopodnie wskazuje na u.id, ale dlaczego akurat [0], a nie [u.id]?

Ale takie zgadywanie, który numer to jaka kolumna to chyba raczej nienajlepsze wyjście :/

Proszę o pomoc jak to zapisywać. :?
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [php][mysql] Problem z wyszukiwarką

Post autor: viraptor »

Zamiast fetch_array zrób fetch_assoc -> powinno być troche jaśniej wtedy, bo nie będzie używał indeksów, tylko nazwy.
Strachu
Nowy
Nowy
Posty: 32
Rejestracja: pt lip 08, 2005 10:28 am

Re: [php][mysql] Problem z wyszukiwarką

Post autor: Strachu »

Teraz wyświetliło:

Kod: Zaznacz cały

Array ( [id] => 1 [name] => test [forum] => 1 [reply] => 3 [autor] => 3 [createdate] => 20:28:03, 15-07-2005 [user_level] => 0 [username] => Xardas [pass] => c4ca4238a0b923820dcc509a6f75849b [email] => [email protected] [u_from] => Wieża Xardasa [register_date] => 20:26:50, 15-07-2005 [posts] => 7 [description] => To jest testowe forum, możesz w nim robić co chcesz :D [topics] => 3 ) 
To chyba nienajlepsze rozwiązanie, ponieważ to co było oznaczone cyframi całkowicie zostało usunięte z tabeli :?
Np. Teraz nie ma pobranego id z tabeli users :?
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [php][mysql] Problem z wyszukiwarką

Post autor: viraptor »

Przepraszam za zamieszanie - za bardzo się przyzwyczaiłem do swoich wrapperów i już nie pamiętam co w nich pakowałem :)
Dokładnie: przez fetch_{assoc,row,object,array} nie dostaniesz pełnych nazw kolumn i tabeli. Możesz mieć dostęp do pełnych nazw na 2 sposoby:
1. Używasz np. takiego kodu:
[php]<?php
while($row=mysql_fetch_row($res)) {
foreach($row as $k=>$v)
$arr[mysql_field_table($res,$k).'.'.mysql_field_name($res,$k)]=$v;
// robisz cośtam dalej z $arr, która ma indeksy w stylu tabela.pole
}
?>[/php]
Mniej-więcej taki kod mam we wrapperze.
2. Każde pole sobie aliasujesz, czyli np. (pole to kolidujące pole).
[sql]SELECT *, tabela1.pole as 'tabela1.pole', tabela2.pole as 'tabela2.pole' .....[/sql]
Masz wtedy wszystkie niekolidujące pola normalnie, a te z kolidujące też z własnymi nazwami.
ODPOWIEDZ