You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

nicolashhh

Unregistered

1

Sunday, May 22nd 2011, 11:03am

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.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
<head><title>Statistik</title></head>
<body>
<?php
include 'config.php';
mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

echo "Connected to MySQL<br />";
echo "Connected to Database<br />";
echo "<br /><br /><br />";
// MySQL abfrage: ausgabe Fachbereich / // 	
	$abfrage = mysql_query("SELECT * FROM fachbereich");

	$query = mysql_query("Select * from Buch where fachbereichID = '".$row[fachbereichID]."'");
	$anzahl = mysql_num_rows($query);

	echo "<b>Fachbereich</b><br />";

	while($row = mysql_fetch_assoc($abfrage)) {
 	echo "$row[fachbereichID] | $row[fachbereich] | $anzahl <br />"; 	
}

mysql_close();
?>
</body>
</html>


Ich hoffe, mir kann jemand helfen, den fehler zu finden.

2

Sunday, May 22nd 2011, 3:09pm

Jedoch habe ich bei der Abfrage einen Fehler, welchen ich nicht beheben kann.
Bitte schildere uns von deinem Fehler, welchen Fehler erhältst du? Also Zeilen 15 + 16 solltest du schonmal in die while Schleife verschieben.

nicolashhh

Unregistered

3

Sunday, May 22nd 2011, 3:53pm

Hallo,
habe soeben den korrekten query gefunden, um mir das benötigte ausgeben zu lassen:

Source code

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.


Quoted

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




Strukturen der Tabellen:

Tabelle buch:

Source code

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:

Source code

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


nicolashhh

Unregistered

4

Sunday, May 22nd 2011, 4:40pm

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:

Source code

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>

5

Sunday, May 22nd 2011, 5:01pm

Die Fehlermeldung sagts doch: "query was empty"

$sql ist leer
$ausgabe = mysql_query($sql);

Packe doch bitte in Zeile 1 mal
error_reporting(E_ALL);

dann kannst du alle Warnungen sehen

nicolashhh

Unregistered

6

Sunday, May 22nd 2011, 5:12pm

Auch mit

Source code

1
error_reporting(E_ALL);
bekomme ich nur die fehlermeldung dass das query leer ist.

Habe mal ein screenshot gemacht, wenn ich das ganze in phpmyadmin eingebe:



http://imageshack.us/photo/my-images/542…to20110522u.png

7

Sunday, May 22nd 2011, 5:28pm

wie gesagt, du verwendest $sql in deinem PHP code und die Variable $sql ist leer. Außerdem fehlt in deinem neusten Code ein mysql_fetch_assoc um an die Daten zu kommen.

nicolashhh

Unregistered

8

Sunday, May 22nd 2011, 5:50pm

okay, habe das ganze mal überarbeitet.

Source code

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.

Source code

1
2
3
4
5
6
$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;");


nun scheint das query nicht mehr leer zu sein, stattdessen bekomme ich nur eine "1" ausgegeben.

9

Sunday, May 22nd 2011, 6:17pm

Hier nochmal mein derzeitiger stand:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<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_fetch_assoc($query); 
	
	

	if (!$ausgabe) 
	{
    die('Ungültige Abfrage: ' . mysql_error());
	}
	echo "<b>Statistik: Fachbereich</b><br /><br /><br />";
	
	while($row = mysql_fetch_assoc($query)) {
	echo "<tr>";
	echo "<td>".$row[f.fachbereich]. "</td><td>".$row[anzahl_buecher]. "</td>";  
	echo "</tr><br />"; 	
}	


mysql_close();
?>
</body>
</html>


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

10

Sunday, May 22nd 2011, 6:45pm

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

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<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);
 
$sql = "SELECT		f.fachbereich,
			COUNT(f.fachbereich) AS anzahl_buecher
	FROM		fachbereich f
	INNER JOIN	buch b ON b.fachbereichid = f.fachbereichid
	GROUP BY	f.fachbereich
	ORDER BY	f.fachbereich";
 
$query = mysql_query($sql)or die('Ungültige Abfrage: ' . mysql_error());
 
echo "<b>Statistik: Fachbereich</b>";
 
echo '<table>';
while($row = mysql_fetch_assoc($query)) {
	echo '<tr>
		<td>'.$row['fachbereich']. '</td>
		<td>'.$row['anzahl_buecher']. '</td>
	</tr>';
}
echo '</table>';
 
mysql_close();
?>
</body>
</html>


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

11

Sunday, May 22nd 2011, 7:28pm

ich danke dir vielmals für die hilfe.

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

In etwa mit:

PHP Quellcode

1
.$row['fachbereichID'].


Das ergebnis ist aber leider eine leere spalte

Sheldon

Unregistered

12

Sunday, May 22nd 2011, 8:35pm

ich danke dir vielmals für die hilfe.

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

In etwa mit:

PHP 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

13

Sunday, May 22nd 2011, 8:54pm

ich danke dir vielmals für die hilfe.

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

In etwa mit:

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

Sheldon

Unregistered

14

Sunday, May 22nd 2011, 9:06pm

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

This post has been edited 1 times, last edit by "Sheldon" (May 22nd 2011, 9:15pm)


Similar threads

Social bookmarks