Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytania do kilku tabel na jednej stronie
Forum PHP.pl > Forum > Przedszkole
yugodriver
Witam

Robię na zaliczenie stronkę. Już mam prawie wszystko ukończone. Na drodze staneła mi tylko jedna przeszkoda. Jak zrobić żeby na jesnej stonie wyświetlały mi się wyniki zapytań z kilku tabel?

Chciałbm żeby efekt końcowy wyglądal następująco:

Cytat
Imie i nazwisko: (tutaj żeby pobierało z tabeli student wartość pola imie i nazwisko)
Adres: (tutaj żeby pobierało z tabeli student wartość pola adres)
Pesel: (wartosć pola pesel z tabeli student)
Student (wartość pola rok_studiow z tabeli student). roku studiów na kierunku (wartość pola kierunek z tabeli student).
Nr indeksu: (wartosć pola id_index z tabeli student)

W tym miejcu chciałbym wstawić tabelkę. Jednak nie bardzo wiem jak robić bo chciałbym żeby nazwy kolumn w tabelce byly inne niż w bazie:

---------------------------------------------
|Nazwa przedmiotu|Wykładowca|Sesja|Ocena| - tak bym chciał żeby nazywały się kolumny które widzi użytkownik
---------------------------------------------
W pierwszej kolumnie chciałbm żeby wyświetlało się pole id_przedmiot z tabeli przedmioty. W drugiej kolumnie stopień, imię i nazwisko z tabeli pracownik, w trzeciej wartość termin z tabeli oceny i ostatniej wartość ocena z tabeli oceny.

Na końcu chciałbym żeby pojawialo się zdanie w zależności od wartośći pola czesne w tabeli student. Jeżeli wartosć tego pola wynosi tak to żeby zdanie nie pojawiało się. Jeżeli wartość pola jest równa nie to żeby pojawiało się zdanie: Czesne nie zostało wpłacone.


Baza danych wygląda w następujący sposób:

  1. CREATE TABLE oceny(
  2. id_oceny INTEGER(1)PRIMARY KEY,
  3. id_przedmiot CHAR(5)NOT NULL,
  4. ocena INTEGER(1)NOT NULL,
  5. termin VARCHAR(10) NOT NULL,
  6. id_index CHAR(5) NOT NULL REFERENCES student
  7. );
  8.  
  9. CREATE TABLE pracownik(
  10. id_pracownika INTEGER(1)PRIMARY KEY,
  11. imie VARCHAR(15),
  12. nazwisko VARCHAR(30) NOT NULL,
  13. stopien VARCHAR(5),
  14. id_przedmiot CHAR(20)
  15. );
  16.  
  17. CREATE TABLE przedmioty(
  18. id_przedmiot CHAR(20)PRIMARY KEY,
  19. nazwa_przedmiot VARCHAR(15),
  20. id_pracownika VARCHAR(5),
  21. godziny INTEGER(1),
  22. cwiczenia VARCHAR(5)
  23. );
  24.  
  25. CREATE TABLE student(
  26. imie VARCHAR(15),
  27. nazwisko VARCHAR(32) NOT NULL,
  28. id_index CHAR(5) PRIMARY KEY REFERENCES Oceny,
  29. rok_studiow INTEGER(1),
  30. kierunek VARCHAR(50),
  31. pesel CHAR(11),
  32. czesne VARCHAR(10),
  33. adres VARCHAR(15)
  34. );


Łączenie i rozłaczne z bazą mam w oddzielnym pliku o nazwie funkcja.php

  1. <?php
  2.  
  3. $conn = 0;
  4.  
  5. function polacz() {
  6.  
  7. global $conn;
  8.  
  9.  
  10. if (($conn = mysql_connect('adres bazy danych', 'login', 'haslo')) == 0)
  11. die ('Nie można połączyć z bazą danych: ' . mysql_error());
  12. echo '<center> </center>';
  13.  
  14.  // Wybor bazy danych
  15. if (mysql_select_db('login') == 0)
  16.  die ('Nie można wybrać bazy danych');
  17. echo '<center> </center>';
  18. };
  19. function rozlacz() {
  20.  
  21. global $conn;
  22.  
  23. mysql_close($conn);
  24. echo ' ';
  25. };
  26.  
  27. // Komunikat
  28. function komunikat($napis, $kolor) {
  29. echo "<FONT color=$kolor>";
  30. echo "<CENTER><BR><BR><H1>".
  31.  "$napis".
  32.  "</H1></CENTER>";
  33. echo "</FONT>";
  34.  
  35. };
  36.  
  37. ?>


