Foreach vragen
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;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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
$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
Gewijzigd op 26/12/2016 16:22:53 door - Rob -
Ps: Ken je var_dump() al? Ideaal voor debuggen.
Gewijzigd op 26/12/2016 16:35:33 door - Ariën -
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..
En wat zegt var_dump() op je variabele?
Gewijzigd op 26/12/2016 16:41:02 door - Ariën -
Toevoeging op 26/12/2016 16:40:02:
dan zie ik alleen menubalk en verder niks
Toevoeging op 26/12/2016 16:40:33:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<li class="dropdown notifications-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-bell-o"></i>
<span class="label label-warning"><?php
$userId = $_SESSION['id'];
$result = $conn->query("SELECT COUNT(*) FROM `notifications` WHERE `userId_recieve`='$userId' AND `seen`='0'");
$row = $result->fetch_row();
echo $row[0]?></span>
</a>
<ul class="dropdown-menu">
<li class="header">Je hebt
<?php echo $row[0]?> meldingen</li>
<li>
<ul class="menu">
<?php
$data = $conn->query("SELECT `notification_name`, `notification_message` FROM `notifications` WHERE `userId_recieve`='$userId' AND `seen`='0'");
$data = $data->fetch_array();
foreach ($data as $key => $value) {
foreach ($value as $key2 => $value2) {
echo "<li><a><i class='".$value2['notification_name']."'></i>".$value2['notification_message']."</a></li>";
}
}
?>
</ul>
</li>
<li class="footer"><a href="#">Zie alle meldingen</a></li>
</ul>
</li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-bell-o"></i>
<span class="label label-warning"><?php
$userId = $_SESSION['id'];
$result = $conn->query("SELECT COUNT(*) FROM `notifications` WHERE `userId_recieve`='$userId' AND `seen`='0'");
$row = $result->fetch_row();
echo $row[0]?></span>
</a>
<ul class="dropdown-menu">
<li class="header">Je hebt
<?php echo $row[0]?> meldingen</li>
<li>
<ul class="menu">
<?php
$data = $conn->query("SELECT `notification_name`, `notification_message` FROM `notifications` WHERE `userId_recieve`='$userId' AND `seen`='0'");
$data = $data->fetch_array();
foreach ($data as $key => $value) {
foreach ($value as $key2 => $value2) {
echo "<li><a><i class='".$value2['notification_name']."'></i>".$value2['notification_message']."</a></li>";
}
}
?>
</ul>
</li>
<li class="footer"><a href="#">Zie alle meldingen</a></li>
</ul>
</li>
Wanneer je dat niet zeker weet moet je dat voor de foreach lus checken.
$data kan de waarde FALSE hebben als je query mislukt.
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.
Gewijzigd op 26/12/2016 16:43:43 door Frank Nietbelangrijk
Toevoeging op 26/12/2016 16:45:54:
query werkt gewoon
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.
Toevoeging op 26/12/2016 16:50:41:
bij doet hij het goed, maar hij vult class='".$value2."' niet bij class= in dus eigelijk pakt die het die 2 apart en maakt er een nieuwe <li> van..
Toevoeging op 26/12/2016 16:58:52:
ZOuden jullie (als jullie tijd hebben) iets voor mij willen maken wat werkt en dat ik het daar van kan leren.. Ik ben niet zo goed in uitleggen :P
Gewijzigd op 26/12/2016 16:54:23 door - Rob -
Wat zegt var_dump() over $value na de eerste foreach?
Toevoeging op 27/12/2016 10:52:53:
... 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?
Gewijzigd op 26/12/2016 19:27:36 door - Rob -
Ik weet dat je dit niet wilt horen en het voelt onaangenaam maar je zou je echt eerst op een paar basic zaken moeten richten zoals:
a) Programmalogica eerst en dan pas de output. zie ook dit draadje
b) Ga oefenen met functies of nog liever met classes.
c) Denk eens na over het verschil tussen pagina's waar gebruikers op mogen landen (zoals index.php, about.php etc) en bibliotheek bestanden. Waar laat je wat?
d) Oefen eens wat met array's
e) Leer wat over database design
f) Kijk eens naar een simple framework als CakePHP of CodeIgniter
Gewijzigd op 27/12/2016 12:32:49 door Frank Nietbelangrijk
Het is net als een slipcursus die je doet als je net kan rijden. Het is onverstandig.
Zet je plannen nog even in de ijskast en ga nog even lekker experimenteren.
Oké, kunnen jullie mij in het nederlands uitleggen wat een Framework precies inhoud?
https://nl.m.wikipedia.org/wiki/Framework
Het is alleen niet iets waar je als beginner aan moet beginnen.
Gewijzigd op 27/12/2016 13:11:15 door - Ariën -
Het biedt bijvoorbeeld:
- een indeling voor je bestanden
- een single entry point (Alle verzoeken komen op index.php)
- clean URL's
- een schat aan classes die je het leven veraangenamen zoals een database class, een menu class of een file class.
- een autoloader waardoor je geen include() meer hoeft te gebruiken
- een manier om je programmalogica gescheiden te houden van je view (je HTML)