WinFuture-Forum.de: [php\mysql] Hilfe! Möchte Mehrere Datensätze Aus Einer Abfrag - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[php\mysql] Hilfe! Möchte Mehrere Datensätze Aus Einer Abfrag


#1 Mitglied ist offline   Nightcrawler 

  • Gruppe: aktive Mitglieder
  • Beiträge: 369
  • Beigetreten: 05. September 04
  • Reputation: 0

geschrieben 09. September 2008 - 22:42

Hallo,

ich bin gerade dabei eine Film DB zu erstellen.
Abfragen klappen wunderbar.
Nur die Ausgabe in meiner PHP Tabelle macht Probleme.

Also ich habe diese Abfrage erstellt.

$query = "SELECT f.titel, f.spielzeit, f.studio, f.release, f.fsk, g.genre, r.reg, fi.inhalt, s.name, t.ton, so.sonstiges, mm.cover, mm.trailer 
			FROM film f INNER JOIN filminfo fi ON f.kb_id = fi.kb_id 
			INNER JOIN genre g ON f.genre_id = g.genre_id
			INNER JOIN regisseure r ON f.reg_id = r.reg_id
			INNER JOIN darsteller d ON f.film_id = d.film_id
			INNER JOIN schauspieler s ON d.darsteller_id = s.darsteller_id
			INNER JOIN audio a ON f.film_id = a.film_id
			INNER JOIN tonspuren t ON a.ts_id = t.ts_id
			INNER JOIN extra e ON f.film_id = e.film_id
			INNER JOIN sonstige so ON e.sons_id = so.sons_id
			INNER JOIN multimedia mm ON f.mm_id = mm.mm_id";

									 if ($t!="")
			{$bed_t="(f.titel like \"%$t%\")"; $query .= " where $bed_t"; $bed++;}
			else {$bed_t="";}

			if ($s!="")
			{$bed_s="(s.name like \"%$s%\")"; $query .= " where $bed_s"; $bed++;}
			else {$bed_s="";}
			
			if ($st!="-ALLE-")
			{$bed_st="(f.studio = \"$st\")";
			if ($bed>0) {$query .= " AND $bed_st";} 
			else {$query .= " where $bed_st"; $bed++;}
			}
			else {$bed_st="";}

			if ($g!="-ALLE-")
			{$bed_g="(g.genre = \"$g\")";
			if ($bed>0) {$query .= " AND $bed_g";} 
			else {$query .= " where $bed_g"; $bed++;}
			}
			else {$bed_g="";}

			if ($f!="-ALLE-")
			{$bed_f="(f.fsk = \"$f\")";
			if ($bed>0) {$query .= " AND $bed_f";} 
			else {$query .= " where $bed_f"; $bed++;}
			}
			else {$bed_f="";}
			
			
			$result = mysql_query($query);

			while($row = mysql_fetch_row($result))
			{
		
			echo '<table width=\"621\" border=\"1\" cellspacing=\"2\" cellpadding=\"0\">
		<tr><td rowspan=\"5\" width=\"100\">'.$row[11].'<br><br>'.$row[12].'</td>
		<td>'.$row[0].'</td>
		<td>'.$row[1].' min</td>
		<td>'.$row[2].'</td>
		<td>'.$row[3].'</td>
		<td>FSK '.$row[4].'</td>
		<td>'.$row[5].'</td>
		</tr>
		<tr>
		<td>'.$row[8].'	  <- Schleife für Schauspieler
		</td>
		<td rowspan=\"4\" colspan=\"5\">'.$row[7].'</td>
		</tr>
		<tr>
		<td>'.$row[6].'</td>
		</tr>
		<tr>
		<td>'.$row[9].'</td>  <- Schleife für Ton
		</tr>
		<tr>
		<td>'.$row[10].'</td>	 <-Schleife für Sonstiges
		</tr>';
		}
		echo '</table>';


Jeder Film hat mehrere Inhalte bei (Schauspieler, Ton und Sonstiges); die ich über zwischen tabellen verbunden habe.

Jetzt wird bei der Ausgabe in meiner PHP Tabelle für jeden Schauspieler oder Tonspur eine ganze Wertausgabe erstellt, obwohl diese nur in der vorhandenen Datenausgabe eingefügt werden soll .

Nun die Frage,
1. wie kann ich eine Schleife z.Bsp in das Tabellenfeld Ton einbauen, das alle Tonspuren in das selbe Tabellenfeld ausgegeben wird.
Ich bin langsam am verzweifeln weil diese Schleifen nicht gehen.


2. wie kann ich ein binary eingebundenen Link für eine Bilddatei ausgeben lassen.

Welche Lösungen könnt Ihr mir geben?

Dank im Voraus

Nightcrawler

Dieser Beitrag wurde von Nightcrawler bearbeitet: 09. September 2008 - 22:44

0

Anzeige



#2 Mitglied ist offline   DCBlaze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 88
  • Beigetreten: 09. Oktober 06
  • Reputation: 0

geschrieben 15. September 2008 - 12:49

Hi,
ich bin leider nicht so der php-profi der ich sein möchte :wink: aber ich würde es evtl. auf diese Art lösen:

1. Nur den Filmnamen abfragen mit "select distinct..."
2. Eine Schleife beginnen mit der Anzahl der Filme
3. Den Film komplett abfragen
5. Ausgabe beginnen bis zu dem Punkt an dem mehrere Einträge vorkommen können
6. An diesem Punkt dann nur die gewünschte Spalte der Datenbank auslesen
7. Per Schleife mit der Anzahl der Einträge die Daten ausgeben
8. Die Schleife wieder verlassen und weitere Daten zum Film ausgeben


Hoffe es ist einigemaßen verständlich (und hoffentlich klappt es ;D )

Nachtrag: Und dann noch zu deinem Binary-Problem... Ich würde aus Geschwindigkeitsgründen keine Bild-, Video- oder Audiodaten in eine Datenbank einbinden. Speichere die Daten lieber in einem Verzeichnis und füge in dier Datenbank nur einen Link zur Datei hinzu.


Gruß
DCBlaze

Dieser Beitrag wurde von DCBlaze bearbeitet: 15. September 2008 - 12:52

0

#3 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 15. September 2008 - 13:12

willst du dir nicht vorher nochmal die DB Struktur überdenken? Bei sovielen JOINS wird das ganze alles andere als performant laufen...
Danach kann man immer noch Daten auslesen, z.b. mit fetch_array
your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

#4 Mitglied ist offline   martin_mt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 515
  • Beigetreten: 19. August 02
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. September 2008 - 13:47

jop, kann ich dira uch nur empfehlen, das datenmodell mal zu überdenken

ich kann mir nicht vorstellen dass du wirklich alle brauchst.
grob geschätzt (und zumindest von deinem select ausgehend) würd ich mal gut die hälfte der tabellen wegwerfen und deren felder in andere tabellen passen


z.b:
regisserue, akteure, schauspieler

die 3 tabellen kannst du in eine zusammenfassen und hängst ein feld dazu Typ, mit den Werten R/A/S


audio, tonspur, extra lässt sich genauso zusammenfassen
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0