Vraag & Antwoord

Webprogrammeren & scripting

Waarom werken mij if-statements nooit?

10 antwoorden
  • 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:
  • [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)
  • 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
  • [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]
  • [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.
  • Probeer dit eens : Vervang: [code:1:1f2b7b086d]function select_entries ($start=0) { if ($search==1) { [/code:1:1f2b7b086d]Door:[code:1:1f2b7b086d]function select_entries ($start=0) { global $search; if ($search==1) { [/code:1:1f2b7b086d]
  • [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?
  • Kan, maar dat hoeft niet. $_GET["search"] zou ook gewoon moeten werken. Met GET verwijs je naar een var die aan de url is meegegeven. Zie www.php.net voor meer info, maar dat was geloof ik al eerder genoemd :)
  • [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
  • Ik kan alleen maar zeggen: ik snap het. :) Dank jullie wel voor jullie hulp.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.