login  Naam:   Wachtwoord: 
Registreer je!
 Forum

hulp met query

Offline kickasgamer - 12/09/2008 22:31 (laatste wijziging 12/09/2008 22:32)
Avatar van kickasgamerPHP ver gevorderde Ik zou graag hebben dat iemand me even helpen met een query op te stellen, ik hbe zelf het een en ander geprobeerd maar ik kom er niet meer aan uit 

dit is de indeling van de DB: http://img254.imageshack.us/my.php?image=vbcy6.jpg

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

alvast bedankt

22 antwoorden

Gesponsorde links
Offline vinTage - 12/09/2008 22:37
Avatar van vinTage Nieuw lid Je hele verhaal + image zijn nietszeggend 
Offline kickasgamer - 12/09/2008 22:53
Avatar van kickasgamer PHP ver gevorderde ok , 2de poging 

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

ik hoop dat dit al wat duidelijker is 
Offline Joost - 13/09/2008 00:24
Avatar van Joost PHP expert select id waar zender= $zender_id en waar show_verzonden = 1

en dan een mysql_num_rows ?:P
Offline kickasgamer - 13/09/2008 10:46
Avatar van kickasgamer PHP ver gevorderde ja, zo dacht ik ook eerst, maar ik moet zo weten hoeveel PM's men in zijn inbox + verzonden items hebben zitten

zodat als dat aantal groter of gelijk aan max_pmis je geen pm's meer kan ontvangen of verzenden
Offline Martijn - 13/09/2008 12:25
Avatar van Martijn Crew PHP doe gewoon voor verzenden dat er word gekeken hoeveel berichten je doel al hebt.

"Je kan dit bericht niet versturen wat [naam] heeft geen ruimte in zn inbox meer "
Offline kickasgamer - 13/09/2008 12:36
Avatar van kickasgamer PHP ver gevorderde ja, dat is mijn bedoeling ook, maar daarvoor heb ik die query nodig :D
Offline Joost - 13/09/2008 12:57 (laatste wijziging 13/09/2008 12:58)
Avatar van Joost PHP expert
  1. mysql_query("SELECT `id` FROM `pm` WHERE
  2. (`zender`=".$zender_id." AND `show_verzonden`=1)
  3. OR
  4. (`ontvanger`=".$ontvanger_id." AND `show_inbox`=1) ") or die(mysql_error());

Offline Kr4nKz1n - 13/09/2008 13:08
Avatar van Kr4nKz1n Onbekend Maak hier een kleine functie van is makkelijk.

  1. function PMs($iId) //$iId :: id van de gebruiker
  2. {
  3. $qGetPms = Mysql_Query("SELECT show_inbox, show_verzonden FROM tabelnaam WHERE id=".$iId);
  4. $qPms = Mysql_Fetch_Assoc($qGetPms);
  5.  
  6. return $qPms['show_inbox'] + $qPms['show_verzonden'];
  7. }
Offline kickasgamer - 13/09/2008 14:44
Avatar van kickasgamer PHP ver gevorderde ja die functie lijkt me handig als het script helemaal werkt, nu ga ik die query eens apart testen

ik ga wel een count in die query zetten zo krijg ik dan direct een cijfer 
Offline Kr4nKz1n - 13/09/2008 15:07
Avatar van Kr4nKz1n Onbekend Count is alleen handig als je het aantal records wilt tellen.
Niet de inhoud.
Offline kickasgamer - 13/09/2008 15:09 (laatste wijziging 13/09/2008 15:15)
Avatar van kickasgamer PHP ver gevorderde ja ik moet ook het aantal hebben he,

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

dit is de code van de controle

  1. $zender = $_SESSION['user_info']['id'];
  2. $ontvanger = mysql_escape_string($_POST['ontvanger']);
  3.  
  4. //checken als het maximum van de pm's nog niet bereikt is
  5.  
  6. $query1 = "SELECT count(*) FROM priveberichten WHERE (`zender`=".$zender." AND `show_verzonden`=1) OR (`ontvanger`=".$zender." AND `show_inbox`=1) ";
  7. $result1 = mysql_query($query1) or die(mysql_error());
  8.  
  9. $query3 = "SELECT count(*) FROM priveberichten WHERE (`zender`=".$ontvanger." AND `show_verzonden`=1) OR (`ontvanger`=".$ontvanger." AND `show_inbox`=1) ";
  10. $result3 = mysql_query($query1) or die(mysql_error());
  11.  
  12. //$query1 = "SELECT count(*) FROM priveberichten WHERE ontvanger='".$ontvanger."' AND (show_inbox=1 OR show_verzonden=1)";
  13. //$result1 = mysql_query($query1) or die(mysql_error());
  14.  
  15. //$query3 = "SELECT count(*) FROM priveberichten WHERE zender='".$zender."' AND (show_inbox=1 OR show_verzonden=1)";
  16. //$result3 = mysql_query($query3) or die(mysql_error());
  17.  
  18. $status_ontvanger = mysql_result($result1, 0);
  19. $status_zender = mysql_result($result3, 0);
  20.  
  21. if($status_ontvanger >= $max_pm){
  22. echo "De ontvanger heeft het maximum aantal pm's bereikt, hij moet eerst plaats maken in zijn pm folders.";
  23. header("Refresh: 3; URL=index.php?pagina=nieuw");
  24. exit();
  25. }elseif($status_zender >= $max_pm){
  26. echo "U heeft het maximum aantal pm's bereikt, u moet eerst plaats maken in uw pm folders.";
  27. header("Refresh: 3; URL=index.php?pagina=nieuw");
  28. exit();
  29. }else{
Offline Kr4nKz1n - 13/09/2008 15:18
Avatar van Kr4nKz1n Onbekend Echo $status_ontvanger en $status_zender eens.

Hebben die wel de juiste waarden?
Offline kickasgamer - 13/09/2008 15:28 (laatste wijziging 13/09/2008 15:30)
Avatar van kickasgamer PHP ver gevorderde dit was de output:

29
----
29

en die waardes kloppen met de waarden in de DB, ind e DB zitten 29 records die ik verstuurt heb naar men eigen, dus 2 maal 29 klopt

en 29 + 29 = 58 en max_pm is normaal 50

dus ga ik die waarde effe nakijken. Maar denk zeker mee want het probleem kan gerust ergens anders liggen

EDIT: juist max_pm geëchoet en die is weldegelijk 50 dus ligt het probleem elders
Offline Kr4nKz1n - 13/09/2008 16:08
Avatar van Kr4nKz1n Onbekend Oke ik denk nu telkens verkeerd.

Even een beetje opgeheldering.

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 
Offline kickasgamer - 13/09/2008 17:08
Avatar van kickasgamer PHP ver gevorderde 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

ik hoop dat het al iets duidelijk is 
Offline Kr4nKz1n - 13/09/2008 18:02
Avatar van Kr4nKz1n Onbekend Dan lijken mij jouw queries goed. Damn man, knake probleem :/
Offline Martijn - 13/09/2008 18:21 (laatste wijziging 13/09/2008 18:22)
Avatar van Martijn Crew PHP 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
Offline kickasgamer - 13/09/2008 23:50
Avatar van kickasgamer PHP ver gevorderde 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 ?
Offline Joost - 14/09/2008 00:40
Avatar van Joost PHP expert En als je nu eens $status_ontvanger en $status_zender bij elkaar opteld en dan kijkt of die groter is dan $max_pm ?
Offline kickasgamer - 14/09/2008 00:45
Avatar van kickasgamer PHP ver gevorderde ja als ik dat doe, dan weet ik wel niet bij wie de fout ligt he 

Offline Joost - 14/09/2008 00:50
Avatar van Joost PHP expert 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
Offline kickasgamer - 14/09/2008 13:33 (laatste wijziging 14/09/2008 18:37)
Avatar van kickasgamer PHP ver gevorderde nee nee, inbox + verzonden items = maximaal 50 berichten

EDIT: iemand die me even kan helpen met deze query, want ik kom er niet uit 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s