ďťż

[PHP/MySQL] Wyświetlenie wyników tabeli

       

Podstrony


telcocafe

Witam!

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

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.