Door
Brecht S
op 29-08-2016 14:11
gewijzigd op 29-08-2016 14:15
5.302 views
Ik heb nu een database met als tabel blog. Daaronder zitten verschillende rijen met resultaten (blog-items).
Nu zou ik van al deze rijen het veld tags willen samenvoegen.
Even een voorbeeld:
Titel Artikel Tags
Titel 1 Artikel inhoud 1 wonen, leven, cultuur
Titel 2 Artikel inhoud 2 werken, leven, inrichten
...
Nu kan je zien dat de laatste tag dus geen komma meer heeft. En ik zou al die tags willen samenvoegen. Dus dacht ik aan een str_replace
$tags = str_replace(',', '<br>', $row['tags']);
Maar dat gaat dus niet aangezien de laatste tag nooit een komma heeft.
Iemand een idee hoe dit wel kan opgelost worden?
Ja, blijkbaar een fout getypt bij enkele aanpassingen aan je code. Nu werkt het wel en de dubbels zijn er volgens mij ook uit. Zal nog even verder checken maar op het eerste zicht is dit de juiste code. Thanks.
Ja. Jij maakt je array eerst aan op voorhand en dan ga je door de tags heen lopen. Daarna ga je de tags splitsen op de komma en dan de tags in de array steken. Daarna ga je met array_unique de dubbele waarden eruit halen.
Vervolgens het uiteindelijke resultaat tonen via een foreach loop.
Ik was in de goede richting aan het zoeken maar was er totaal nog niet ;-)
@Ramon: Is er een mogelijkheid bij een query zoals deze: SELECT tags, 'EUROBLOK' AS bedrijfsnaam FROM blog WHERE actief = 'ja' AND type = 'Foto' om buiten de tags ook de bedrijfsnaam mee op te nemen? Gebaseerd op jouw eerder geposte code.
Dus:
<?php
// ergens je connectie (MySQLi) maken en in $mysqli zetten
// lege array aanmaken waarin alle tags komen
$tags = array();
// de tags ophalen uit database, let op: met MySQLi
$tagsophalen = $mysqli->query("SELECT tags, 'EUROBLOK' AS bedrijfsnaam FROM blog WHERE actief = 'ja'");
// alleen iets doen als er uberhaupt tags zijn
if(mysqli_num_rows($tagsophalen) > 0){
// door de tags heen lopen
while($tagres = mysqli_fetch_assoc($tagsophalen)){
if(trim($tagres['tags']) !== ''){
// splitsen op de komma
foreach(explode(',',$tagres['tags']) AS $tag){
// opslaan in de array $tags
$tags[] = $tag;
}
}
}
}
// ontdubbelen
$tags = array_unique($tags);
// eventueel nog op alfabetische volgorde zetten of whatever
// zie php.net
// printen
foreach($tags AS $tagnaam){
echo $tagnaam.'<br>';
}
?>
En dan onderaan ipv enkel de $tagnaam weer te geven ook de $bedrijfsnaam erbij te krijgen?
Dit is maar een stuk van de code. Er worden gegevens verzameld uit 2 verschillende databases. De code die ik heb gepost is daar 1 van. De andere bouw ik op op dezelfde manier en dan ga ik die array's gaan samenvoegen met array_merge.
Daarom gebruik ik in de select die bedrijfnamen omdat ik mijn tags wil koppelen met een bedrijfsnaam omdat ik anders niet weet of de tags van het ene bedrijf of van het andere bedrijf komen. De bedoeling is dat in de tag cloud die aanklikbaar zijn en dan naar de juiste pagina gaan van het bedrijf. Dus ik heb wel degelijk een bedrijfsnaam nodig.