Archief - PHP/MySQL: Previous - Next DB rows

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

orez

Legacy Member
Ok kzit met het volgende.
Kheb database entries, ID's zijn verschillend, door delete's en toevoegingen enz... dusja, eerder 1, 8, 12, 34, ...

Nu zou ik een scriptje moeten vinden waar je previous next kan doen, dat hij gewoon van rij verandert in de database dus... Ik heb al aantal oplossingen bedacht, maar denk da ze dat ni zijn, zoals een mysql_num_rows laten uitvoeren en een SQL statement met limit laten gebeuren, zorgen dat hij niet onder 0 en boven het maximum komt en dan LIMIT 2, 1 dan toont hij 2de rij, next = +1 dan LIMIT 3,1 ...

Ma kdenk ni dak het zo moet oplossen. Tis beetje zoals http://blog.djeezes.be/ dat ik het zoek... tis ook voor een fotoscriptje te maken (geen fotoblog, maar gewoon fotogalerietje met next/previous....) Denk dat dit door dJeez gemaakt is? correct me If i'm wrong :p kga af op de domeinnaam, als je me eventueel de source wilt vrijgeven of andere... kzou je heel dankbaar zijn... of andere personen die de oplossing weten? alé ja dan performanter en beter of mijn oplossing :)

Bij voorbaat dank!

Yngwie

Legacy Member
heb het zelf nog ni gedaan, maar ge kunt mss eens proberen door een select query te doen waarmee je alle ID's ophaalt en deze in een array steekt met een numerieke index. en dan kan je aan je previous en next knoppen naar het vorige of volgende ID in de array gaan

orez

Legacy Member
is idd ook een oplossing, maar kdenk dan da mijn oplossing performanter is? correct me if I'm wrong... maar eerst alles in een array steken om daarna met die array te werken of rechtstreeks via SQL werken... Je pageload is er zoiezo, en denk dat die Query via SQL te verwaarlozen valt dan... hmmz keer zoeken achter da codetje dat de parsetime van je site weergeeft en s testen. Toch bedankt voor een mogelijk andere oplossing :) alles valt te testen hé

Yngwie

Legacy Member
toevallig gisteren nog nodig gehad :p => page generation time

weet niet wat het verschil zal zijn in performantie tussen die twee oplossingen, je kan ze alletwee eens proberen, maar groter dan enkele tienden van een seconde zal dat niet zijn denk ik.

orez

Legacy Member
lol, de vriendelijkheid zelve:p moetek nu geen moeite meer doen om dah morgen te zoeken ;)

Tnx anywayz:D testen zal voor morgen zijn

dJeez

