Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][msql]
Forum PHP.pl > Forum > Przedszkole
junior207
Witam serdecznie. Mam pewien problem z wypisywaniem z bazy danych.Chodzi mi w szczególności o drógą część tego kodu od <B>Oceny:</B>";nie chce mi wypisywać danych z tabel.Podaję jak wygląda moja baza danych:
Kod
CREATE TABLE student(
       imie VARCHAR(15),
       nazwisko VARCHAR(32) NOT NULL,
       id_index CHAR(5) PRIMARY KEY REFERENCES Oceny,
       rok_studiow  INTEGER(1),
       kierunek VARCHAR(50),
       adres VARCHAR(25),
       haslo INTEGER(5)
     );
    
     CREATE TABLE pracownik(
       id_pracownika INTEGER(1)PRIMARY KEY,
       imie VARCHAR(15),
       nazwisko VARCHAR(32) NOT NULL,
       stopien VARCHAR(5),
       nazwa_przedmiot VARCHAR(20)
     );
    
     CREATE TABLE oceny(
       id_oceny INTEGER(1)PRIMARY KEY,
       nazwa_przedmiot VARCHAR(5)NOT NULL,
       ocena INTEGER(1)NOT NULL,
       termin VARCHAR(10) NOT NULL,
       id_index CHAR(5) NOT NULL REFERENCES student
      
     );
    
     CREATE TABLE przedmioty(
       nazwa_przedmiot VARCHAR(15)PRIMARY KEY,
       id_pracownika VARCHAR(5),
       godziny INTEGER(1)
     );

a tak wygląda plik php

Kod
<?php
      
       include 'funkcja.php';
      
       polacz();
      
       $id_index = $_GET['id_index'];
       $haslo_index = $_GET['haslo'];
      
       $stmt = mysql_query("SELECT * FROM `student` WHERE id_index = '".$id_index."' and haslo = '".$haslo_index."'");
       if (mysql_num_rows($stmt) <> 1) { header('Location: index2.php');
       }
      
       $dane = mysql_fetch_assoc($stmt);
      
       echo "Imie i nazwisko: <b>{$dane['imie']}</B> <B>{$dane['nazwisko']}</B>
      
       Adres: <B>{$dane['adres']}</B>
      
       Student <B>{$dane['rok_studiow']}</B>. roku studiów na kierunku <B>{$dane['kierunek']}</B>
      
       Nr indeksu: <B>{$dane['id_index']} </B>
      
      
      
       <B>Oceny:</B>";
      
       unset($stmt);
       $stmt = mysql_query("SELECT przedmioty.nazwa_przedmiot as nazwa, ocena, oceny.termin as termin, pracownik.stopien as stopien, pracownik.imie, pracownik.nazwisko FROM oceny, przedmioty, pracownik WHERE oceny.id_index = '$id_index' and oceny.nazwa_przedmiot = przedmioty.nazwa_przedmiot and przedmioty.id_pracownika = pracownik.id_pracownika");
      
       if(!$stmt){
       echo 'Komunikat b³êdu:
       ';
       echo '<strong>' . mysql_errno().'</strong>: ' . mysql_error();
       die;
       }
      
      
       echo '<TABLE bgcolor="#FFFFFF" bordercolor=green border=5 width="70%">
                  <tr>
                      <th>Nazwa przedmiotu</th>
                      <th>Wyk³adowca</th>
                      <th>Sesja</th>
                      <th>Ocena</th>
                  </tr>';
      
       while($row = mysql_fetch_assoc($stmt)){
           echo  '<tr><td><center>'.$row['nazwa_przedmiot'].'</center></td><td><center>'.$row['stopien'].' '.$row['imie'].' '.$row['nazwisko'].'</center></td><td><center>'.$row['termin'].'</center></td><td><center>'.$row['ocena'].'</center></td></tr>';
       }
      
       echo '</table>';
      
      
      
      
      
      
       rozlacz();
          
       ?>

Jak ktoś może mi pomóc to byłbym bardzo wdzięczny.
nevt
nie jestem pewien, czy to jest zasadnicza przyczyna twojego problemu, ale na pewno możliwa, bo używasz tych pól do filtracji danych i złączenia tabel. a masz w nich straszny bałagan, sam popatrz na definicje pól między którymi potem stawiasz znak =
  1. CREATE TABLE pracownik(
  2. id_pracownika [b]INTEGER(1)[/b]PRIMARY KEY
  3. CREATE TABLE przedmioty(
  4. id_pracownika [b]VARCHAR(5)[/b]
  5.  
  6. CREATE TABLE pracownik(
  7. nazwa_przedmiot [b]VARCHAR(20)
  8. [/b] CREATE TABLE oceny(
  9. nazwa_przedmiot [b]VARCHAR(5)NOT NULL,[/b]
  10. CREATE TABLE przedmioty(
  11. nazwa_przedmiot [b]VARCHAR(15)PRIMARY KEY[/b]

jesteś pewien, że w tych polach są przechowywane odpowiadające sobie wartości? jeśli tak, to dlaczego te pola nie maja takich samych typów?
junior207
Poprzemieniałem ale i tak nie działa. Myślę że gdzie indziej musi być błąd.Teraz baza wygląda tak:
Kod
CREATE TABLE student(
   imie VARCHAR(15),
   nazwisko VARCHAR(32) NOT NULL,
   id_index CHAR(5) PRIMARY KEY REFERENCES Oceny,
   rok_studiow  INTEGER(1),
   kierunek VARCHAR(50),
   adres VARCHAR(25),
   haslo INTEGER(5)
);

CREATE TABLE pracownik(
   id_pracownika VARCHAR(5)PRIMARY KEY,
   imie VARCHAR(15),
   nazwisko VARCHAR(32) NOT NULL,
   stopien VARCHAR(5),
   nazwa_przedmiot VARCHAR(20)
);

CREATE TABLE oceny(
   id_oceny INTEGER(1)PRIMARY KEY,
   nazwa_przedmiot VARCHAR(20)NOT NULL,
   ocena INTEGER(1)NOT NULL,
   termin VARCHAR(10) NOT NULL,
   id_index CHAR(5) NOT NULL REFERENCES student
  
);

CREATE TABLE przedmioty(
   nazwa_przedmiot VARCHAR(20)PRIMARY KEY,
   id_pracownika VARCHAR(5),
   godziny INTEGER(1)
);
nevt
bałaganu ciąg dalszy:

...SELECT przedmioty.nazwa_przedmiot as nazwa ...
echo ... $row['nazwa_przedmiot'] ...

odwołujesz się do nieistniejącego indeksu w $row w związku z czym cała linijka kodu nie wykonuje się....
nie widzisz tego, bo pewnie masz wyłączone raportowanie warningów i błędów php...
junior207
Trochę przerobiłem baze danych. Przerobiłem zapytanie. Przeanalizowałem na spokojnie. Poprawiłem i wszystko działa. Dzięki za podpowiedź gdzie szukać. Pozdrawiam.
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.