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