Mailinglisten-Archive |
Das mit der COUNT-Funktion probiere ich mal aus, könnte bei den meisten
Modulen reichen. Danke dafür!
Wie machen das andere CMS-Systeme denn? Haben diese die Funktion gar nicht?
Finde das relativ wichtig, dass ein User den eingefügten Datensatz sofort in
der Liste sieht.
-----Ursprüngliche Nachricht-----
Von: php-bounces at phpbar.de [mailto:php-bounces at phpbar.de] Im Auftrag von
Yannik Hampe
Gesendet: Montag, 28. Juli 2008 12:54
An: deutschsprachige PHP-Mailingliste
Betreff: Re: [php] Ermittlung der Seite eines Eintrags (mySQL)
Dennis Dohle wrote:
> Hi Liste,
>
> Ich trage beispielsweise einen Kunden in der Datenbanktabelle "kunden"
ein.
> Danach bekomme ich die ID der Zeile mit Hilfe von "mysql_insert_id()" und
> übergebe diese per Request an die nächste Seite, auf der die Liste aller
> Kunden dargestellt wird. Da die Liste nur 20 Kunden darstellt, möchte ich
> jetzt automatisch zur Seite springen, die den Kunden enthält.
>
> Derzeit mache ich das über:
>
> $counter = 0;
> $query = "SELECT id FROM kunden ORDER BY firma ASC;
> $result = mysql_query($query);
> while ($row = mysql_fetch_array($result))
> {
> $counter++;
> if ($row["id"] == $_REQUEST["id"])
> {
> break;
> }
> }
>
> $akt_page = ceil($counter/20);
>
>
> Hat hier vielleicht jemand einen eleganteren Lösungsansatz?
Das ist vermutlich wirklich nicht gerade der Renner. Meines Wissen
gibt's auch keine Funktion in mysql die die aktuelle Zeilennnummer
einesr Abfarge liefert.
Mit Hilfe von COUNT sollte allerdings etwas möglich sein:
SELECT COUNT(*) FROM kunden WHERE firma > (SELECT firma FROM kunden
WHERE id=?)
So solltest du herausfinden, der wievielte Datensatz ein Kunde ist und
kannst die somit die Seite errechnen.
Wenn es allerdings Firmen gibt, die über mehrere Seiten gehen, dass ist
das Ergebnis nicht mehr aussagekräftig. Dann müsstest du noch eine
zweite Sortierspalte in deinen query einbauen und musst noche einen Weg
finden, diese im where des counts einzubauen. Oder du fängst nochmal mit
deiner Methode an wieder in die Gegenrichtung zu suchen, bis du den
Kunde genau hast. Ob das dann schneller ist, musst du mal ausprobieren ^^.
> Bei großen Datenbanken mit vielleicht 500.000 Zeilen ist das nicht
wirklich
> optimal, oder?
>
> Viele Grüße,
> Dennis
Yannik
--
** Allgemeine deutschsprachige PHP-Liste: php at phpbar.de **
Informationen: http://www.phpbar.de
http://lists.phpbar.de/mailman/listinfo/php
php::bar PHP Wiki - Listenarchive