Bij het zoeken naaar afbeeldingen krijg je bij mijn zoekmachine als resultaat thumnails met trefwoorden en categorie te zien. Deze worden gesorteerd op volgorde van uploaden. Dus hetgeen wat als laatste upgeload is staat onderaan en de oudste bovenaan. Ik zou dit graag willen omdraaien. Hoe kan ik dit mogelijk maken:


	$res = mysql_query($sql);
	
	if(!$res)
	{
		trigger_error(mysql_error().'<br />In query: '.$sql);
	}
	else
	{
		$geenhoofdlettervoorcategorie = strtolower($zoekopcategorie);
		$geenhoofdlettervoortrefwoord = strtolower($trefwoordofomschrijving);
		if (mysql_num_rows($res) >= 1)
		{
/*onderstaande geeft foutmelding indien de gebruiker gegevens opvraagt die niet bestaan. Strolower zorgt ervoor dat de input gegevens van de gebruiker in het foutmeldings bericht met kleine letter is ipv met hoofdletter zoals in input staat*/		
			echo "<br><a href=\"registered_user_area_zoeken.php\" title=\"zoek opnieuw\">zoek opnieuw</a></br>";
			echo "<br>Op de categorie <b>$geenhoofdlettervoorcategorie</b> met de 	
			zoekterm(en) <b>$zoeken</b> in <b>$geenhoofdlettervoortrefwoord</b> zijn de volgende afbeeldingen gevonden</br>";

			while ($row = mysql_fetch_array($res))
			{
//weergave van zoekresultaat
				echo '<br><img src="'.$row['thumbnail'].'" alt="thumbnail" /></br>';
				echo '<P><a href="'.$row['afbeelding'].'" alt="Zoom in" class="thickbox" rel="zoekopdracht"><img src="webpage_images/vergrootglas.gif" border=0/></a></P>';
				echo '<b>Categorie:</b>';
				echo '<P>'.$row['categorie'].'</P>';
				echo '<b>Trefwoord(en):</b>';
				echo '<P>'.$row['trefwoord'].'</P>';
			}
		}
ORDER BY datum DESC

zo moeilijk is SQL nu ook weer niet... Jammer dat je nu net het belangrijkste stukje code weglaat, de PHP-code doet namelijk helemaal niet ter zake!
Oh sorry dacht dat ik het wellicht bij php moest doen...maaruh bij mij heb je geen datum...dus ik heb ik het sorteerd op id nummer die overal gemeenschappelijk zijn.

Overigens had ik nog een kleine ik wil dat elke resultaat een nummer krijg dus als je 10 heb dat bij resultaat 1 het getal 1 getoond wordt en resultaat 2 het getal 2. Ik denk dat ik dat met echo php kan doen en dat een php code dan elke herhaling automatisch +1 zou moeten doen. Wellicht iemand suggestie?


			$sql = "
			SELECT
				afblocatie.thumbnail,
				afblocatie.afbeelding,
				afbcategorie.categorie,
				afbomschrijving.omschrijving,
				afbtrefwoord.trefwoord
			FROM
				afblocatie,
				afbcategorie,
				afbomschrijving,
				afbtrefwoord
			WHERE
				afblocatie.id = afbtrefwoord.id
			AND
				afblocatie.id = afbcategorie.id
			AND
				afblocatie.id = afbomschrijving.id
			AND
				afblocatie.id = afbtrefwoord.id
			AND
				(
						".$like."
					OR
						".$like2."
				)
			";
		}
maaruh bij mij heb je geen datum...dus ik heb ik het sorteerd op id
Op id kun je niet sorteren, een id is niks en zegt niks over de leeftijd. Een id geeft een uniek record aan, wat er in dit record staat, heeft daar niks mee te maken.

Kortom, er mist een kolom datumtijd in jouw tabel. Ga deze erbij zetten en vul deze automatisch met de SQL-functie NOW() om daar de huidige datumtijd in te zetten bij het aanmaken van het record. Dan kun je daar later op gaan sorteren.

Een getalletje bij de weergave kun je inderdaad het beste doen in PHP, daar kun je eenvoudig een tellertje mee laten lopen.
Id zegt toch juist wel iets over de leeftijd. De afbeelding die als eerste upgeload is is de eerste afbeelding. Nauturlijk met datum heb je het voordeel dat je dan op bijv datum de gegevens zou kunnen sorteren e.d. In mijn huidig opzet heb ik geen datum, wat ik heel erg dom vergeten ben. Maar ik zal idd die datum nog even toevoegen.

Heb je wellicht een verwijzingkje of voorbeelde van zo'n eenvoudig tellertje?

En voordat ik dat ook weer weergeef weet je toevallig hoe ik ook ervoor kan zorgen dat als er bijv meer dan 10 afbeelding zijn dat jeop volgende pagina ofzo kan klikken .e.d.??? Dus ik wil bijv max 10 resultaten per pagina tonen.
Id zegt toch juist wel iets over de leeftijd.
Nee, het zegt 10x niks over de leeftijd. Een id is niks, betekent niks en zal ook nooit wat gaan worden of betekenen. Een id gebruik je om een uniek record te herkennen. That's it.

pagination, zoek daar maar eens op.
probeer het in Mysql toe te voegen moet ik die NOW() onder het kopje Default2 plaatsen?

bedankt voor tips...
Ik weet het niet zeker, maar volgens mij kun je in MySQL geen NOW() als default waarde opgeven. Het is mij nog niet gelukt. In dat geval zul je de kolomnaam en de value NOW() in de INSERT-query moeten opnemen.

In PostgreSQL werkt dit uiteraard heel simpel, maar dat had je ook wel kunnen raden. ;-)

Reageren