Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][msql], pobieranie z bazy danych
junior207
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 1.12.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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?

Ten post edytował nevt 6.02.2008, 20:12:42
Go to the top of the page
+Quote Post
junior207
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 1.12.2007

Ostrzeżenie: (0%)
-----


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)
);
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


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...

Ten post edytował nevt 6.02.2008, 20:33:51
Go to the top of the page
+Quote Post
junior207
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 1.12.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:12