Legacy Member
ru`orez zei:
Denk dat dit door dJeez gemaakt is? correct me If i'm wrong :p kga af op de domeinnaam
:offtopic: Nope, da's helemaal niet door mij gemaakt, ze willen mijn nick inpikken verdorie :p. En 'k heb die al sedert 1996 - toen de WWW boom net begon dus, tevoren was 't Turbo - nah, don't ask. j/k hé voor alle duidelijkheid, maar de site is ècht niet van mij.

En om een antwoord te geven op je vraag : je zou idd best via limit kunnen werken zoals je zegt, het steeds opnieuw ophalen van alle indexes om volgende en vorige te bepalen is iets te zwaar :p.

orez

Legacy Member
|M°B|Morbuus zei:
kan je je queries eens posten als ze klaar zijn?

as you asked: http://cpanel.hiphop-moves.com/next-prev.php

code:
PHP:
<?php
	$link = mysql_connect($db_host, $db_user, $db_pass);
	mysql_select_db('jsdp', $link);
	$query = "SELECT loginid, username FROM tbllogin";
	$result = mysql_query($query);
	$rows = mysql_num_rows($result) - 1;
	
	if(!isset($_GET['id'])) { 
		$id = $rows;
	} else {
		$id = $_GET['id'];
	}
	
	if($_GET['id'] == $rows) {
		$next = 0;
	} else {
		$next = $_GET['id'] + 1;
	}
	
	if($_GET['id'] == 0) {
		$prev = $rows;
	} else {
		$prev = $_GET['id'] - 1;
	}
	
	$display = "SELECT username FROM tbllogin  ORDER BY loginid LIMIT " . $id . ",1";
	$display_result = mysql_query($display);
	$obj = mysql_fetch_object($display_result);
?>
<a href="next-prev.php?id=<?php echo $prev ?>">previous</a>
<a href="next-prev.php?id=<?php echo $next ?>">next</a>
<br />
<?php echo $obj->username; ?>

tis enorm simpel enzo gedaan... morja is om te testen enzo... dusja hoeft het niet meer te zijn... Ge hebt het werkende idee hé... mor denk da er nog altijd een andere oplossing moet zijn :/
en idd da vullen in ne array elke male, zit serieus verschil in parsetime in :D

orez

Legacy Member
dJeez zei:
:offtopic: Nope, da's helemaal niet door mij gemaakt, ze willen mijn nick inpikken verdorie :p. En 'k heb die al sedert 1996 - toen de WWW boom net begon dus, tevoren was 't Turbo - nah, don't ask. j/k hé voor alle duidelijkheid, maar de site is ècht niet van mij.

Kzou ze aanklagen :p j/k, was gewoon wah verwarrend enzo... dusja, kon maar vragen hé :D

WHiSPy

Legacy Member
Bovenste query:

PHP:
$query = "SELECT COUNT(loginid) FROM tbllogin";

Leer enkel opvragen wat ge echt nodig hebt. :)

orez

Legacy Member
@ whispy tnx, denk da dees ook wel performanter zal zijn, rap aanpassen :p

*edit aangepast:

PHP:
<?php
	$link = mysql_connect($db_host, $db_user, $db_pass);
	mysql_select_db('jsdp', $link);
	$query = "SELECT COUNT(loginid) AS rows FROM tbllogin";
	$result = mysql_query($query);
	$rows = mysql_fetch_object($result);
	$rows = $rows->rows - 1;

	if(!isset($_GET['id'])) { 
		$id = $rows;
	} else {
		$id = $_GET['id'];
	}
	
	if($_GET['id'] == $rows) {
		$next = 0;
	} else {
		$next = $_GET['id'] + 1;
	}
	
	if($_GET['id'] == 0) {
		$prev = $rows;
	} else {
		$prev = $_GET['id'] - 1;
	}
	
	$display = "SELECT username FROM tbllogin  ORDER BY loginid LIMIT " . $id . ",1";
	$display_result = mysql_query($display);
	$obj = mysql_fetch_object($display_result);
?>
<a href="next-prev.php?id=<?php echo $prev ?>">previous</a>
<a href="next-prev.php?id=<?php echo $next ?>">next</a>
<br />
<?php echo $obj->username; ?>

Cyberkef

Legacy Member
ru`orez zei:
@ whispy tnx, denk da dees ook wel performanter zal zijn, rap aanpassen :p
PHP:
<?php
	$query = "SELECT COUNT(loginid) AS rows FROM tbllogin";
	$result = mysql_query($query);
	$rows = mysql_fetch_object($result);
	$rows = $rows->rows - 1;
?>
PHP:
<?php
	$query = mysql_query("SELECT COUNT(loginid) FROM tbllogin");
	$rows = mysql_result($query, 0) - 1;
?>
Nog paar millisec preformanter? :unsure:
(zonder fetch_object en dan terug één waarde eruithalen)

En heb nooit het nut ingezien om voor zo'n simpele queries daar allemaal aparte variabelen voor te gebruiken eigenlijk :)

Nuja, feel free to do whatever you want to do ^^
(dit is gewoon een oh-wat-verveel-ik-mij-toch-zo postje :p)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan