• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

mehrere querys?

crofthunter

New member
Hallöchen,

hab mal wieder n kleines prob:

ich möchte eine spezielle Auflistung meiner SQL Daten erreichen.
(den Table dazu siehe Anlage)

Und zwar möchte ich die Aulistung so erreichen, daß die Filmzeile

als Überschrift auftaucht und dann zum Dilm die zugehörigen Daten darunter aufgelistet werden.

etwa so:

Film1

datum1 - zeit1 - zeit2 - zeit3
datum2 ...

film2

datum1 - zeit1 - zeit2 - zeit 3
datum2 ...

usw.

Ich habe Probleme den Film und zugehörige Daten in der Auflistung zu unterscheiden, (da sich der Filmname pro datum wiederholt). Der Film sollte nur 1x dargestellt werden, dann die Daten.

Hab schon mal die Codezeilen angefangen:

vielleicht weiß ja jemand das ergänzende Stück:

<?php
// includierte Dateien

include("spielplan_config.inc.php");

// Datumsoperand (immer von Donnerstag bis Mittwoch der aktuellen Filmwoche rechnen)

$weekday = date("w");

$rest = 0;
if($weekday > 4){$rest = $weekday - 4;}
elseif($weekday < 4){$rest = $weekday + 3;}

$query = "SELECT
DISTINCT film
from filme
WHERE datum >= DATE_SUB(CURRENT_DATE,INTERVAL $rest DAY) AND
datum <= DATE_ADD(DATE_SUB(CURRENT_DATE,INTERVAL $rest DAY),INTERVAL 6 DAY)
ORDER BY datum";



$res=mysql_query($query, $conn);


// Auflistung (DISTINCT film)


while($data=mysql_fetch_array($res))
{
echo $data["film"]."<p>";
}


// db zu

mysql_close($conn);
?>
 

Anhänge

  • table.gif
    table.gif
    30 KB · Aufrufe: 14
also zunächst einmal zum DB-Entwurf..... äußerst flach...

also wenn Du mehrere Tabellen hättest, dann ist das Programmieren zwar komplizierter, aber die Abfragen werden einfacher und das ganze logischer....

Tabelle Filme:
filmName
filmFSK
filmID

Tabelle Aufführung:
aufDatum
aufUhrzeit
aufFilmID
aufID

alle Aufführungen eines Filmes:
Code:
select * from Aufführung where aufFilmID = $filmID;

alle Filme:
Code:
select * from Filme;

alle Spiel-Tage eines Filmes
Code:
select aufDatum from Aufführung where aufFilmID = $filmID group by aufDatum;


Alternativ kannst Du bei Deinen Tabellen ein
Code:
select * from film order by film, datum;
machen und dann per PHP feststellen, ob ein Filmwechsel stattfindet und entsprechend reagieren...
Alle anderen Lösungen resultieren in massig DB Zugriffen....
 
hmmmm,

hab den table so einfach gestaltet, weil die daten, höchstwahrscheinlich über eine csv datei eingelesen werden.
Ich werd aber wohl nicht um mehrere tables drumherumkommen...
:(
 
Hallo!

Wenn du die Tabelle so lassen willst wie sie ist dann machst das ganze so(versuchst das ganze mal so ;)):

PHP:
<?php 
// includierte Dateien 
include("spielplan_config.inc.php"); 

// Datumsoperand (immer von Donnerstag bis Mittwoch der aktuellen Filmwoche rechnen) 
$weekday = date("w"); 
$rest = 0; 
if($weekday > 4){$rest = $weekday - 4;} 
elseif($weekday < 4){$rest = $weekday + 3;} 

$query = "SELECT
                 DISTINCT film
                 from filme
                 WHERE datum >= DATE_SUB(CURRENT_DATE,INTERVAL $rest DAY) AND
                 datum <= DATE_ADD(DATE_SUB(CURRENT_DATE,INTERVAL $rest DAY),INTERVAL 6 DAY)
                 ORDER BY film,datum"; 

$res=mysql_query($query, $conn); 
$currentfilm = "";
// Auflistung (DISTINCT film) 

while($data=mysql_fetch_array($res)) 
{ 
    if($currentfilm!=$data["film"])
    {
         echo " <br><b>",$data["film"],"</b><br> <br>";
         $currentfilm = $data["film"];
    }
     echo $data["datum"]," - ",$data["v_eins"]," - ",$data["v_zwei"]," - ",$data["v_drei"],"<br>"; 
} 


// db zu 

mysql_close($conn); 
?>
 
Zuletzt bearbeitet:
Zurück
Oben