Hi,
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:

<?
$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?
Niemand kan jouw 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
als het veld gelezen 1 niet als waarde had, had ik het hier niet neergezet.
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.
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";
}
}

De tweede elseif zal nooit gebruikt worden.
Je hebt dat stuk php helemaal niet nodig om de status te bepalen, dat kan je ook in het sql-statement meenemen.

m.a.w. je zit moeilijk te doen als het makkelijk kan.

Overigens kan status 1 niet 2 betekenissen hebben!
Lijkt mij ook dat je ontvangen en verzonden berichten niet door elkaar wilt hebben (where).
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

[quote="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

[/quote]

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!
hmm.. srry ik geef toe dat ik fout zat, maar ik kan er ook niet tegen als mijn moeder ergens over begint wat ik toch al wou doen :P

btw. ik doe moeilijk dit is helemaal niet nodig
thanks in ieder geval

Reageren