nächste oder voherige id einer mysql abfrage

Bash, Shell, PHP, Python, Perl, CGI
wookie_23
Posts: 17
Joined: 2003-07-18 14:52

nächste oder voherige id einer mysql abfrage

Post by wookie_23 »

Hallo, ich habe ein script-snippet welches mit eine voherige id einer mysqlabfrage liefert:

Code: Select all

function voherige_id($id,$name){
    $query = mysql_query("SELECT id FROM produkte WHERE name = '$name");
    while($row = mysql_fetch_array($query)){
		if($row[id] == $id){
			$gefunden = 1;
		}
		if(!$gefunden){
			$voherige_id = $row[id];
		}
    }
    return $voherige_id;
}
jetzt meine frage dazu:
geht das auch in einer einfacheren art und weise? evtl mit einer etwas komplizierteren mysqlabfrage oder so? Ich erhoffe mir dadurch ein wenig mehr performance. das die ausführung dieser Funktion sehr oft im script vorkommt.

Vielen Dank für eure Infos ;)

Grüße aus dem Schwarzwlad, wookie :)
suntzu
Posts: 669
Joined: 2002-12-20 19:47
Location: Mönchengladbach

Re: nächste oder voherige id einer mysql abfrage

Post by suntzu »

Hi,

ich weiß nicht ganz, was genau du jetzt meinst, aber wenn du die id der vorhergehenden INSERT-Operation suchst:
http://de.php.net/manual/de/function.my ... ert-id.php

HTH,
Dominik
[nix]pepe
Userprojekt
Userprojekt
Posts: 244
Joined: 2003-04-08 19:36

Re: nächste oder voherige id einer mysql abfrage

Post by [nix]pepe »

wie wär's damit:

Code: Select all

$query = mysql_query("SELECT id FROM produkte WHERE name = '$name' AND id < $id ORDER BY id DESC LIMIT 0,1");
$out_sql_id = mysql_fetch_array($query);
Solltes tun :)
wookie_23
Posts: 17
Joined: 2003-07-18 14:52

DAAAANKE aber

Post by wookie_23 »

die voherige id muss nicht umbedingt kleiner sein.
Es gibt aber noch eine spalte "sortierung" nach dem alle einträge in der Tabelle sortiert werden.

das wäre ja geil:

:?

Code: Select all

SELECT NEXT(id) FROM produkte WHERE id = $id ORDER BY sortierung LIMIT 1;
oder
SELECT PREV(id) FROM produkte WHERE id = $id ORDER BY sortierung  LIMIT 1;
aber sowas gibts ja leider nicht, vielleicht langts aber das problem damit zu verdeutlichen.