Natomiast strona z której bede się logował do tej strony którą chcę zrobić wygląda tak:
  1.  
  2. </head>
  3.  
  4. <body style="background-color: #99ff66;">
  5. <?php
  6. include 'funkcja.php';
  7. polacz();
  8.  
  9. ?>
  10.  
  11. <form METHOD="GET" ACTION="infost.php"><center>
  12. <p>Wpisz nr indeksu</p>
  13. <input type="tekst" name="id_index"><br>
  14.  
  15.  
  16. <INPUT TYPE="submit" NAME="ok" VALUE="OK">
  17. </form>
  18.  
  19.  
  20. <?php
  21. rozlacz();
  22. ?>
  23.  
  24. <hr>
  25. </body>
  26. </html>


Bardzo proszę o pomoc
galileox86
  1. <?php
  2. $stmt = mysql_query("SELECT * FROM `student` WHERE id_index = '$tutaj_ID_Indeksu' ");
  3.  
  4. $dane = mysql_fetch_assoc($stmt);
  5.  
  6. echo "Imie i nazwisko: {$dane['imie']} {$dane['nazwisko']} <br />
  7. Adres: {$dane['adres']} <br />
  8. Pesel: {$dane['pesel'] <br />
  9. Student {$dane['rok_studiow']} roku studiów na kierunku {$dane['kierunek']}.
  10. Nr indeksu: {$dane['id_index']}";
  11.  
  12. unset($stmt);
  13. $stmt = mysql_query("SELECT przedmioty.id_przedmiot as id, ocena, oceny.termin as termin, pracow
    nik.stopien as stopien, prawconik.imie, pracownik.nazwisko FROM oceny, przedmioty
    , pracownik WHERE ocena.id_index = '$tutaj_id_indexu' and ocena.id_przedmiot = przedmioty.id_przedmiot and przedmioty.id_pracownika =
     pracownik.id_pracownika"
    );
  14.  
  15.  
  16. echo '<table>
  17.  <tr> 
  18.  <th>Nazwa przedmiotu</th>
  19.  <th>Wykładowca</th>
  20.  <th>Sesja</th>
  21.  <th>Ocena</th>
  22.  </tr>';
  23.  
  24. while($row = mysql_fetch_assoc($stmt){
  25. echo '<tr><td>'.$row['id'].'</td><td>'.$row['stopien'].' '.$row['imie'].' '.$row['nazwisko'].'</td><td>'.$row['termin'].'</td><td>'.$row['ocena'].'</td></tr>';
  26. }
  27.  
  28. echo '</table>';
  29.  
  30. if($dane['czesne'] != 'tak') {
  31. echo 'Czesne nie zostało wpłacone';
  32. }
  33.  
  34. ?>



W razie niejasnosci pytaj
jakby cos nie dzialalo zapytaj pisalem z biegu
elon
Przy okazji nie lepiej żeby użył fukncji mysql_fetch_array()? W sumie tak na moje okko to jest bardziej przystępna w odwoływaniu sie do wynków. Jeżeli się mylę proszę o oświecenie.
galileox86
no po pierwsze w takim sposobie jak podales mozna wybrac czy chce sie dostepu przez indexy czy przez nazwy poniewaz domyslnie mysql_fetch_array zwraca obie formy naraz a tutaj nam jest wygodniej operowac na logicznych zmiennych typu $dane['imie'] a nie np $dane[1] oczywiscie to samo mozna wykonac z array ale po co pobierac obie instancje tablicy jak mozna od razu sobie z nazw korzystac a jesli naprawde chcialbys juz do tego uzyc tego array to zawsze mozna zrobic mysql_fetch_array($result, MYSQL_ASSOC) ale po co questionmark.gif
yugodriver
strona teraz wyglada w ten sposób:

  1. <HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; CHARSET=Windows-1250">
  4.  
  5. <TITLE>Informacje dla studenta</TITLE>
  6. </HEAD>
  7. <body style="background-color: #99ff66;" >
  8.  
  9. <?php
  10. include 'funkcja.php';
  11.  
  12. polacz();
  13.  
  14.  
  15. $stmt = mysql_query("SELECT * FROM `student` WHERE id_index = '$tutaj_ID_Indeksu' ");
  16.  
  17. $dane = mysql_fetch_assoc($stmt);
  18.  
  19. echo "Imie i nazwisko: {$dane['imie']} {$dane['nazwisko']} <br />
  20. Adres: {$dane['adres']} <br />
  21. Pesel: {$dane['pesel']} <br />
  22. Student {$dane['rok_studiow']} roku studiów na kierunku {$dane['kierunek']}.
  23. Nr indeksu: {$dane['id_index']}";
  24.  
  25. unset($stmt);
  26. $stmt = mysql_query("SELECT przedmioty.id_przedmiot as id, ocena, oceny.termin as termin, pracow
    nik.stopien as stopien, prawconik.imie, pracownik.nazwisko FROM oceny, przedmioty
    , pracownik WHERE ocena.id_index = '$tutaj_id_indexu' and ocena.id_przedmiot = przedmioty.id_przedmiot and przedmioty.id_pracownika =
     pracownik.id_pracownika"
    );
  27.  
  28.  
  29. echo '<table>
  30.  <tr> 
  31.  <th>Nazwa przedmiotu</th>
  32.  <th>Wykładowca</th>
  33.  <th>Sesja</th>
  34.  <th>Ocena</th>
  35.  </tr>';
  36.  
  37. while($row = mysql_fetch_assoc($stmt)){
  38. echo '<tr><td>'.$row['id'].'</td><td>'.$row['stopien'].' '.$row['imie'].' '.$row['nazwisko'].'</td><td>'.$row['termin'].'</td><td>'.$row['ocena'].'</td></tr>';
  39. }
  40.  
  41. echo '</table>';
  42.  
  43. if($dane['czesne'] != 'tak') {
  44. echo 'Czesne nie zostało wpłacone';
  45. }
  46.  
  47.  
  48.  
  49.  
  50. // Zwalnianie pamięci
  51. mysql_free_result($result); 
  52.  
  53. rozlacz();
  54.  
  55. ?>
  56. <br><br><br><a href="index.php">wyloguj
  57. </BODY>
  58. </HTML>

A poniżej 2 przykładowe zapytania:

http://www.dzienniklekcyjny.yoyo.pl/infost...33816&ok=OK
http://www.dzienniklekcyjny.yoyo.pl/infost...33817&ok=OK

Nie potrafię znaleść błędu sad.gif
cornholio666
daj po

  1. <?php
  2. $stmt = mysql_query("SELECT przedmioty.id_przedmiot as id, ocena, oceny.termin as termin, pracow
    nik.stopien as stopien, prawconik.imie, pracownik.nazwisko FROM oceny, przedmioty
    , pracownik WHERE ocena.id_index = '$tutaj_id_indexu' and ocena.id_przedmiot = przedmioty.id_przedmiot and przedmioty.id_pracownika =
     pracownik.id_pracownika"
    );
  3. ?>



  1. <?php
  2. if(mysql_errno() != 0){
  3. die('Error: '.mysql_error().'<br/>');
  4. }
  5. ?>


i zobacz co ci wyświetla
galileox86
po
  1. <?php
  2. $stmt = mysql_query("SELECT przedmioty.id_przedmiot as id, ocena, oceny.termin as termin, pracow
    nik.stopien as stopien, prawconik.imie, pracownik.nazwisko FROM oceny, przedmioty
    , pracownik WHERE ocena.id_index = '$tutaj_id_indexu' and ocena.id_przedmiot = przedmioty.id_przedmiot and przedmioty.id_pracownika =
     pracownik.id_pracownika"
    );
  3. ?>


wpisz cos takiego poniewaz napewno wali sie zapytanie ale nie chce mi sie sprawdzac na zywca literowek wiec podaj co ci tam wyswietli

  1. <?php
  2. if(!$stmt){
  3. echo 'Komunikat błędu:<br />';
  4. echo '<strong>' . mysql_errno().'</strong>: ' . mysql_error();
  5. }
  6. ?>


po drugie masz zmienne takie jak tutaj_ID_Indexu wiesz rozumie ze chcesz zrobic to w najlatwiejszy sposob ale kod moglbys przejrzec

bo on najprawdopodobniej nie ma tego id

wiec piszesz

  1. <?php
  2. $idIndex = $_GET['id_index'];
  3. ?>
yugodriver
Znalzazłem kilka błędów

  1. <HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; CHARSET=Windows-1250">
  4.  
  5. <TITLE>Informacje dla studenta</TITLE>
  6. </HEAD>
  7. <body style="background-color: #99ff66;" >
  8.  
  9. <?php
  10. include 'funkcja.php';
  11.  
  12. polacz();
  13.  
  14.  
  15. $stmt = mysql_query("SELECT * FROM `student` WHERE id_index = '".$id_index."'");
  16.  
  17. $dane = mysql_fetch_assoc($stmt);
  18.  
  19. echo "Imie i nazwisko: {$dane['imie']} {$dane['nazwisko']} <br />
  20. Adres: {$dane['adres']} <br />
  21. Pesel: {$dane['pesel']} <br />
  22. Student {$dane['rok_studiow']} roku studiów na kierunku {$dane['kierunek']}. <br />
  23. Nr indeksu: {$dane['id_index']}";
  24.  
  25. unset($stmt);
  26. $stmt = mysql_query("SELECT przedmioty.id_przedmiot as id, ocena, oceny.termin as termin, pracow
    nik.stopien as stopien, pracownik.imie, pracownik.nazwisko FROM oceny, przedmioty
    , pracownik WHERE oceny.id_index = '$tutaj_id_indexu' and oceny.id_przedmiot = przedmioty.id_przedmiot and przedmioty.id_pracownika =
     pracownik.id_pracownika"
    );
  27.  
  28. if(!$stmt){
  29. echo 'Komunikat błędu:<br />';
  30. echo '<strong>' . mysql_errno().'</strong>: ' . mysql_error();
  31. }
  32.  
  33.  
  34. echo '<table>
  35.  <tr> 
  36.  <th>Nazwa przedmiotu</th>
  37.  <th>Wykładowca</th>
  38.  <th>Sesja</th>
  39.  <th>Ocena</th>
  40.  </tr>';
  41.  
  42. while($row = mysql_fetch_assoc($stmt)){
  43. echo '<tr><td>'.$row['id'].'</td><td>'.$row['stopien'].' '.$row['imie'].' '.$row['nazwisko'].'</td><td>'.$row['termin'].'</td><td>'.$row['ocena'].'</td></tr>';
  44. }
  45.  
  46. echo '</table>';
  47.  
  48. if($dane['czesne'] != 'tak') {
  49. echo 'Czesne nie zostało wpłacone';
  50. }
  51.  
  52.  
  53.  
  54.  
  55. // Zwalnianie pamięci
  56. mysql_free_result($result); 
  57.  
  58. rozlacz();
  59.  
  60. ?>
  61. <br><br><br><a href="index.php">wyloguj
  62. </BODY>
  63. </HTML><a href=\"index.php\">


gdzie wstawic to:

Cytat(galileox86 @ 10.01.2008, 13:17:52 ) *
po drugie masz zmienne takie jak tutaj_ID_Indexu wiesz rozumie ze chcesz zrobic to w najlatwiejszy sposob ale kod moglbys przejrzec

bo on najprawdopodobniej nie ma tego id

wiec piszesz

  1. <?php
  2. $idIndex = $_GET['id_index'];
  3. ?>


czy 57 linia jest potrzebna? Nie wystarczy sama funkcja rozlacz(); ?

</a href=\"index.php\">
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.