Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive