Bisjen rechnen mit for Schleife

son gohan

Erfahrenes Mitglied
Hi,

ich habe zur Zeit eine for Schleife welche ich mit Variablen laufen lasse.
In denVariablen gebe ich jeweils Zahlen ein welche die for Schleife laufen lassen.
Ausserdem habe ich eine Variable mit dem Namen Seite welche gebraucht wird.

PHP:
 $seite =                   1;
 $von =                   0;
 $bis =                   50;

 for ($i=$von; $i < $bis; $i++) {  
//Datenbank abfragen und diverses
}

Mein Problem ist das ich die Variablen $von und $bis immer von Hand einstellen muss. Die müssen normal beide immer um 50 erweitert werden, $von=0 $bis=50, $von=50 $bis=100, $von=100 $bis=150 usw.
Das ganze mache ich immer von Hand und lade die Seite dann neu damit die for Schleife erneut an den neu angegeben Punkten startet.

Ich würde jetzt gerne ein weitere for Schleife bauen welche die Aufgabe übernimmt und den Variablen $von und $bis jeweils um 50 erweitert.

Weis jemand ob sowas möglich ist?
 
Versuche es einfach mal hiermit:
PHP:
<?php
$y=1;
for($i=1; $i<=3; $i++)
{
	echo "Von ".$y." bis ".(50*$i)."<br>";
	for($x=$y; $x<=50*$i;$x++)
        echo $x."<br>";
    $y=$x;
}
?>
 
Zuletzt bearbeitet:
Wenn du eine Schleife erst von 0 bis 50 laufen lässt und dann von 51 bis 100 etc. und das noch mit verschachtelten Schleifen oder Ähnlichem, was hast du dann gebaut? Eine Endlosschleife :)
Vielleicht solltest du mal genauer erklären, was du vorhast.
 
Wenn du eine Schleife erst von 0 bis 50 laufen lässt und dann von 51 bis 100 etc. und das noch mit verschachtelten Schleifen oder Ähnlichem, was hast du dann gebaut? Eine Endlosschleife :)
Vielleicht solltest du mal genauer erklären, was du vorhast.

Also ich benutze das ganze um eine Sitemap zu erstellen.
In meiner Datenbank sind die Dateinamen alle gespeichert.
Mit der for Schleife hole ich immer 50 Einträge aus der Datenbank und speicher die mit fopen in eine Seite:

PHP:
$von=0;
$bis=50;
for ($i=$von; $i < $bis; $i++) {
        $res = mysql_db_query("DB","SELECT * FROM `$tabelle`");
        $nn = mysql_result($res, $i, "name");
}

Damit nicht immer in jeder Seite die gleichen Einträge stehen muss ich die Variablen $von und $bis jeweils ändern, in meinen Fall immer plus 50.

Ich mache das zur Zeit so das ich immer in den Variablen $von und $bis per Hand 50 mehr eintrage und würde das aber gerne automatisieren.

Das ganze ist irgendwie echt schwer zu erklären für mich.
 
PHP:
$von=0;
$bis=50;
for ($i=$von; $i < $bis; $i++) {
        $res = mysql_db_query("DB","SELECT * FROM `$tabelle`");
        $nn = mysql_result($res, $i, "name");
}

wird dann halt ungefähr zu

PHP:
$von=1;
$bis=50;
$grenze=500;
while ($bis<$grenze) {

  for ($i=$von; $i < $bis; $i++) {
          $res = mysql_db_query("DB","SELECT * FROM `$tabelle`");
          $nn = mysql_result($res, $i, "name");
  }

$von=$von+50;
$bis=$bis+50;
}
 
wird dann halt ungefähr zu

PHP:
$von=1;
$bis=50;
$grenze=500;
while ($bis<$grenze) {

  for ($i=$von; $i < $bis; $i++) {
          $res = mysql_db_query("DB","SELECT * FROM `$tabelle`");
          $nn = mysql_result($res, $i, "name");
  }

$von=$von+50;
$bis=$bis+50;
}

Hi,
deine Lösung ist sehr gut und klappt auch fast genau wie ich es brauche.
Ich habe jetzt nur noch das Problem das beim zweiten Durchlauf der While Schleife, mit der for Schleife mehr als 50 Datensätze aus der Datenbank geholt werden.
Beim dritten Durchlauf holt die for Schleife dann wieder 50 Datensätze mehr raus usw.
Es müssen aber bei jedem Durchlauf nur 50 Datensätze rausgeholt werden.
Ich hab schon viel versucht aber bekomme es so nicht hin.
 
Hallo ihr Lieben,

ich glaube ich habe mein Fehler gefunden, ich hatte eine Variable welche ich nach jeden Schleifendurchlauf nicht gelöscht hatte, deswegen kam es immer ab den nächsten Schleifendurchlauf zu immer mehr Inhalt.

ich hab das Script jetzt so laufen:

PHP:
$von=1; 
$bis=50; 
$grenze=500; 
while ($bis<$grenze) { 

  for ($i=$von; $i < $bis; $i++) { 
          $res = mysql_db_query("DB","SELECT * FROM `$tabelle`"); 
          $nn = mysql_result($res, $i, "name"); 
          $content .= '<li><a title="'.$nn.'" href="'.$nn.'.html">'.$nn.'</a></li>';
 $text = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>'.$nn.'</title>
</head>
<body>
<div id="main">
<ol>
'.$content.'
</ol>
</body>
</html>';
				}
    $handle = fopen($nn.".html", 'w');
    fputs($handle, $text);
    fclose($handle);

  } 
$content = ''; //<- die Variable hatte ich noch vergessen leer zu machen :-)
$von=$von+50; 
$bis=$bis+50; 
}
 
Zurück