Ik heb een pagina waar je al mijn foto's kunt zien.

Nu wil ik aan de hand van de gekozen foto (stel ID=4) meer informatie over achter liggende foto in het archief (ID=3) en de foto na gekozen foto (ID=5).

Hoe kan je dat zo efficiënt mogelijk uit het database krijgen met nog steeds de zelfde pagina.

[size=xsmall]Toevoeging op 26/07/2011 17:39:46:[/size]

Zoeits denk ik?
"SELECT * FROM " .self::$table_name. " WHERE cat_id=".$database->escape_value($cat_id)." and id= ".$database->escape_value($id)." -1 LIMIT 1

Eerst even testen.
Nou ik zou LIMIT 1 weghalen, want dan toon je maar 1 rij.

Als ik het goed begrijp dan wil je dus waarde id 3,4,5 uit de database halen, waarbij 4 gekozen is.

Dan zou ik iets doen als:


$gekozen = '4';
$min_een = $gekozen - '1';
$plus_een = $gekozen + '1';


en dan in je query: WHERE ID = '$min_een','$gekozen','$plus_een'


[/code]
Bas IJzelendoorn op 26/07/2011 17:56:07

en dan in je query: WHERE ID = '$min_een','$gekozen','$plus_een'


WHERE ID IN($min_een, $gekozen, $plus_een)
Ik gebruik nu:


    public static function find_next($cat_id=0, $id=0) {
		global $database;
		
    $result_array = self::find_by_sql("SELECT * FROM " .self::$table_name. " 
	WHERE cat_id=".$database->escape_value($cat_id)." and id= ".$database->escape_value($id)." +1 LIMIT 1");
			return $result_array;
  }
 
    public static function find_prev($cat_id=0, $id=0) {
		global $database;
		
    $result_array = self::find_by_sql("SELECT * FROM " .self::$table_name. " 
	WHERE cat_id=".$database->escape_value($cat_id)." and id= ".$database->escape_value($id)." -1 LIMIT 1");
		return $result_array;
  }


Als ik die aanspreek via deze manier dump hij alle resultaat die ik ook wil hebben.

				<p><?php var_dump($prev); ?></p>
				<p><?php var_dump($next); ?></p>


Maar zo krijg ik een onbekende resultset :S WUT


				<p><?php var_dump($prev->id); ?></p>
				<p><?php var_dump($next->id); ?></p>


[size=xsmall]Toevoeging op 26/07/2011 18:21:26:[/size]

Ook moet dit failsafe zijn voor als er nummers ontbreken omdat er fotos uit het database zijn gehaald.

Vorig: 35
Huidig: 165
Volgende: 188
- SanThe - op 26/07/2011 18:01:23

[quote="Bas IJzelendoorn op 26/07/2011 17:56:07"]
en dan in je query: WHERE ID = '$min_een','$gekozen','$plus_een'


WHERE ID IN($min_een, $gekozen, $plus_een)
[/quote]

hmm vergeten. Bedankt voor de aanvulling! :-)

Maar goed. Niet het antwoord wat ik zocht. Ik heb de oplossing al elders uit weten te vinden

"SELECT * FROM " .self::$table_name. " 
	WHERE cat_id='".$database->escape_value($cat_id)."' and id < '".$database->escape_value($id)."' ORDER BY ID DESC"


toch bedankt

Reageren