Archief - knop drukken counter--; werkt niet

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KingOfWoods

Legacy Member
Code:
if(isset($_POST['submit'])) {
	launchAngryBird();
}

function launchAngryBird(){
	static $counter = 8;
	
	echo $counter;
	$counter--;
}

Het zal waarschijnlijk iets dom zijn, maar telkens ik op mijn submit druk krijg ik "8" geëchood. Ik veronderstelde dat het 8 7 6 5 4 3 2 1 enz zou geven bij elke druk, maar hij blijft dus 8. Iemand een idee?

thx

Dieterg

Legacy Member
Logische fout toch ze! Je gaat die variable telkens opnieuw declareren bij het aanroepen van uw functie. Je moet die variable dus buiten uw functie declareren.

YaMo

Legacy Member
Mam zei:
Logische fout toch ze! Je gaat die variable telkens opnieuw declareren bij het aanroepen van uw functie. Je moet die variable dus buiten uw functie declareren.

Dat gaat volgens mij ook niet werken. Elke keer je op de knop drukt gaat dat script opnieuw uitgevoerd worden en die variabele dus weer op 8 gezet worden.
Voor zulke dingen moet je een sessie ofzo gebruiken.

edit:
En blijkbaar zorgt het static keyword ervoor dat die declaratie alleen de eerste keer uitgevoerd wordt, waardoor het dus sowieso niet nodig is de variabele buiten de function te declareren.
http://php.net/manual/en/language.variables.scope.php#language.variables.scope.static

Dieterg

Legacy Member
YaMo zei:
Dat gaat volgens mij ook niet werken. Elke keer je op de knop drukt gaat dat script opnieuw uitgevoerd worden en die variabele dus weer op 8 gezet worden.
Voor zulke dingen moet je een sessie ofzo gebruiken.

Idd, dat is ook waar :-). Ik zal eens een voorbeeldje maken om men foutje goed te maken :).

edit: van die static, dat wist ik niet.
edit2: Zoiets dus:
PHP:
<?php
session_start();
if(! isset($_SESSION["getal"])) {
	$_SESSION["getal"] = 8;
}


if(isset($_POST["submit"])) {
	launchAngryBird();
}

function launchAngryBird() {
	echo $_SESSION["getal"];
	$_SESSION["getal"]--;
}
?>

KingOfWoods

Legacy Member
Merci mannen. In Sessions ben ik nog niet zo thuis. Opleiding PHP aan het volgen voor de moment en we zijn net bij static en global vars terecht gekomen.

Die knop hebben we nog niet gezien, het was eigenlijk de bedoeling dat we die functie gewoon lieten lopen bij het starten van de pagina, maar ik had graag wat meer controle ingebouwd dat ik beter voor mijn eigen kan volgen wanneer nu juist wat plaats vindt.

Merci alleszins.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan