ik wil dus weten hoeveel pm's de ontvanger van een PM heeft (in zijn inbox en outbox, als de pm's nog in iemand zijn inbox of outbox staan dan staat er in 1 in show_inbox, en een 1 in show_verzonden als die in de outbox nog ge toont worden)
dus ik wil wetn hoeveel PM's iemand in het totaal heeft zodat ik kan kijken of hij het maximum aantal pm's overschrijdt. hoe moet de query worden ?
Als de uitleg niet zou duidelijk zijn, vraag dan wat er niet duidelijk is en dan zal ik proberen verder uit te leggen wat er niet duidelijk is
als men een pm ontvangt in zijn inbox, dan staat show_inbox op 1. dat betekend dat de PM niet verwijderd is en dus getoont wordt in de inbox, als men die PM dan verwijderd dan wordt show_inbox 0 en wordt deze niet meer getoont. het zelfde principe is van toepassing op de verzonden items folder, juist dat daar show_verzonden op 1 of 0 staat.
dus ik wil alle PM's tellen die in de DB zitten
- waar zender= $zender_id en waar show_verzonden = 1
- waar ontvangeer=$ontvanger_id en waar show_inbox = 1
mysql_query("SELECT `id` FROM `pm` WHERE
(`zender`=".$zender_id." AND `show_verzonden`=1)
OR
(`ontvanger`=".$ontvanger_id." AND `show_inbox`=1) ") or die(mysql_error());
function PMs($iId) //$iId :: id van de gebruiker
{
$qGetPms = Mysql_Query("SELECT show_inbox, show_verzonden FROM tabelnaam WHERE id=".$iId);
$qPms = Mysql_Fetch_Assoc($qGetPms);
return $qPms['show_inbox'] + $qPms['show_verzonden'];
}
function PMs($iId)//$iId :: id van de gebruiker
{
$qGetPms=Mysql_Query("SELECT show_inbox, show_verzonden FROM tabelnaam WHERE id=".$iId);
bv in het totaal 40 pm maximum PM's is 50 dus de gebruiker kan nog pm's sturen
EDIT: het script doet nog niet heel wat ik wil dat het moet doen, $max_pm = 50 en heb nu heel men pm box vol ge stuurt, en als ik dan nog een PM wil sturen dus de 51ste dan krijg ik geen melden, ondanks dat mijn box helemaal vol zit
$zender = $_SESSION['user_info']['id'];
$ontvanger = mysql_escape_string($_POST['ontvanger']);
//checken als het maximum van de pm's nog niet bereikt is
$query1 = "SELECT count(*) FROM priveberichten WHERE (`zender`=".$zender." AND `show_verzonden`=1) OR (`ontvanger`=".$zender." AND `show_inbox`=1) ";
$result1 = mysql_query($query1) or die(mysql_error());
$query3 = "SELECT count(*) FROM priveberichten WHERE (`zender`=".$ontvanger." AND `show_verzonden`=1) OR (`ontvanger`=".$ontvanger." AND `show_inbox`=1) ";
$result3 = mysql_query($query1) or die(mysql_error());
//$query1 = "SELECT count(*) FROM priveberichten WHERE ontvanger='".$ontvanger."' AND (show_inbox=1 OR show_verzonden=1)";
//$result1 = mysql_query($query1) or die(mysql_error());
//$query3 = "SELECT count(*) FROM priveberichten WHERE zender='".$zender."' AND (show_inbox=1 OR show_verzonden=1)";
//$result3 = mysql_query($query3) or die(mysql_error());
$status_ontvanger = mysql_result($result1, 0);
$status_zender = mysql_result($result3, 0);
if($status_ontvanger >= $max_pm){
echo "De ontvanger heeft het maximum aantal pm's bereikt, hij moet eerst plaats maken in zijn pm folders.";
header("Refresh: 3; URL=index.php?pagina=nieuw");
exit();
}elseif($status_zender >= $max_pm){
echo "U heeft het maximum aantal pm's bereikt, u moet eerst plaats maken in uw pm folders.";
header("Refresh: 3; URL=index.php?pagina=nieuw");
exit();
}else{
$query3="SELECT count(*) FROM priveberichten WHERE (`zender`=".$ontvanger." AND `show_verzonden`=1) OR (`ontvanger`=".$ontvanger." AND `show_inbox`=1) ";
Hoe moet er worden geteld?
Om het moment dat ik naar jou een PM stuur, krijg ik een PM erbij in mijn outbox en jij in je inbox?
Die in mijn outbox telt mee met mijn totaal aantal berichten?
Nu een vraag voor jou. Als ik mijn outbox leeg, verwijder ik berichten in jouw inbox, die jij misschien wilt bewaren toch?
Maak een checkbox bij het versturen van een PM met de vraag of het bericht opgeslagen moet worden in de outbox. Indien ja? Gewoon dat bericht er nogmaals inzetten. Of je moet met verschillende velden werken, maar is knake
nee, kijk daarom is show_inbox en show_verzonden, zo blijft het bericht in de DB. Als jij dan bv dat bericht uit je verzonden items doet, dan wordt er een 0 gezet in show_verzonden, maar blijft show_inbox gewoon op 1 staat en blijft deze getoont worden
wat nou als je de speler in je members tabel een 'in' en 'out' maakt ofzo. Dan als je een bericht naar iemand verstuurd word de 'in' 1 groter, en als je verstuurd de 'out' 1 groter. Verwijder je dan berichten, verlaag je meteen de in/out...
als iemand dan wilt sutren, kijk je gewoon naar de 'in' en 'out', scheelt me meteen weer wat van je DB
edit: en een 'new', standaard 0, en als er een bericht naar je is een 1. Bekijk je de berichten word t weer n 0
ja lijkt me ook goed, ma ik ga het nu bij mij versie houden. maar hoe kan het dat de waardes die ik uit de DB haal juist zijn en de waarde waar ik mee vergelijk (max_pm de juiste waarde heeft) toch die controle fout gaat ?
Je wilt hebben dat je maximaal 50 berichten in je inbox, en maximaal 50 berichten in je outbox mag hebben? Of begrijp ik het nu even helemaal verkeerd?:P