Ik heb een vraagje m.b.t. mijn website Wereld van Oranje. Ik heb een database met nieuwsberichten én een database met gegevens over sporters.
In die berichten gebruik ik bijvoorbeeld de naam Piet Jansen en dan wil ik dat als ik die tekst typ, dit automatisch een link wordt naar het profiel van Piet Jansen. Is dit mogelijk en zo ja, hoe kan ik dit het makkelijkst aanpakken? Zo niet, op welke manier kan dit wél redelijk eenvoudig, zonder iedere keer <a href=huppeldepup...> in te hoeven tikken voor een naam?
Ik heb nu een db 'profielen' met daarin een kolom 'naamcompleet'. Stel, Piet de Vries heeft id '1'. Hoe zorg ik er nou voor dat op het moment dat ik in een verhaal '[naam]Piet de Vries[/naam]' tik, dat dat een link wordt naar profiel.php?id=1? Wat moet ik waar in m'n php-bestand zetten om dit te krijgen?
En even een subvraagje, maar dat is een latere zorg: stel ik heb twee keer een Piet de Vries in de db staan... Dát is een probleem, denk ik zo...
Hier een stukje code waarmee je de queries kunt opstellen. Je kunt inderdaad meerdere id's krijgen, in dat geval zul je eerst naar een landingspage moeten gaan en daar de bezoeker een keuze laten maken tussen de verschillende mogelijkheden.
<?php
$tekst = '[naam]Henk[/naam]. Dit is de naam [naam]Piet Janssen[/naam] die in een regel tekst staat, net zoals [naam]Jan Peters[/naam].';
print_r($aText); // Array met alle stukken tekst, de oneven keys zijn de namen.
$aNamen = array();
foreach ($aText as $key => $naam){
if (($key % 2) == 1) { // oneven
$aNamen[] = $naam;
}
}
print_r($aNamen); // even ter verduidelijking
foreach ($aNamen as $sNaam) {
$count = count(explode(' ', $sNaam));
switch ($count){
case 1: // de naam kan zowel de voor- als achternaam zijn
$qWhere = "voornaam = '".$sNaam."' OR achternaam = '".$sNaam."'";
break;
case 2: // voor- en achternaam
$qWhere = "CONCAT(voornaam, ' ', achternaam) = '".$sNaam."'";
break;
default:
$qWhere = "CONCAT(voornaam, ' ', tussenvoegsel, ' ', achternaam) = '".$sNaam."'";
}
$query = "SELECT id FROM tabelnaam WHERE ".$qWhere.PHP_EOL;
echo $query; // uitvoeren query en iets met de id's gaan doen.
}
?>
De rest mag je zelf gaan uitvogelen.
Wellicht zijn er betere oplossingen, maar dit werkt tot zover goed.