select anweisung dynamisch für mysql erstellen

berlinkw

Mitglied
Guten morgen,
Ich versuche ein SELECT…. Dynamisch zu erstellen.
Dabei geht es um den letzten Teil Das LIMIT x,x.
Als Ergebnis sollte das rauskommen.

1. SELECT id, name FROM floescher LIMIT 0,4
2. SELECT id, name FROM floescher LIMIT 4,3
3. SELECT id, name FROM floescher LIMIT 7,2

Hier nun der Code dazu den ich bis jetzt habe.

$anzahl2 = "SELECT bilder,count(*) AS anzahl FROM floescher WHERE bilder <> '' GROUP BY bilder";
$erg2 = mysql_query($anzahl2);
while(list($bilder,$anzahl) = mysql_fetch_row($erg2))
{
$zahl = $anzahl+1;
echo '<div align="center">';
echo '<table border="1">';
echo '<tr>';
echo '<td rowspan="'.$zahl.'"><img src="'.$bilder.'" alt="" border="0"></td>';
echo '<td>Name</td>';
echo '</tr>';
$x = $anzahl;
while (0 < $x)
{
if(isset($limit1))
{
$limit1 = $limit2;
}
else
{
$limit1 = 0;
}
$limit2 = $anzahl;
$abfrage = 'SELECT id, name FROM floescher LIMIT '.$limit1.','.$limit2.'';
echo $abfrage;
$erg = mysql_query($abfrage);
while(list($id,$name) = mysql_fetch_row($erg))
{
echo '<tr><td>'.$name.'-'.$id.'</td></tr>';
$x--;
}
}
echo '</table>';
echo '</div>';
}

Leider bekomme ich das mit der Schleife nicht hin.
Zur Zeit sieht das Ergebnis so aus

1. SELECT id, name FROM floescher LIMIT 0,4
2. SELECT id, name FROM floescher LIMIT 4,3
3. SELECT id, name FROM floescher LIMIT 3,2

ich wollte das so machen
Prüfen ob LIMIT1 vorhanden. Wenn nicht dann LIMIT1 = 0
Danach soll LIMIT1 Den Wert von Anzahl annehmen.

UND DANN ( das ist bei mir noch falsch)
Soll LIMIT1 LIMIT2 dazu Addieren.
Hoffe man konnte verstehen was ich meinte.
Gruß berlinkw
 
Also, jetzt nochmal in Farbe und mit Einrückungen *gg* dein Code:

PHP:
$anzahl2 = "SELECT bilder,count(*) AS anzahl FROM floescher WHERE bilder <> '' GROUP BY bilder";
$erg2 = mysql_query($anzahl2);
while(list($bilder,$anzahl) = mysql_fetch_row($erg2)) {
	$zahl = $anzahl+1;
	echo '<div align="center">';
	echo '<table border="1">';
	echo '<tr>';
	echo '<td rowspan="'.$zahl.'"><img src="'.$bilder.'" alt="" border="0"></td>';
	echo '<td>Name</td>';
	echo '</tr>';
	$x = $anzahl;
	while (0 < $x) {
		// Check ob LIMIT1 gesetzt
		if(isset($limit1)) {
			$limit1 = $limit2;
		} else { // Wenn nicht, LIMIT1 = 0
			$limit1 = 0;
		}
		// Hier soll LIMIT1 den Wert von ANZAHL annehmen? Schreibfehler oder oder bin ich an der falschen Stelle?
		$limit2 = $anzahl;
		// und jetzt soll LIMIT1 LIMIT2 addieren?
		// warum dann net einfach so:
		$limit1 += $limit2;
		// Oder hab ich jetz nen Denkfehler drin?
		$abfrage = 'SELECT id, name FROM floescher LIMIT '.$limit1.','.$limit2.'';
		echo $abfrage;
		$erg = mysql_query($abfrage);
		while(list($id,$name) = mysql_fetch_row($erg)) {
			echo '<tr><td>'.$name.'-'.$id.'</td></tr>';
			$x--;
		}
	}
	echo '</table>';
	echo '</div>';
}

Ähm... mein Lösungsvorschlag steht im Code ^^

Und beim nächsten mal bitte den Code in die PHP-Tags setzen, er is einfach besser zu lesen. ;)
 
hallo
erst mal danke für die schnelle Antwort.
Was die Formatierungen angeht so gelobe ich besserung ;-)

Leider stimmt das Ergebniss nicht. So sieht das jetzt aus.
1. SELECT id, name FROM floescher LIMIT 4,4
2. SELECT id, name FROM floescher LIMIT 4,4
3. SELECT id, name FROM floescher LIMIT 5,2

Richtig währe

1. SELECT id, name FROM floescher LIMIT 0,4
2. SELECT id, name FROM floescher LIMIT 4,3
3. SELECT id, name FROM floescher LIMIT 7,2

Hier stimmen auch die Werte für Limit2

PHP:
$abfrage = 'SELECT id, name FROM floescher LIMIT '.$limit1.','.$limit2.'';

Werde mal kurz sagen was dabei rauskommen soll.
Im 1. SELECT werden die Datensätze 1-4 abgefragt.
im 2. SELECT soll dann Datensatz 4 - 7 abgefragt werden
im 3. SELECT dann 7 - 9.

Die Anzahl ist verschieden. Die ergibt sich aus der gruppierung der Datensätze.

gruß berlinkw
 
Okay, damit ich das jetzt richtig verstanden habe, bin auch nichmehr ganz frisch nach der "Nachtschicht"... du willst erst 4 dann 3 dann 2 Datensätze anzeigen lassen, korrekt?
 
So nun geht es.
PHP:
      if(isset($limit1))
      {
      	$limit1 += $limit2;
      }
      else
      {
      	$limit1 = 0;
      }
      $limit2 = $anzahl;

Super bin total happy

gruß berlinkw
 
Zurück