Tabelle je nach QUERY_STRING zweifach abfragen

Wet-Blanket

Mitglied
Halli, hallo.

Und noch ein Problem:

Eine Tabelle mit u.a. zwei Spalten namens Year und Ordner.
Die Datenbankabfrage listet Bilder mit dem Namen $id.jpg (id ist die erste Spalte der Tabelle) auf und soll darauf Folgendes beachten:

1. Wenn im QUERY_STRING gar nichts steht (datei.php), soll sie alles in der Datenbank ausgeben (alle Bilder). Das ist quasi die erste Galerieseite, bevor man die Auswahl/Einschränkung beginnt.
2. Wenn im QUERY_STRING das Jahr definiert wird (datei.php?Year=2005), soll sie alle Bilder des Jahres 2005 ausgeben (alle Bilder in den 2005 in der Spalte "Ordner" steht).
3. Wenn im QUERY_STRING das Jahr und der Ordner definiert wird (datei.php?Year=2005&Ordner=Zoo), soll sie alle Bilder des Ordners "Zoo" aus dem Jahre 2005 auflisten (alle Bilder die 2005 in der Spalte "Year" und Zoo in der Spalte "Ordner" stehen haben).

Klar soweit? :D (Fluch der Karibik)

Bisher sieht die Datenbankabfrage noch nach meinen alten Schemata aus, fragt also nur das Jahr ab. ;) Nun soll noch die 1. Abfrage und die 3. implementiert werden.
Schlimmstenfalls begnüge ich mich auch mit einer if-Abfrage vor der Ausgabe, in der quasi aus dem QUERY_STRING ausgelesen wird, ob ein Jahr oder/und ein Ordner angeben ist.

(Die Var $Link gibt nur ein ? aus)

PHP:
<?php

//Read DATA-----------------------------------------------------------
$abfrage = "SELECT * FROM Datenbank WHERE Year = $Year";
$ergebnis = mysql_query($abfrage,$db);
//____________________________________________________________________

$z = 1;

while ($data = mysql_fetch_object($ergebnis)) 
{
	echo "<td width=\"33%\"><a href=\"http://host.de/ordner/ordner/bildview2.php";
	echo $Link;
	echo "dbind=$data->id\"><img src=\"http://host.de/images/data/thumbs/$data->id.jpg\" align=\"left\" height=\"100\" style=\"border-width:1px; border-style:solid; border-color:#FFFFFF;\"></a></td>";
	if ($z > 3) 
	{
		echo "</tr><tr height=\"5\"><td></td></tr><tr>";
		$z = 0;
	};
	$z++;
};

?>

Ich wäre auf eure Hilfe angewiesen.
Vielen Dank im Voraus.

MFG
Martin Tränker
 
Ich glaube das kannst du mit nur SQL nicht machen. Da musst du wohl oder übel auf die If-Anweisung zurückgreifen. Aber das dürfte kein Problem sein. Du musst ja einfach nur den Wert abfragen und dann das SQL Statement ändern. In etwa so:

Code:
if(isnull($year) AND isnull($zoo))
{$sql="Select * FROM tabelle";}
if($year !="" AND isnull($zoo))
{$sql="SELECT * FROM tabelle WHERE year = $year ";}
if($year !="" AND $zoo !="")
{$sql="SELECT * FROM tabelle WHERE year = $year AND zoo =$zoo ";}
Das dürfte es eigentlich sein. Oder so in der Art. Bin noch im Halbschlaf. Natürlich kannst du dann auch anstelle eines IF den ELSE-Zweig verwenden.
MFG
 
Darf ich davon ausgehen, dass "isnull" eine von dir nicht deklarierte Funktion ist!? ;)
Die bräuchte ich wenn noch.
Danke schonmal.
 
Es wird so langsam.

1. und 2. funktioniert schon. Nur bei Year und Ordner zusammen hakt es noch:

PHP:
if(is_null($Year) AND is_null($Ordner))
{
	$abfrage="Select * FROM tabelle";
	$ergebnis = mysql_query($abfrage,$db);
}
if($Year !="" AND is_null($Ordner))
{
	$abfrage="SELECT * FROM tabelle WHERE Year = $Year ";
	$ergebnis = mysql_query($abfrage,$db);
}
if($Year !="" AND $Ordner !="")
{
	$abfrage="SELECT * FROM tabelle WHERE Year = $Year AND Ordner = $Ordner ";
	$ergebnis = mysql_query($abfrage,$db);
}

$z = 1;

while ($data = mysql_fetch_object($ergebnis))

Ganz normale Fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource
Wäre super, wenn wir das letzte kleine Problem auch noch gelöst bekämen. Bis dato, super Arbeit!
Danke
Martin Tränker
 
Die beiden Werte übergibst du ja per Link oder?

Kannst du mal posten wie der link aussehen soll wenn beide Werte übergeben werden soll?

Hast du es einfach so gemacht?
<a href='seite.php4?year=$year&ordner=$ordner'>Bla</a>?
Wenn das der Fall ist dann musst du es umändern in
<a href='seite.php4?year=$year&amp;ordner=$ordner'>Bla</a>. Weil er mekert dir ja dein SQL Statement an. Aber darin kann ich keinen Fehler entdecken. Also prüfe das mal.
MFG
 
Also mit dem &amp; geht zumindest der Fehler weg, aber er ließt beim Ordner immer noch das ganze Jahr aus.
Die einzelnen Seiten mit QUERY_STRING sehen wie folgt aus:

http://host.de/lang/templates/galerie2.php?
http://host.de/lang/templates/galerie2.php?Year=2005
http://host.de/lang/templates/galerie2.php?Year=2005&Ordner=Fotosafari
 
Zuletzt bearbeitet:
Wie meinst du das er liest bei Ordner noch das ganz jahr aus? Kannst du vielleicht mal was von deiner Tabelle posten? Die Spaltenköpfe und ein paar Werte. Aber nur die Spalten die auch wichtig sind. Und dann mal etwas von der Ausgabe.
 
Das hier ist die Tabelle, in der er die einzelnen Links für die Order der einzelnen Jahre macht:

PHP:
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td>
<ul>
  <li><a href="http://host.de/lang/templates/galerie2.php<?php echo "$Link"; ?>BestOf=1">BestOf</a></li>
  <li><a href="http://host.de/lang/templates/galerie2.php<?php echo "$Link"; ?>Year=2005">2005</a></li>
  <?php
  if ($Year == "2005")
  {
    $term == "$Year";
    echo "<ul>";
    //Read DATA-----------------------------------------------------------
    $abfrage = "SELECT * FROM tabelle WHERE Year LIKE \"%$term%\" GROUP BY Ordner";
    $ergebnis = mysql_query($abfrage,$db);
    //____________________________________________________________________
    while ($data_2005 = mysql_fetch_object($ergebnis)) 
    {
      echo "<li><a href=\"http://host.de/lang/templates/galerie2.php";
      echo $Link;
      echo "Year=2005&amp;Ordner=$data_2005->Ordner\">$data_2005->Ordner</a></li>";
    }
    echo "</ul>";
  }
  ?>
  <li><a href="http://host.de/lang/templates/galerie2.php?Year=2004">2004</a></li>
  <?php
  if ($Year == "2004")
  {
    echo "<ul>";
    //Read DATA-----------------------------------------------------------
    $abfrage = "SELECT * FROM tabelle WHERE Year = $Year";
    $ergebnis = mysql_query($abfrage,$db);
    //____________________________________________________________________
    while ($data_2004 = mysql_fetch_object($ergebnis)) 
    {
      echo "<li><a href=\"http://host.de/lang/templates/galerie2.php";
      echo $Link;
      echo "Year=2004&amp;Ordner=$data_2004->Ordner\">$data_2004->Ordner</a></li>";
    }
    echo "</ul>";
  }
  ?>
  <li><a href="http://host.de/lang/templates/galerie2.php?Year=2003">2003</a></li>
</ul>
</td>
</tr>
</table>

Das hier ist die Tabelle, die die Bilder ausgibt, je nach QUERY_STRING Alle, des Jahres Yoder aus dem Ordner X des Jahres Y:

PHP:
<?php
if(is_null($Year) AND is_null($Ordner))
{
  $abfrage="Select * FROM tabelle";
  $ergebnis = mysql_query($abfrage,$db);
}
if($Year !="" AND is_null($Ordner))
{
  $abfrage="SELECT * FROM tabelle WHERE Year = $Year ";
  $ergebnis = mysql_query($abfrage,$db);
}
if($Year !="" AND $Ordner !="")
{
  $abfrage="SELECT * FROM tabelle WHERE Year = $Year AND Ordner = $Ordner ";
  $ergebnis = mysql_query($abfrage,$db);
}
$z = 1;
while ($data = mysql_fetch_object($ergebnis)) 
{
  echo "<td width=\"33%\"><a href=\"http://host.de/lang/templates/bildview2.php";
  echo $Link;
  echo "dbind=$data->id\"><img src=\"http://host.de/images/data/thumbs/$data->id.jpg\" align=\"left\" height=\"100\" style=\"border-width:1px; border-style:solid; border-color:#FFFFFF;\"></a></td>";
  if ($z > 3) 
  {
    echo "</tr><tr height=\"5\"><td></td></tr><tr>";
    $z = 0;
  };
  $z++;
};

?>

Reicht das?
 

Neue Beiträge

Zurück