Zeiger in Arrays

soraya

Mitglied
Hi an AllE!

Ich bin mir ziemlich sicher das ihr mir helfen könnt.
folgendes Problem:
Ich möchte mir eine bestimmte Anzahl an datensätzen aus einer Mysql-Db ausgeben lassen ( ohne Limit in der Select )
Ich dachte mir ich könnte vielleicht in einen array einen zeiger setzen z.b. bei
der x.zeile, und wenn dann die Anzahl der Zeilen im Array größer als x sind, würde ich über einen button die nächsten x Datensätze anzeigen lassen oder ich könnte die ersten x zeilen im Array löschen oder
oder ...
Danke für eure Vorschläge :rolleyes:
 
mm ... also was du machen willst geht natürlich, ist aber eben bissel blöd, da du dann werte in einem arry hast, die sowieso nicht gebraucht werden *g*

naja - mein vorschlag :)
PHP:
if(!isset($limit))$limit=0;        // Auf welcher Seite du bist
$page=20;   // Anzahl der Beiträge pro Seite

$limit1=$limit+$page;
for($i=0;$i<count($ARRAY);$i++)
{
   if($i>=$limit && $i<$limit1)print "";
}

$next=$limit+$page;
print "<a href=\"$PHP_SELF?limit=$next\">weiter</a>";

so in etwa würd ich es machen .. probier es mal aus, hab es nicht vorher getestet :)
Rob
 
Was ist denn sinn der ganzen Aktion?

1. Wenn viele datensätze in der DB sind dauert der eine query relativ lange um alles rauszuholen.
2. Wenn der user das limit verändert und zur nächsten seite will wird wieder ein query and die DB gesendet. Von daher ist es performence mässig ziemlich ungünstig oder?

Nachtrag: Ok in der version die hier gepostet wurde werden keine weiteren Querys gesendet. Trotzdem die Frage: Wozu das ganze?


So Long
TheVirus
 
Zuletzt bearbeitet:
Naja es ist so;

Die Abfrage ist so gestaltet das die Daten nur für einen Bestimmten Zeitraum also von -bis angezeigt werden. Den zeitraum kann der User frei wählen.
normalerweise sind nicht viele Datensätze enthalten, ich wollte aber maximal 10 pro Seite darstellen weil ich finde das es damit übersichtlicher wird,in den Datensätzen sind Texte enthalten.Wenn es der Fall sein sollte das dochmal ein paar mehr da sind dann find ich das ist ne gute Lösung,
Ich mein wenn du ne bessere hast her damit
 
Also ich hätte es mit nem MySQL query limitiert. Ich muss das Zeug eh auslesen, da kann ich dann maximal 10 wähleb pro seite. Aber das willst du ja, aus was für gründen auch immer nicht.

So Long
TheVirus
 
an die limit möglichkeit habe ich auch gedacht, aber dann müßt ich ja alle möglichen Fälle mit irgendwelchen if's abfangen.
Also wenn zum Beispiel für einen zeitraum von 3 Tagen dochmal plötzlich 100 Einträge in der Db stehen müßte ich für jeden 10er
Anzeige ne neue Abfrage schreiben also
1. Abfrage gib mir alles von Zeile 1-10
2 Abfrage gib mir alles von Zeile 11-20
oder so ähnlich
ach ich weiß auch nicht, vielleicht kennst du ja ein code dafür
 
Nein, du schreibst den query einmal und packst da variablen rein.
So in etwa:
PHP:
// Erstmal checken ob sie gesetzt sind.. wenn nicht dann default werde einsetzten
if (!isset($min) || !isset($max))
{
  $min = 1;
  $max = 10;
}
$query ="SELECT * FROM tabelle LIMIT ".$min.",".$max;
$result=mysql_query ($query);

usw....

Wenn du nen anderen breich willst musst du nur $min und $max verändern.

So Long
TheVirus

P.S.: Code 100% untested... Müsste aber laufen.
 
Zurück