status bericht laten zien
ik hoop dat iemand mij kan helpen. Ik heb een berichtensysteem en ik wil graag dat de ingelogde kan zien of hij het bericht al gezien heeft.
Echter krijg ik altijd Nieuw! terug. Dit is mijn code:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
$Berichten = mysql_query("SELECT BerichtID,ID,Van,Datum,Onderwerp,gelezen,beantwoord,gelezen_van,beantwoord_van FROM $TabelLedenBerichten WHERE ID = '$InlogLid->ID' OR Van='$InlogLid->ID'") or die(mysql_error());
if(mysql_num_rows($Berichten)) {
echo("<form method=post action='berichten.php' name=berichtenform onsubmit='return Verwijder()'>
<table cellpadding=4 cellspacing=0>
<tr style='background-color:#EEEEEE'><td><input type=checkbox name=alles onclick='AllesAankruisen(this)'></td><td><b>Onderwerp</b></td><td><b>Afzender</b></td><td><b>Datum</b></td><td><b>Status</b></td></tr>");
while($Bericht = mysql_fetch_object($Berichten)) {
if($Bericht->ID == $InLogLid->ID){
if($Bericht->gelezen == 0){
$eigenschap= "<b>Nieuw!</b>";
}
if($Bericht->gelezen == 1){
$eigenschap= "Gelezen";
}
if($Bericht->beantwoord == 1){
$eigenschap="Beantwoord";
}
}
if($Bericht->Van /*verstuurder van bericht*/== $InlogLid->ID){
if($Bericht->beantwoord_van == 1){
$eigenschap="Beantwoord";
}
elseif($Bericht->gelezen_van == 0){
$eigenschap="<b>Nieuw!</b>";
}
elseif($Bericht->gelezen_van == 0 AND $bericht->beantwoord_van == 0){
$eigenschap="Verzonden";
}
}
if(!$Bericht->Onderwerp) { $Bericht->Onderwerp = "(geen onderwerp)"; }
echo("<tr><td><input type=checkbox name=verwijder[] value='$Bericht->BerichtID'></td><td><a href='berichten.php?message=$Bericht->BerichtID'>$Bericht->Onderwerp</a>");
echo("</td><td>".Lid($Bericht->Van)."</td><td>".date("d-m-Y H:i",$Bericht->Datum)."</td><td>".$eigenschap."</tr>");
}
?>
$Berichten = mysql_query("SELECT BerichtID,ID,Van,Datum,Onderwerp,gelezen,beantwoord,gelezen_van,beantwoord_van FROM $TabelLedenBerichten WHERE ID = '$InlogLid->ID' OR Van='$InlogLid->ID'") or die(mysql_error());
if(mysql_num_rows($Berichten)) {
echo("<form method=post action='berichten.php' name=berichtenform onsubmit='return Verwijder()'>
<table cellpadding=4 cellspacing=0>
<tr style='background-color:#EEEEEE'><td><input type=checkbox name=alles onclick='AllesAankruisen(this)'></td><td><b>Onderwerp</b></td><td><b>Afzender</b></td><td><b>Datum</b></td><td><b>Status</b></td></tr>");
while($Bericht = mysql_fetch_object($Berichten)) {
if($Bericht->ID == $InLogLid->ID){
if($Bericht->gelezen == 0){
$eigenschap= "<b>Nieuw!</b>";
}
if($Bericht->gelezen == 1){
$eigenschap= "Gelezen";
}
if($Bericht->beantwoord == 1){
$eigenschap="Beantwoord";
}
}
if($Bericht->Van /*verstuurder van bericht*/== $InlogLid->ID){
if($Bericht->beantwoord_van == 1){
$eigenschap="Beantwoord";
}
elseif($Bericht->gelezen_van == 0){
$eigenschap="<b>Nieuw!</b>";
}
elseif($Bericht->gelezen_van == 0 AND $bericht->beantwoord_van == 0){
$eigenschap="Verzonden";
}
}
if(!$Bericht->Onderwerp) { $Bericht->Onderwerp = "(geen onderwerp)"; }
echo("<tr><td><input type=checkbox name=verwijder[] value='$Bericht->BerichtID'></td><td><a href='berichten.php?message=$Bericht->BerichtID'>$Bericht->Onderwerp</a>");
echo("</td><td>".Lid($Bericht->Van)."</td><td>".date("d-m-Y H:i",$Bericht->Datum)."</td><td>".$eigenschap."</tr>");
}
?>
wie o wie kan mij helpen?
Bewijs nu eens dat het veld gelezen ook daadwerkelijk 1 als waarde bevat en geen 0
Note: leer je eigen code debuggen!! Dat doe je door her en daar evaluerende variabelen te echoen.
Opmerkingen:
1. pas correcte foutafhandeling toe
2. je doet er verstandiger aan om _fetch_assoc te gebruiken
3. je gebruikt _num_rows op een verkeerde manier
4. echo behoeft de () niet
5. in feite quote je strings bij voorkeur met enkele quotes en haal je je variabelen buiten de quotes.
6. html attribuut-waarden worden bij voorkeur gequote met ""
7. als je datum uit de database komt dan kan je beter in de query het display format opnemen ipv te eikelen met php's date functie
en die hele waslijst kan mischien wel zo zijn maar dat was mijn vraag niet en dat werkt zo ook....
Hij probeert jou ook wat aan te leren. Dan is het wel heel ondankbaar om te zeggen nee, dat wil ik niet want zonder kan het ook wel.
$eigenschap="Beantwoord";
}
elseif($Bericht->gelezen_van == 0){
$eigenschap="<b>Nieuw!</b>";
}
elseif($Bericht->gelezen_van == 0 AND $bericht->beantwoord_van == 0){
$eigenschap="Verzonden";
}
}
De tweede elseif zal nooit gebruikt worden.
m.a.w. je zit moeilijk te doen als het makkelijk kan.
Overigens kan status 1 niet 2 betekenissen hebben!
Verder is dat *_van gedeelte vaag en lijkt mij ook dat een verzonden bericht niet door de verzender kan verwijderd worden.
Vincent Huisman op 18/06/2011 16:03:00:
Hij probeert jou ook wat aan te leren. Dan is het wel heel ondankbaar om te zeggen nee, dat wil ik niet want zonder kan het ook wel.
ik weet dat het script in dat opzicht nog flut was het is nog steeds niet af, als ik iets op een forum plaats wil ik het liefst alleen antwoord op mijn vraag en niet eromheen
Uiid - op 18/06/2011 16:24:33:
ik weet dat het script in dat opzicht nog flut was het is nog steeds niet af, als ik iets op een forum plaats wil ik het liefst alleen antwoord op mijn vraag en niet eromheen
Vincent Huisman op 18/06/2011 16:03:00:
Hij probeert jou ook wat aan te leren. Dan is het wel heel ondankbaar om te zeggen nee, dat wil ik niet want zonder kan het ook wel.
ik weet dat het script in dat opzicht nog flut was het is nog steeds niet af, als ik iets op een forum plaats wil ik het liefst alleen antwoord op mijn vraag en niet eromheen
Het heeft er allemaal mee te maken. Wil je dit opgelost hebben? Doe dan wat Noppes zegt.
Je houding is nu vrij naïef en arrogant.
Nochtans wordt hier wel zeer nuttige informatie gegeven! Doe er iets mee en wijs het niet af!
btw. ik doe moeilijk dit is helemaal niet nodig
thanks in ieder geval