Aus mysql Datenbank Spalten auslesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Aus mysql Datenbank Spalten auslesen

    Guten Morgen,

    ich habe folgendes Problem:
    Ich erstelle für ein Projekt in der Schule eine Statistik. Diese Statistik beinhaltet eine ID und den dazugehörigen Fachbereich aus der Tabelle Fachbereich. Anschließend soll aus einer Tabelle Buch, welche auch die FachbereichID beinhaltet, die IDs gezählt werden und auch ausgegeben werden, sodass man sehen kann, wieviele Bücher in einem Fachbereich sind.

    Jedoch habe ich bei der Abfrage einen Fehler, welchen ich nicht beheben kann.

    PHP-Quellcode

    1. <html>
    2. <head><title>Statistik</title></head>
    3. <body>
    4. <?php
    5. include 'config.php';
    6. mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
    7. mysql_select_db($dbname);
    8. echo "Connected to MySQL<br />";
    9. echo "Connected to Database<br />";
    10. echo "<br /><br /><br />";
    11. // MySQL abfrage: ausgabe Fachbereich / //
    12. $abfrage = mysql_query("SELECT * FROM fachbereich");
    13. $query = mysql_query("Select * from Buch where fachbereichID = '".$row[fachbereichID]."'");
    14. $anzahl = mysql_num_rows($query);
    15. echo "<b>Fachbereich</b><br />";
    16. while($row = mysql_fetch_assoc($abfrage)) {
    17. echo "$row[fachbereichID] | $row[fachbereich] | $anzahl <br />";
    18. }
    19. mysql_close();
    20. ?>
    21. </body>
    22. </html>
    Alles anzeigen


    Ich hoffe, mir kann jemand helfen, den fehler zu finden.
  • Hallo,
    habe soeben den korrekten query gefunden, um mir das benötigte ausgeben zu lassen:

    SQL-Abfrage

    1. SELECT f.fachbereich, COUNT(*) AS anzahl_buecher FROM fachbereich f JOIN buch b ON b.fachbereichid = f.fachbereichid GROUP BY f.fachbereich ORDER BY f.fachbereich;


    Wenn ich diesen Befehl im PHPmyadmin und in der Konsole/Terminal eingebe, erhalte ich die Auflistung, wieviele Bücher in einem Fachbereich sind.

    Allerdings habe ich nun probleme beim einbinden bzw. ausgabe diesen Befehls in eine php datei.


    Hier einmal ein Auszug aus der Datenbank mit dazugehörigen Strukturen:

    [Blockierte Grafik: http://imageshack.us/f/810/bildschirmfoto20110522u.png]
    [Blockierte Grafik: http://imageshack.us/f/508/bildschirmfoto20110522u.png]

    Strukturen der Tabellen:

    Tabelle buch:

    Quellcode

    1. create table buch ( buchID int auto_increment primary key, titel varchar(200), kaufpreis varchar(200), isbn varchar(200), verlagID int, fachbereichID int, FOREIGN KEY (fachbereichID) REFERENCES fachbereich(fachbereichID), FOREIGN KEY (verlagID) REFERENCES verlag(verlagID) );


    Tabelle fachbereich:

    Quellcode

    1. create table fachbereich ( fachbereichID int auto_increment primary key, fachbereich varchar(255) );

  • Hallo,
    bekomme, nachdem ich das Query in mein php script eingegeben habe, nur noch eine Fehlermeldung: "Ungültige Abfrage: Query was empty". Habe die hinzugefügten Veränderungen mal in rot markiert:

    PHP-Quellcode

    1. <html> <head><title>Statistik: Fachbereich</title></head> <body> <?php include 'config.php'; mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); mysql_select_db($dbname); // MySQL abfrage: ausgabe Fachbereich / // $query = mysql_query("SELECT f.fachbereich, COUNT(*) AS anzahl_buecher FROM fachbereich f JOIN buch b ON b.fachbereichid = f.fachbereichid GROUP BY f.fachbereich ORDER BY f.fachbereich;"); $ausgabe = mysql_query($sql); if (!$ausgabe) { die('Ungültige Abfrage: ' . mysql_error()); } echo "<b>Statistik: Fachbereich</b><br /><br /><br />"; echo $ausgabe[anzahl_buecher]; mysql_close(); ?> </body> </html>
  • okay, habe das ganze mal überarbeitet.

    Quellcode

    1. $ausgabe = mysql_fetch_assoc($query);


    $sql konnte ja nur leer sein, da ich dieses query auskommentiert habe. nun greift $ausgabe ja auf $query zu.

    Quellcode

    1. $query = mysql_query("SELECT f.fachbereich, COUNT(*) AS anzahl_buecher
    2. FROM fachbereich f
    3. JOIN buch b
    4. ON b.fachbereichid = f.fachbereichid
    5. GROUP BY f.fachbereich
    6. ORDER BY f.fachbereich;");


    nun scheint das query nicht mehr leer zu sein, stattdessen bekomme ich nur eine "1" ausgegeben.
  • Hier nochmal mein derzeitiger stand:

    PHP-Quellcode

    1. <html>
    2. <head><title>Statistik: Fachbereich</title></head>
    3. <body>
    4. <?php
    5. include 'config.php';
    6. mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
    7. mysql_select_db($dbname);
    8. // MySQL abfrage: ausgabe Fachbereich / //
    9. $query = mysql_query("SELECT f.fachbereich, COUNT(*) AS anzahl_buecher
    10. FROM fachbereich f
    11. JOIN buch b
    12. ON b.fachbereichid = f.fachbereichid
    13. GROUP BY f.fachbereich
    14. ORDER BY f.fachbereich;");
    15. $ausgabe = mysql_fetch_assoc($query);
    16. if (!$ausgabe)
    17. {
    18. die('Ungültige Abfrage: ' . mysql_error());
    19. }
    20. echo "<b>Statistik: Fachbereich</b><br /><br /><br />";
    21. while($row = mysql_fetch_assoc($query)) {
    22. echo "<tr>";
    23. echo "<td>".$row[f.fachbereich]. "</td><td>".$row[anzahl_buecher]. "</td>";
    24. echo "</tr><br />";
    25. }
    26. mysql_close();
    27. ?>
    28. </body>
    29. </html>
    Alles anzeigen


    Ausgabe: die zahlen, wie oft ein buch in einem fachbereich vorkommt. es fehlt lediglich jetzt noch, dass die fachbereiche dazu angezeigt werdne, jedoch bisher erfolglos
  • Du verwendest f.fachbereich. Musst aber stattdessen nur "fachbereich" verwenden.
    Mit error_reporting(E_ALL) solltest du deswegen undefined index Warnungen sehen.

    Hier nochmal dein Code etwas optimiert...

    Quellcode

    1. <html>
    2. <head><title>Statistik: Fachbereich</title></head>
    3. <body>
    4. <?php
    5. include 'config.php';
    6. mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
    7. mysql_select_db($dbname);
    8. $sql = "SELECT f.fachbereich,
    9. COUNT(f.fachbereich) AS anzahl_buecher
    10. FROM fachbereich f
    11. INNER JOIN buch b ON b.fachbereichid = f.fachbereichid
    12. GROUP BY f.fachbereich
    13. ORDER BY f.fachbereich";
    14. $query = mysql_query($sql)or die('Ungültige Abfrage: ' . mysql_error());
    15. echo "<b>Statistik: Fachbereich</b>";
    16. echo '<table>';
    17. while($row = mysql_fetch_assoc($query)) {
    18. echo '<tr>
    19. <td>'.$row['fachbereich']. '</td>
    20. <td>'.$row['anzahl_buecher']. '</td>
    21. </tr>';
    22. }
    23. echo '</table>';
    24. mysql_close();
    25. ?>
    26. </body>
    27. </html>
    Alles anzeigen


    PS: Bitte verwende die Syntax Tags die du für viele Programmiersprachen unter dem Editor findest.
  • Nico Held schrieb:

    ich danke dir vielmals für die hilfe.

    Wäre es noch möglich die fachbereichID auszulesen?

    In etwa mit:

    Quellcode

    1. .$row['fachbereichID'].


    Das ergebnis ist aber leider eine leere spalte


    Weißt du eigentlich was .$row['fachbereichID'] ist und was das echo davor bedeuten soll?

    Wenn du dir den Code von Torben richtig ansiehst, findest du im Rumpf (?) der While-Schleife eine Echo-Ausgabe. Die wiederum gibt eine Tabelle inklusive dem Inhalt von .$row['fachbereichID'].
    Somit ist deine Frage beantwortet ;)

    Mit freundlichen Grüßen

    Sheldon
  • Sheldon schrieb:

    Nico Held schrieb:

    ich danke dir vielmals für die hilfe.

    Wäre es noch möglich die fachbereichID auszulesen?

    In etwa mit:

    Quellcode

    1. .$row['fachbereichID'].


    Das ergebnis ist aber leider eine leere spalte


    Weißt du eigentlich was .$row['fachbereichID'] ist und was das echo davor bedeuten soll?

    Wenn du dir den Code von Torben richtig ansiehst, findest du im Rumpf (?) der While-Schleife eine Echo-Ausgabe. Die wiederum gibt eine Tabelle inklusive dem Inhalt von .$row['fachbereichID'].
    Somit ist deine Frage beantwortet ;)

    Mit freundlichen Grüßen

    Sheldon


    Nein, eben nicht. Der Inhalt aus .$row['fachbereichID']. wird NICHT mit ausgegeben schätzelein ;) Ausserdem habe ich 80% des codes selber geschrieben und ja, ich weiß was eine echo-ausgabe ist. Ich programmiere hauptsächlich HTML für die ausbildung/schule und fange nun langsam mit php noch an.
  • Habe bei meinem Überfliegen fachbereichID anstatt fachbereich in Torben´s Code gelesen. Sorry my fault.
    Gut, anscheinend hast du es schon ausprobiert. Wie sieht dein aktueller Code aus mit fachbereichID?
    Hast du den SQL-Befehl angepasst?

    Mit freundlichen Grüßen

    Sheldon

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sheldon ()