If statement in while sql
Ik zit met een questie waar ik niet goed uitkom en dat heeft te maken met de resultaten die ik krijg vanuit mijn query.
Ik wil graag een vaste array hebben wat ik kan sturen naar de client en met javascript/jquery kan behandelen.
De array wat ik wil hebben is
In de loop word de volgende dan id 2 enz.
De name en de place staan in de kolom info
Maar de info kolom bevat niet altijd de waarde place.
Nu wil ik een if statement maken stel dat deze niet bestaat en iets ander mee kan doen als dit het geval is.
Hoe kan ik dit het beste doen in de while?
Ik heb al geprobeerd
Ben Pastoor op 29/05/2020 13:58:58:
De name en de place staan in de kolom info
Dit volg ik niet helemaal, hoe staat al deze info opgeslagen in de database, en hoe haal je deze op?
Het beste lijkt mij om verschillende kolommen aan te maken/te gebruiken voor de verschillende stukken informatie, of mogelijk zelfs aparte tabellen met relaties.
Mocht je een tabelkolom in je database hebben waarbij je allerlei informatie op een hoop gegooid hebt, weet niet of dat de handigste manier is om gestructureerd informatie op te slaan, hier zijn per slot van rekening databases voor bedoeld.
Op het moment dat je moeite moet doen om de juiste informatie op een makkelijke manier uit je database te peuteren dan is het ontwerp niet geschikt voor het gebruik.
Helaas doen systemen als WordPress dat vaak wel in het kader van "zo zit het in elk geval in de database, zonder dat wel losse tabellen moeten maken / aanpassen"
Geef eens een voorbeeld hoe je data echt in de tabel staat
Ik maak inderdaad gebruik van een bestaand systeem.
id | pid | key | value |
1 | 1 | place | amsterdam |
2 | 1 | age | 32 |
3 | 1 | name | bram |
4 | 2 | name | lieske |
5 | 2 | age | 29 |
Zoals je ziet heeft pid 2 geen place key.
Dan wil ik in de array als die dus niet bestaat een - teken bijvoorbeeld.
Dus simpel gezegt als de key niet in het resultaat zit vul array item met....
Voor de keys die niet in de $row zitten wordt nu de waarde uit de "defaults" genomen. zit de key er wel in, dan blijft de waarde gewoon behouden.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
A.pid AS id,
A.value AS naam,
B.value AS place
FROM tabelnaam A
LEFT JOIN tabelnaam B ON B.pid = A.pid AND B.key = 'place'
WHERE A.key = 'name'
A.pid AS id,
A.value AS naam,
B.value AS place
FROM tabelnaam A
LEFT JOIN tabelnaam B ON B.pid = A.pid AND B.key = 'place'
WHERE A.key = 'name'
Dit zou NULL moeten opleveren voor place als die niet bestaat. Maar je kolom is er dan wel
mocht place meermaals voorkomen,dan krijg je ook meerdere records terug trouwens!