phpbar.de logo

Mailinglisten-Archive

[php] Ermittlung der Seite eines Eintrags (mySQL)

[php] Ermittlung der Seite eines Eintrags (mySQL)

Dennis Dohle php at 72design.de
Mon Jul 28 13:39:19 CEST 2008


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