[php/mysql] Niveau systeem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het volgende script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?  
function toegang_p($forumid, $username){
//Haalt de toegang id op  
$forum = mysql_query("SELECT toegang_p FROM forums WHERE forumid = '$forumid'") or die (mysql_error());  
$forumnr = mysql_fetch_object($forum);  
$forumgetal = $forumnr->toegang_p;  
//haalt het niveau id op van de member die daar op het moment is
$member = mysql_query("SELECT status_id FROM leden WHERE loginnaam = '$username'") or die (mysql_error());  
$membernr = mysql_fetch_object($member);  
$membergetal = $membernr->status_id;  

    if($membergetal < $forumgetal){  
         die("U heeft geen toegang tot deze pagina");  
}  
}  
?>  

Die roep ik aan met:
PHP:
1
2
3
<?  
toegang_p($forumid,$loginnaam);  
?>  


Hiermee wil ik dus checken of die persoon mag posten in het forum. Dus ieder level die erin mijn forum is heeft een waarder:
Admin 2
Mods 1
Leden 0
Dus dan doe ik in het gekozen forum bij een toegangs nummer dus bijv 2 dan mogen enkel de admins er posten en bij bijv 1 mogen de admins en mods posten etc. Maar op 1 of andere manier werkt het bovenstaande script niet. Hij laat gewoon alles door gaan.

Iemand enig idee hoe ik dit probleem kan oplossen?

[ Voor 6% gewijzigd door Verwijderd op 09-05-2003 19:43 ]


Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Welke waarden staan er in $forumgetal en $membergetal?


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$forumgetal is de het niveau van posten in het forum dat kan 0, 1 of 2 zijn en $membergetal is wat die member is dus of lid dat is 0 mod is 1 admin 2

Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Ik bedoel dus: run het scriptje en echo de waarden die er in staan. Wat het zou moeten zijn weten we, wat ze werkelijk zijn, dat is de vraag ;)


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
2
2
Komt er dan uit.
Dan klopt het dus dat ie me door laat maar als het:
2
0
Is dat hoord ie met niet door te laten.

[ Voor 70% gewijzigd door Verwijderd op 09-05-2003 21:10 ]


Acties:
  • 0 Henk 'm!

  • MrC4u
  • Registratie: Maart 2002
  • Laatst online: 07-07 12:34
Ik weet niet of dit het probleem is; maar
1) je slaat je niveau's als tekst op in je database.
2) Verder weet ik ook niet of PHP teksten met elkaar kan vergelijken, misschien moet je de variabelen eerst als getal omzetten, en dan gaan vergelijken.

[ Voor 3% gewijzigd door MrC4u op 09-05-2003 21:15 . Reden: +kan ]

..: De 3 H's van Microsoft: Herhalen, Herstarten en Herinstalleren :..


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee ik sla ze als int veld op.

Acties:
  • 0 Henk 'm!

  • MrC4u
  • Registratie: Maart 2002
  • Laatst online: 07-07 12:34
Verwijderd schreef op 09 mei 2003 @ 21:15:
Nee ik sla ze als int veld op.
Ok, maar je haalt ze uit de database als tekst? Duidend op de ' in je sql statement.

..: De 3 H's van Microsoft: Herhalen, Herstarten en Herinstalleren :..


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Geen idee kan het ook anders dan?

Acties:
  • 0 Henk 'm!

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 11:40
- Wat gebeurt er als er toevallig geen record in de tabel staat?
- Je retourneert geen waarde (dan is het ook geen function)
- Geldt die() voor het gehele script? Of alleen de functie? Maak van die() eens echo() of print(), dan weet je tenminste of het probleem daar in zit of in de evaluatie van je vergelijking.

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nouja kijk als het niet goed is dan. geeft ie die medling en stopt het verloop van het script. EN anders gaat het script gewoon verder.

Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Verwijderd schreef op 09 May 2003 @ 21:04:
2
2
Komt er dan uit.
Dan klopt het dus dat ie me door laat maar als het:
2
0
Is dat hoord ie met niet door te laten.
Tjessis wat een koeterwaals. Ik begrijp wel ongeveer wat je wil zeggen, maar ga je code nou eens testen - om te beginnen met een situatie die niet klopt. Een situatie waarin het script niks *hoort* te doen testen, en vervolgens roepen "maar het werkt niet" slaat natuurlijk nergens op. Ik verwijs je derhalve naar de P&W FAQ, afdeling debuggen.


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nouja volgens mij leg ik het gewoon goed uit hoor :S. Hij geeft gewoon geen melding ook al ben ik Member of admin ik kan altijd in dat ingestelde forum posten maar dat moet dus niet mogelijk zijn omdat dat forum de status 2 heeft dus alleen voor admins.

Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Voeg deze regel toe:
PHP:
11
echo $membergetal."<".$forumgetal."=".($membergetal<$forumgetal);

Als daar "1<2=false" uitrolt heeft Marc4U gelijk en heb je een typeprobleem. Anders (65536<2=false) heb je een probleem met je data. Anders (1<2=true) is er iets fout met je die-statement. Anders...

Ik snap wel wat je zegt, maar dit is standaard debugwerk: een vergelijking met twee variabelen geeft niet het gewenste resultaat. Zorg dan dat je weet (1) wat er in die variabelen staat en (2) hoe ze vergeleken worden. Beide weet je wel op gebruikersniveau, maar niet op programmeursniveau - en da's een aardige manier om je te vertellen dat je de taal niet beheerst. Bovendien verstrek je geen gegevens (databasedumpje, of resultaat van de queries als je ze rechtstreeks aan de database voert, bijvoorbeeld, of na elke regel een echo die alle gebruikte variabelen ff op het scherm dumpt) waarmee iemand je kan helpen.

Zoals het er nu voorstaat, is dit een "debug deze code maar eventjes"-topic. Probeer d'r nou efkes wat van te maken, want zo komen we nergens. (edit: al was het maar omdat niemand de parametrisatie van deze code kan reproduceren)

Oh, en gebruik alsjeblieft eens wat leestekens, want je produceert nu zwaar ambigue tekst.

[ Voor 8% gewijzigd door Rataplan op 10-05-2003 00:25 ]


Journalism is printing what someone else does not want printed; everything else is public relations.

Pagina: 1