Nächste ID, ohne Datenreihen zu beeinflussen

ThoRr

Mitglied
Hi,

ich hole aus einer Tabelle mittels SELECT und einem while()-Konstrukt aus mysql_fetch_array() alle bzw. mehrere Datensätze. Nun brauche ich die ID des letzten und des nächstfolgenden Datensatzes. Die ID des letzten zu erhalten ist nicht weiter schwierig, da ich in der while()-Schleife die ID für den nächsten Datensatz in einer Variable speichern kann. Wie finde ich allerdings die ID des nächsten Datensatzes heraus, ohne die Stelle zu beeinflussen, an der sich mysql_fetch_arrray in der Folge an Datenreihen gerade befindet?

LG
 
In dem du die nächste Zeile abfragst?


Es wäre gut, wenn du etwas mehr Hintergrund herrauslassen würdest, dann könnte man dir eher helfen. Mir scheint, du möchtest nicht einfach die Nächste Zeile auslesen..

Du könntest auch einfach erst alles speichern und hinterher verarbeiten.
 
hmm ich nehme an es ist nicht einfach aufsteigend und ohne Lücken ;) wäre zu einfach

PHP:
SELECT
ID 
FROM test 
WHERE ID > $alteid 
ORDER BY ID ASC
LIMIT 1
 
Stimmt, sorry. Ich benötige die ID des nächsten Datensatzes schon in der Wiederholung des jetzigen. Der Code sieht folgendermaßen aus:

PHP:
$sql = "SELECT `id`, `name`
	FROM `categories`
	ORDER BY `order` ASC";
$result = $mysql->query($sql, $mysql_error);
echo $mysql_error;

while ($row = $mysql->fetchrow($result))
{
	$sql = "SELECT COUNT(*) AS `num_articles`
		FROM `articles`
		WHERE `catid` = " . $row['id'];
	$result_temp = $mysql->query($sql);
	$row_temp = $mysql->fetchrow($result_temp);
	
	$design->assign_block_vars('table-cat-row', array(
		'ID' => $row['id'],
		'LAST_ID' => $cat_last_id,
		'NEXT_ID' => null, // hier ist das Problem
		'NAME' => $row['name'],
		'NUM_ARTICLES' => $row_temp['num_articles'])
	);
	
	$cat_last_id = $row['id'];
}

$design->compile('design/categories_overview.html');

Die Ausgabe bzw. die Zuweisung der Blockvariablen für das Template erst später erfolgen zu lassen, hatte ich auch schon überlegt, allerdings wollte ich das erst als letzt Möglichkeit sehen, da das ein Gewusel im Code gibt.
 
Sorry, ich hatte vandamps Antwort völlig übersehen.

hmm ich nehme an es ist nicht einfach aufsteigend und ohne Lücken wäre zu einfach
Richtig :D Auf die Idee mit dem "größer als" bin ich überhaupt nicht gekommen, vielen Dank!

Ich habe aber gerade festgestellt, dass ich die Ausgabe im Prinzip sowieso schon verzögere, da ich mit Templates arbeite und die Ausgabe bzw. die Kompilierung erst ganz am Schluss erfolgt. Das Problem hab ich nun so gelöst, dass ich eine Funktion hinzugefügt habe, die es ermöglicht, schon zugewiesene Blockwiederholungen (Tabellenzeilen) nachträglich abzuändern. Damit funktioniert's perfekt.
 
Zurück