ďťż
Podstrony
|
telcocafeWitam!Posiadam 3 tabele w bazie danych. Pierwsza tabela to komputery i ich specyfikacja, druga tabela zawiera nazwy i wersja oprogramowania, oraz trzecia tabela, która służy do tworzenia relacji między pierwszą i drugą. Na stronie PHP wyświetlam tabelę trzecią jednak wygląda to tak, że ta tabela pokazuje wyniki w wierszach (na stronie internetowej) typu: 1 3 1 6 1 20 2 2 2 34 3 1 3 2 3 56 Chodzi o to, że w pierwszej kolumnie jest ID komputera z pierwszej tabelki- komputery, a w drugiej kolumnie ID programu z drugiej tabeli (oprogramowanie). Wszystko ładnie pięknie, jednak chciałbym wyświetlić nie numery ID, lecz nazwy tych komputerów oraz nazwy oprogramowania. Bardzo prosiłbym o pomoc, jeżeli będzie potrzebny kod i ktoś chciałby mieć wgląd proszę napisać. Użytkownik NightTrain edytował ten post 13 lipiec 2010, 08:54 Podaj string zapytania do bazy. Powinno być coś w tym styluSELECT 1Tabela.NazwaComp, 2Tabela.NazwaOprogr FROM 1Tabela, 2tabela WHERE 1Tabela.ID = 3Tabela.IDComp AND 2Tabela.ID = 3Tabela.IDOprogr Użytkownik imcpan edytował ten post 13 lipiec 2010, 09:13 Coś nie działa, najpierw miałem takie zapytanie, które działa: $wynik = mysql_query("SELECT * FROM rel_komputer_oprogramowanie ORDER BY komputer_id") następnie zrobiłem zapytanie: $wynik = mysql_query("SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu FROM komputery, oprogramowanie WHERE komputery.id = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.id_programu = rel_komputer_oprogramowanie.program_id") or die('Blad zapytania'); pokazuje Błąd zapytania. Moje tabele: Tabela 1 "komputery" (id,nazwa_komputera, etc..) Tabela 2 "oprogramowanie" (id_programu,nazwa_programu,wersja_programu) Tabela 3 "rel_komputer_oprogramowanie" (komputer_id, program_id) (tabela 3 łaczy pierwsza i druga - "id" z tabeli "komputery" z id_programu z tabeli "oprogramowanie" może to w czymś pomoże Użytkownik NightTrain edytował ten post 13 lipiec 2010, 09:51 To może poza wyświetlaniem, że jest coś nie tak mógłbyś jeszcze wyświetlić co jest nie tak. To się nazywa debugowaniem i w tym przypadku będzie to funkcja mysql_error(). Jeśli chodzi o zapytanie, to brakuje w nim definicji jednej tabeli (imcpan przypadkiem o niej zapomniał).SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu FROM rel_komputer_oprogramowanie, komputery, oprogramowanie WHERE komputery.id = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.id_programu = rel_komputer_oprogramowanie.program_id Andrzeju teraz wyświetla tabelkę, ale pustą :) Przepraszam, rzeczywiście zapomniałem. Ale czy nie powinno tam być jeszcze tak? $wynik = mysql_query("SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu, rel_komputer_oprogramowanie.komputer_id, rel_komputer_oprogramowanie.program_id FROM komputery, oprogramowanie, rel_komputer_oprogramowanie WHERE komputery.id = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.id_programu = rel_komputer_oprogramowanie.program_id") Użytkownik imcpan edytował ten post 13 lipiec 2010, 11:12 Teraz wyświetliło mi tak jak było pierwotnie po id :) Użytkownik NightTrain edytował ten post 13 lipiec 2010, 11:15 Teraz wyświetliło mi tak jak było pierwotnie po id :) $wynik "jest tablicą czteroelementową". $wynik[0] zawiera komputery.nazwa_komputera, natomiast &wynik[1] zawiera oprogramowanie.nazwa_programu Użytkownik imcpan edytował ten post 13 lipiec 2010, 11:24 nie wiem, czy dobrze, myślę, ale chodzi Ci o to, aby zamienić w tabeli zmienne komputer_id, program_id na omputery.nazwa_komputera i oprogramowanie.nazwa_programu ? Bo jak tak zrobię to puste pola są. Według mnie zapytanie powinno wyglądać tak $wynik = mysql_query("SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu, rel_komputer_oprogramowanie.komputer_id, rel_komputer_oprogramowanie.program_id FROM komputery, oprogramowanie, rel_komputer_oprogramowanie WHERE komputery.NAZWAKOLUMNYIDZTABLICYkomputery = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.NAZWAKOLUMNYIDZTABLICYoprogramowanie = rel_komputer_oprogramowanie.program_id") polecenie$row = mysql_fetch_row($wynik)zwraca wiersz, w którym masz cztery pola. W polu 0 i 1 powinny znajdować się te informacje które potrzebujesz Ewentualnie zrób backup twojej bazy do pliku tekstowego i wrzuć go tutaj ftp://212.87.229.197/wymiana według mnie takie zapytanie powinno działac ale pisanie w ciemno jest trudne Użytkownik imcpan edytował ten post 13 lipiec 2010, 11:49 Nie mogę się tam dostać Takie zapytanie działa na Twojej bazie: SELECT komputery.nazwa_komputera, oprogramowanie.nazwa_programu FROM komputery, oprogramowanie, rel_komputer_oprogramowanie WHERE komputery.id = rel_komputer_oprogramowanie.komputer_id AND oprogramowanie.id_programu = rel_komputer_oprogramowanie.program_id i zwraca wszystkie informacje. Skoro tak, to po wykonaniu zapytania na stronie piszesz while($row = mysql_fetch_row($wynik)) { //i tutaj wstawiasz wiersze tabeli //$row[0] zawiera nazwe komputera a //$row[1] zawiera oprogramowanie na kompie } jeśli to nie działa to masz błąd gdzie indziej Użytkownik imcpan edytował ten post 13 lipiec 2010, 12:21 poszło na maila, odezwij się tutaj lub na gg podałem Ci w mailu |
|||
Sitedesign by AltusUmbrae. |