Hey.
Ik heb een database en een zoekfunctie. Dat werkt perfect.
Nu heb ik alleen een vraag.
Als je zoekt op bijvoorbeeld:
"Kees"
En je zou als resultaat hetvolgende krijgen :
Voornaam : Jan
Achternaam : Kees
___________________
Voornaam: Kees
Achternaam: Jan

Maar ik wil dat " Kees Jan " bovenaan komt en Jan Kees onderaan.
Ik neem aan dat het word gerangschikt over de auto increase ID tabel, dus als Jan Kees ID 1 heeft en Kees Jan ID 2 dat Kees Jan automatisch onderaan komt te staan..
Nu heb ik er een tabel bij gevoegd die heet : " Relevantie "
Ik maak bij Kees Jan als relevantie 5 en bij Jan Kees als relevantie 1
Nu wil ik dat ze worden ge-orderd op " relevantie "
Of zou dit ook op een andere, makkelijkere manier kunnen ?
Alvast bedankt !
- Yorick Toma
Je kan in je SQL queries ORDER BY gebruiken... officiele syntax:

mysql: http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html
postgresql: http://www.postgresql.org/docs/8.2/static/sql-select.html#SQL-ORDERBY

Bijvoorbeeld: SELECT `voornaam`,`achternaam` FROM `<table>` ORDER BY `achternaam` ASC

Probeer de online documentatie van mysql/postgresql erbij te pakken wanneer je ergens niet uitkomt. Deze docu's zijn verschrikkelijk gedetailleerd!

EDIT: In het alphabet zit de "J" nog altijd voor de "K", ORDER BY `achternaam` dus...
Ja daar dacht ik dus ook al aan, en dan daar een PHP code van te laten genereren en dat in mn php script ergens zetten..
Maar als ik m gewoon onder:
$sql = "select url,leverancier,merk,relevantie FROM link WHERE leverancier LIKE '%$HTTP_POST_VARS[search]%'";
zet dan krijg ik de hele database te zien..
en dat wil ik dan dus weer net niet.
Hoe kan ik dat doen ?
Bedankt voor je reactie,
- Yorick Toma
Om te beginnen zou ik de syntax toch ietswat anders neerzetten:

<?php
$sql = "SELECT `url`,`leverancier`,`merk`,`relevantie` FROM `link` WHERE `leverancier` LIKE '%" . mysql_escape_string($_POST['search']) . "%'";
?>


voor PostgreSQL gebruik je natuurlijk pg_escape_string

Zorg er altijd voor dat je variabelen in een query (ookal heb je deze zelf geset) escaped!


Met deze query zou je, als het goed is, alleen de records moeten terug krijgen die $_POST['search'] bevatten in het `leverancier` veld en dus niet de gehele content van je table...
@Leon: backtics... :' (
Wees ook zuinig met LIKE. Zorg er in ieder geval voor dat je een INDEX op je zoekveld hebt om je query's te optimaliseren.

Reageren