Hallo,
Ich habe einen Datenbestand von zB 20000 Datensätzen. Es ist mir aber nur gestattet 10000 Datensätze davon zu verarbeiten. Logischerweise muss ich also jeden 2ten Datensatz verwerfen. Wären es 15000 nur jeden 3ten.
$overstep = 10000 / ($result_count - 10000);
hier sitzt der Denkfehler: Dass dieser Ausdruck falsch sein muss, siehst du schon daran, dass sich eine Division durch 0 ergibt, wenn $result_count = 10000 ist.
Nein, du musst hier einfach die tatsächliche Zahl der Datensätze ($result_count) zur maximal zulässigen ins Verhältnis setzen. Den so erhaltenen Quotienten solltest du noch auf den nächstkleineren ganzzahligen Wert abrunden, da die Modulo-Operation nur für Ganzzahlen definiert ist, und falls du dann 0 herausbekommst (nämlich dann, wenn $result_count<10000 ist), solltest du den Wert wieder auf 1 setzen - sonst fällt nachher der Modulo-Operator wegen "Division by zero" auf die Klappe.
if($rowcount % $overstep != 0) {
// ausgabe
}
else {
// keine Ausgabe
}
Dann klappt's auch mit diesem Ansatz.
Übrigens: Der passendere englische Ausdruck wäre "skip". Es gibt zwar auch "to overstep", das bedeutet aber eher sowas wie eine juristische oder moralische Grenze zu überschreiten, oder sich über eine Beschränkung hinwegzusetzen.
So long,
Martin
--
Wenn die Amerikaner eines Tages von jeder Tierart ein Pärchen nach Cape Canaveral treiben ...
ja, DANN sollte man endlich misstrauisch werden.