<?php
$a=2;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$a++;
echo $a; // Dit is altijd 3. Bij elke pagina word $a = 2 gezet. Later word $a++ gedaan, wat 3 maakt.
// Hier je formulier
}
else
{
// en hier je fumulier
}
?>
Bij het (her)laden van je pagina zijn geen variabelen gezet. Variabelen worden dus niet opgeslagen en later herbruikt. Deze zul je dus in een database moeten opslaan of in een global-variabele meegeven (GET, POST, COOKIE of SESSION lijken mij de meest voor de hand liggende..)
Verder zou je het in het uiterste geval ook in een .txt-file kunnen opslaan, maar dat raad ik je niet aan.
Ik wil je nogmaals op deze reactie wijzen. Variabelen worden alleen binnen het uitvoeren van een script bewaard. Als een script is uitgevoerd, dan worden alle waarden 'vernietigd' en moeten ze opnieuw gezet worden. Waarden die onthouden moeten worden, moeten daarom worden opgeslagen.
Als dat zo is, dan zo simpel mogelijk.
Waarom raadt je een txt file niet aan? lekker simpel en het gaat alleen maar om het eenmalig uithalen van een waarde?
ok, duidelijk. Ik heb net ergens een tip gelezen om een apart php bestand aan te maken met de volgende code:
<?
$a = 2;
?>
En deze dan te includen. Zou dat werken?
[size=xsmall]Toevoeging op 14/09/2010 20:28:23:[/size]
Nee, werkt ook niet zie ik al, effect is hetzelfde.
Dit zou werken, als je dit PHP-bestandje dan telkens zou bewerken. Dit betekend dat je de 2 zou moeten vervangen door een ander getal. Dit is eigenlijk precies hetzelfde idee als een .txt-file, op het fijt na dat dit niet gelezen hoeft te worden als bestand en door derden ook niet als bestand gelezen kan worden.
Daarbij komt dat PHP meerdere scripts te gelijk uitvoert. Dit betekend dat als je het script hebt:
<?php
include('a_save.php'); // $a = 5; (zojuist gezet in a_save.php).
$newFile = '<?php'.PHP_EOL.'$a = '.($a+1).';'.PHP_EOL.'?>'; // PHP_EOL is een enter
?>
Als PHP door meerdere gebruikers tegelijk opgevraagd word, zorgt hij er niet voor dat hij eerst één script afmaakt en dan de volgende, maar hij werkt tegelijk. In bovenstaande code bedoel ik even met de variabele $newFile dat deze waarde naar het bestand a_save.php gezet word.
<?php
include('a_save.php'); # Gebruiker 1. $a = 5;
include('a_save.php'); # Gebruiker 2. $a = 5;
$newFile = '<?php'.PHP_EOL.'$a = '.($a+1).';'.PHP_EOL.'?>'; # Gebruiker 1. $a = 6
$newFile = '<?php'.PHP_EOL.'$a = '.($a+1).';'.PHP_EOL.'?>'; # Gebruiker 2. $a = 6
?>
$a zou nu 7 moeten zijn, maar deze is nog steeds 6. Ik hoop dat je begrijpt wat ik bedoel.
Een database handelt alles stuk voor stuk af...
Je slaat je waarde ook nergens op.
De $newFile - zoals ik het heb neergezet - is een variabele en word dus ook verwijderd. Maar de waarde van deze variabele zou je in de file a_save.php kunnen zetten.
Mag ik vragen waarvoor je het wilt gebruiken?
Hier een simpel voorbeeld van wat je met een database zou kunnen doen.
<?php
// Ophalen van $a
$query = mysql_query("SELECT a FROM count WHERE what = 'formulier'");
$result = mysql_fetch_assoc($query);
$a = $result['a']; // zinloze stap, maar wel verduidelijkend in dit voorbeeld.
// Bewerken van $a
mysql_query("UPDATE count SET a = (a+1) WHERE what = 'formulier'");
?>
Je kunt ook alle velden van je formulier in de database opslaan. Als je dan alle rijen optelt d.m.v. COUNT(*) AS a dan krijg je ook het goede getal.