Door
- Rob -
op 26-12-2016 16:16
gewijzigd op 26-12-2016 16:22
3.385 views
Hellowww again!
Ik was weer lekker bezig met PHP :D en stuiterde op een probleem met mijn notificatie functie...
Probleem 1. Ik kan het maar naar 1 persoon sturen, maar ik wil dat het naar 1 iemand kan worden verzonden, 2, 3, 4, etc. of iedereen. Maar als meerdere mensen het ontvangen, moeten hun per persoon, per hun sessie seen op 1 op één of andere manier zetten zodat hun geen nieuwe meldingen meer zien, maar de gene die het nog niet hebben gelezen wel
Probleem 2. Ik kom er maar niet uit, ook niet met google, hoe ik kan zorgen dat ik met deze code;
<?php
$data = $conn->query("SELECT `notification_name`, `notification_message` FROM `notifications` WHERE `userId_recieve`='$userId' AND `seen`='0'");
foreach ($data as $key => $value) {
foreach ($value as $key2 => $value2) {
echo "<li><a><i class='".$value2."'></i>".$value2."</a></li>";
}
}
?> }
DATABASE OPSTELLING
id
notification_name
notification_message
userId_recieve
seen
kan zorgen dat value2 (de eerste) uit de db wordt gehaald met notification_name, en value2 de 2e dat die wordt opgehaald als notifictaion_message
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\paneel\paneel_index.php on line 139 komt er te staan als ik het fetch voor foreach ($data as $key => $value) { en als ik het daarna doe geeft die niks aan..
Je moet 100% zeker zijn dat je een ARRAY gebruikt in je foreach lus.
Wanneer je dat niet zeker weet moet je dat voor de foreach lus checken.
$data kan de waarde FALSE hebben als je query mislukt.
<?php
if(is_array($data))
foreach($data as $key => $value) {
// ...
?>
Daarnaast moet je een fout op het scherm zetten als je query mislukt zodat je niet telkens in het duister hoeft te tasten. Hetzelfde geldt als je verbinding maakt met de mysql server.
Een site bugt niet echt van var_dump, gezien het voor ontwikkeling en testdoeleinden gebruikt wordt.
Je ziet dan wat de inhoud van een variabele is. Maar hoezo overschrijf je $data?
$result voor een query en $data voor een fetch vind ik logischere namen.
array(4) { [0]=> string(8) "Promotie" ["notification_name"]=> string(8) "Promotie" [1]=> string(29) "U hebt een promotie ontvangen" ["notification_message"]=> string(29) "U hebt een promotie ontvangen" } zegt de var_dump
[size=xsmall]Toevoeging op 27/12/2016 10:52:53:[/size]
... Voor de meerdere users die een melding kunnen ontvangen, als ik ze allemaal in de database zet met user1, user2, user3, etc. hoe kan ik dan kijken of jouw userid daar tussen zit?