Ik heb een stamboom database opgezet met php en mysql. Daarbij maak ik gebruik van het alfabet en wel zodanig dat als je bijv. op de a klikt, je alle namen beginnend met een a in beeld krijgt.
Alleen om dit te laten werken moet ik bij iedere naam die ik invoer in de database, in een aparte tabel de beginletter invoeren. Vervolgens laat ik de a dus gewoon alle namen waarbij de beginletter op a is gezet, oproepen. Snappen jullie hem nog???
Als ik dus perongeluk de beginletter op z neerzet, dan komt hij dus ook bij z in het lijstje te staan, terwijl de naam zelf met een a begint.
Het moet mogelijk zijn om het script gewoon zelf de eerste letter te laten zoeken, zonder dat ik dit zelf in een aparte tabel moet invoeren.
Ik weet dat dit met substr moet lukken, maar krijg het niet voor elkaar.
Het probleem is dat ik namelijk geen naam selecteer en het ding dan niet meer weet van welke naam hij de eerste letter moet zoeken.
Het is de bedoeling dat als ik op de a klik, dat de substr dan alle namen in de database doorloopt, degene eruit haalt die met een a beginnen en deze vervolgens print.
Kortom: "SELECT * FROM <tabel> WHERE <naam> LIKE '<beginletter>%'"
Let erop dat je het procentteken meeneemt, dat is een wildcard en zorgt ervoor dat een onbepaald aantal karakters achter de beginletter mag komen. E.e.a. staat ook op de pagina uitgelegd die Tamara gaf :)
Probeer volgende keer ajb een beetje meer beschrijvende topictitel te verzinnen :) Alvast bedankt.
<a href="stamboom.php?letter=a
<?php
$query = "SELECT * FROM `individueel` WHERE `naam` LIKE 'a%' ";
$naam = '$query' ;
$sql = mysql_query($query) or die ( mysql_error( ) );
?>" target="main">A</a>
Maar dan gaat het schript moeilijk doen met de volgende pagina. Hij loopt vast op hetvolgende:
$query = "SELECT * FROM `individueel` WHERE `letter` = '$letter' AND `actief` = '1' ORDER BY naam ASC";
Nu dat is vrij logisch daar ik hier nog steeds om die letter vraag, maar ik kom er niet uit waar ik het in moet veranderen :s
Ik kan het wel veranderen in A%, maar dan zou ik voor iedere letter van het alfabet een nieuwe pagina moeten maken! Terwijl ik er nu maar 1tje heb, want hij onthoudt op welke letter ik gedrukt heb.
Het letter gedeelte weghalen werkt ook niet, veranderen in naam geeft alle namen uit de hele database en ga zo maar door.
Hoe krijg ik het voor elkaar dat dit script onthoudt op welke letter in geklikt heb en de bijbehorende namen laadt.
je geeft aan $naam de waarde van $query, ik denk dat dat conflicten geeft...
dan heeft $naam dus een andere waarde daarna, en niet meer de originele waarde.
Je kunt beter een andere naam voor die variabele kiezen denk ik
Je het één pagina (A) met daarop het alfabet. Iedere letter van het alfabet wordt gelinkt naar een andere pagina (B).
Op die andere pagina (B) haal je alle namen op die beginnen met de beginletter waarop je op pagina A geklikt hebt.
Als dat correct is, zie ik geen probleem. Op pagina A maak je linkjes met bijvoorbeeld ?beginletter=c, en op de volgende pagina kan je de beginletter weer ophalen met $_GET['beginletter']. Dat kan je dan weer in je query verwerken.
Wat ik nu doe is met 2 tabellen werken. 1 voor de beginletter en 1 voor de hele naam. Voor iemand die Arnold heet, heb ik dus in een andere tabel aangegeven dat zijn naam met A begint.
De A in het alfabet laadt dus op de 2de pagina alle namen die als beginletter A hebben. Maar dat doet hij dus vanuit die aparte tabel.
Het moet gewoon mogelijk zijn dat ik maar tabel hoef te gebruiken waar gewoon hele namen instaan. En dat het script dus zelf de eerste letter zoekt en deze op de volgende pagina weer geeft.
Waar ik spaak loop is dat het schript op de 2de pagina niet schijnt te weten op welke letter ik gedrukt heb en dus ook niet de bijbehorende namen kan laden.
@SanThe:
als ik dit doe:
$query = "SELECT * FROM individueel WHERE naam LIKE '" . $_GET['letter'] . "%' ";
weet het schript natuurlijk niet wat ['letter'] is, want dat staat nergens aangegeven. Dus hoe geef ik aan dat letter in dit geval a moet zijn?