Willkommen in der Webstatt Zum Webstatt Blog und Stories
Sheep Sheep am 17.03.07 12:36

Ich möchte eine Datenbank erstellen, in denen von mir besuchte Konzerte stehen.

Hierzu habe ich vier Tabellen erstellt. Da sich mehrere Datensätze oft wiederholen würden, sollen in die konzert-Tabelle die anderen drei integriert werden. Wie genau muss ich das mit php machen?
Gibt es sonst Kritikpunkte an dieser Konzeption?

[SIZE=10]db2.gif: Ungefähr könnte eine Abfrage aussehen[/SIZE]
[SIZE=10]db.gif: Tabellenverknüpfung[/SIZE]

netcup.de Warum gibt es hier Werbung?
Franky Franky am 17.03.07 12:45

einfach joinen, oder hab ich was überlesen..?
SELECT konz.id ID, bands.name Bandname, typ.typname Typ, loc.name Location, konz.datum Datum, konz.bew Bewertung, konz.komm Kommentar FROM konzerte konz, typ, location loc, bands WHERE konz.band = bands.id && konz.typid = typ.id && konz.location = loc.id

also einfacher:
SELECT
konz.id ID,
bands.name Bandname,
typ.typname Typ,
loc.name Location,
konz.datum Datum,
konz.bew Bewertung,
konz.komm Kommentar

FROM
konzerte konz,
typ,
location loc,
bands

WHERE
konz.band = bands.id &&
konz.typid = typ.id &&
konz.location = loc.id


iwie so ;)

Michael Michael am 17.03.07 12:48

SELECT * FROM konzerte
LEFT JOIN bands ON konzerte.Bandname = bands.ID
LEFT JOIN typ ON konzerte.Typ = typ.ID
LEFT JOIN location ON konzerte.Location = location.ID


// edit

Anstelle von SELECT * natürlich SELECT die,Felder,die,du,brauchst

mab mab am 17.03.07 20:32

Hi.

ganz normalirsiert ist das noch nicht, aber ich denke es erfüllt seinen zweck. übrigens kannst du dir mal das programm toad holen. die basisfunktionalitäten gibt's als freeware und du kannst dir dann ein ERM erstellen.
praktisch ist, dass man sich dann per knopf die tabellen in sql generieren kann!

Sheep Sheep am 20.03.07 20:48

<?php
mysql_connect("localhost",
"bla","bla") or die
("Keine Verbindung moeglich");
mysql_select_db("Tabelle") or die
("Die Datenbank existiert nicht");

$abfrage = "SELECT bandname,typ,location,datum,bewertung,kommentar FROM konzerte ORDER BY `ID` DESC
LEFT JOIN bands ON konzerte.Bandname = bands.ID
LEFT JOIN typ ON konzerte.Typ = typ.ID
LEFT JOIN location ON konzerte.Location = location.ID";

// wie gehts nun weiter?

?>

Hm, ich hab schon n bisschen rumprobiert, aber hier wirds mir zu kompliziert. Im Internet hab ich auch nur recht allgemeine Anleitungen gefunden. Wäre nett wenn mir jemand schreiben könnte, wie hier genau das Auslesen mit PHP funktionert.

Michael Michael am 20.03.07 21:51

$query = mysql_query($abfrage) or die('Fehler');
print '<pre>';
while($data = mysql_fetch_assoc($query)) {
print_r($data);
}


1) Das <pre> ist nur für die Ausgabe des print_r
2) Anstelle des print_r musst du innerhalb der while Schleife die Sachen machen, die du brauchst.

Sheep Sheep am 21.03.07 21:23

Okay, habs jetzt dank euch (und Christian via ICQ) ganz gut hinbekommen:

<?php
mysql_connect("",
"","") or die
("Keine Verbindung moeglich");
mysql_select_db("") or die
("Die Datenbank existiert nicht");

$abfrage = "SELECT band,typ.typ,location.location,ort,datum,bewertung,kommentar FROM konzerte
LEFT JOIN bands ON konzerte.Band = bands.ID
LEFT JOIN typ ON konzerte.Typ = typ.ID
LEFT JOIN location ON konzerte.Location = location.ID";

// Tabellenbeginn
echo "<table border>";
// Überschrift
echo "<tr> <td>Bandname</td> <td>Veranstaltung</td>";
echo "<td>Location</td> <td>Ort</td>";
echo "<td>Datum</td> <td>Kommentar</td>";
echo "<td>Bewertung</td> </tr>";

$query = mysql_query($abfrage) or die(mysql_error());
//print '<pre>';
while($data = mysql_fetch_assoc($query)) {
//print_r($data);
echo "<tr> <td>".$data['band']."</td><td>".$data['typ']."</td><td> ".$data['location']."</td><td>".$data['ort']."</td><td>".$data['datum']."</td><td>".$data['bewertung']." </td><td>".$data['kommentar']."</td>";
}

?>


http://sheep24.de/sheep/konzerte2.php

Morgen mach ich mich an ein Formular zum Befüllen der Datenbank. :)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt