Ga naar inhoud

Waarom werken mij if-statements nooit?


Aanbevolen berichten

Ik heb 2 pagina's. Een search forumulier en een 'laat zien pagina'. Als je op submit bij search drukt is het de bedoeling dat er via de laat zien page (screenshots.php) een aparte query wordt gedaan dan wanneer er gewoon screenshots.php wordt aangeroepen. Het script in screenshots.php moet hierachter komen door te kijken of $search de waarde 1 heeft. Dus: druk op submit is de url: screenshots.php?search=1 gewoon aanroepen is de utl: screenshots.php In screenshots.php heb ik de volgende functie maar het werkt niet echt. Elke keer, hoe je de page ook aanroept, hij voert altijd hetgene uit wat bij else staat. Blijkbaar is search dus altijd 1. :-? [code:1:eb672ed308]function select_entries ($start=0) { if ($search=1) { echo ('Search = 1'); // Dit is ter controle of de juiste query goed wordt uitgevoerd. if (empty($start)) { $start=0; } $query = "select * FROM screenshots WHERE authorised=1 ORDER BY game desc LIMIT $start, " . PAGE_LIMIT; $result = mysql_query($query); return($result); } else { echo ('Search = empty'); // Dit is ter controle of de juiste query goed wordt uitgevoerd. if (empty($start)) { $start=0; } $query = "select * FROM screenshots WHERE authorised=1 ORDER BY no desc LIMIT $start, " . PAGE_LIMIT; $result = mysql_query($query); return($result); } } [/code:1:eb672ed308] Ik ben hier al uren zoet mee geweest maar op de een of ander manier heb ik altijd problemen met if/else statements. Wie helpt mij verder? :cry:
Link naar reactie
[quote:6a3d2d47de="Cmdr Chakotay"]Blijkbaar is search dus altijd 1. :-? [/quote:6a3d2d47de] Klopt want je zegt hier : [quote:6a3d2d47de="Cmdr Chakotay"]if ($search=1)[/quote:6a3d2d47de] oftewel "als $search geef waarde 1" dus altijd 1 Wat jij wilt is "als $search is gelijk aan 1" if ($search[b:6a3d2d47de]==[/b:6a3d2d47de]1)
Link naar reactie
Daarnaast nog de twee volgende punten:[list:7a6470839d][*:7a6470839d]Je moet de waarde van $search waarschijnlijk bepalen door hem op te vragen via $_GET["search"].[*:7a6470839d]Als je dit doet buiten de functie om dan moet je $search binnen de functie eerst op global zetten, anders valt deze buiten de scope.[/list:u:7a6470839d]Hopelijk heb je er wat aan. - Bas
Link naar reactie
[quote:dda4f3b182="bosjvd"][quote:dda4f3b182="Cmdr Chakotay"]Blijkbaar is search dus altijd 1. :-? [/quote:dda4f3b182] Klopt want je zegt hier : [quote:dda4f3b182="Cmdr Chakotay"]if ($search=1)[/quote:dda4f3b182] oftewel "als $search geef waarde 1" dus altijd 1 Wat jij wilt is "als $search is gelijk aan 1" if ($search[b:dda4f3b182]==[/b:dda4f3b182]1)[/quote:dda4f3b182] Ok, dat heb ik gedaan maar nu komt het volgende probleem. Wat je nu ook doet, hij blijft zeggen dat search altijd leeg is. Hij voert nu dus altijd hetgeen uit wat bij else staat. :roll: Ik denk dat dit wel zal helpen maar: [quote:dda4f3b182="BasHamar"]Je moet de waarde van $search waarschijnlijk bepalen door hem op te vragen via $_GET["search"].[/quote:dda4f3b182] Wordt het dan zo? [code:1:dda4f3b182]if ($_GET["search"]==1) { }[/code:1:dda4f3b182] [quote:dda4f3b182="BasHamar"]Als je dit doet buiten de functie om dan moet je $search binnen de functie eerst op global zetten, anders valt deze buiten de scope.[/quote:dda4f3b182] Ok, sorry, maar hier snap ik ff niks van. Kun je het misschien iets duidelijker uitleggen? ;) [size=9:dda4f3b182](Ligt aan mij hoor)[/size:dda4f3b182]
Link naar reactie
[quote:cdc1e1b1f3="Cmdr Chakotay"][quote:cdc1e1b1f3="BasHamar"]Als je dit doet buiten de functie om dan moet je $search binnen de functie eerst op global zetten, anders valt deze buiten de scope.[/quote:cdc1e1b1f3] Ok, sorry, maar hier snap ik ff niks van. Kun je het misschien iets duidelijker uitleggen? ;) [size=9:cdc1e1b1f3](Ligt aan mij hoor)[/size:cdc1e1b1f3][/quote:cdc1e1b1f3] Lees het [url=http://www.php.net/manual/en/language.variables.php]hoofdstuk over variabelen[/url] uit de manual van PHP een keer goed door (m.n. de onderdelen over [b:cdc1e1b1f3]variable scope[/b:cdc1e1b1f3] en [b:cdc1e1b1f3]variables from outside PHP[/b:cdc1e1b1f3]). Als je dan nog vragen hebt dan horen we het wel.
Link naar reactie
[quote:bf378f0240="bosjvd"]Probeer dit eens : Vervang: [code:1:bf378f0240]function select_entries ($start=0) { if ($search==1) { [/code:1:bf378f0240]Door:[code:1:bf378f0240]function select_entries ($start=0) { global $search; if ($search==1) { [/code:1:bf378f0240][/quote:bf378f0240] Ja dat werkte! Dank je wel. :) Dus zodra een variabele door het hele document nodig is, is het de bedoeling dat er bijvoorbeeld aan het begin global $var1, $var2, etc; staat?
Link naar reactie
[quote:e30cd8b2a2="Cmdr Chakotay"]Dus zodra een variabele door het hele document nodig is, is het de bedoeling dat er bijvoorbeeld aan het begin global $var1, $var2, etc; staat?[/quote:e30cd8b2a2]Het is niet helemaal juist... Als je binnen PHP een variabele declareert dan heeft deze een bepaalde "scope", een bereik waarbinnen deze is aan te roepen. Een functie heeft zijn eigen scope en kan variabelen buiten de functie dus niet "zien" zodat je binnen de functie evt dezelfde namen kunt gebruiken. Wil je toch een variabele buiten de scope aanroepen dan moet je deze [b:e30cd8b2a2]binnen[/b:e30cd8b2a2] de functie op global zetten zoals hiervoor al is genoemd. Ik hoop dat dit het een en ander verheldert. - Bas
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...