Ik ben enorm aan het aftasten wat ik kan met PHP en loop tegen wat vragen aan.
Een groot aantal barieres heb ik kunnen oplossen door de PHP beginnerstutorial, maar daar komen me nog wat teveel "vanzelfsprekendheden" in voor, waardoor ik nog niet precies weet wat welke functie nou precies doet.
Niet helemaal ten nadele van de schrijver. Er is wel veel goeds uit te halen.
Ik zal een paar drempels opsommen.
Misschien dat men mij daarin verder wil helpen. :-)
-Moet ik een geheugenpositie eerst declareren voor ik er in kan schrijven?
Ik bedoel, als ik een waarde heb, en ik wil die vermenigvuldigen met bv 3, kan ik die waarde in een variabele stoppen toch?
Moet ik die variabele dan eerst "aanmaken"?
-Als ik in een formulier waarden (laat) invullen, en ik post die bij een submit naar een verwerkpagina, wil ik die $_post overzetten naar een variabele zodat ik daarmee kan rekenen. (zie bovengenoemde, eerste vraagstukje :-) )
Hoe zet ik die over?
Ik kan natuurlijk die oorspronkelijk ingevoerde waarde wel "echoen" ( echo $_POST ['niks1']; )
Maar stel dat ik die waarde 'niks1' wil vermenigvuldigen met een andere variabele?
En later deze zelfde waarde 'niks1' nogmaals gebruiken. Dan zal ik die waarde eerst moeten opslaan.
Hoe doe ik zoiets??
-ik kan zo niet op mijn derde dilemma komen. Tot zover waarschijnlijk genoeg om op door te broeden. ;-)
Ja.
<?php
// Dit geeft notice meldingen
echo $var1 + $var2;
// en dit ook
$var3 = $var1 + $var2;
// Logisch, want $var1 en $var2 bestaan niet
// $var3 = 0
?>
<?php
// Dit is oke
$var1 = 5;
$var2 = 7;
echo $var1 + $var2;
// en dit ook
$var3 = $var1 + $var2;
// $var3 is 12
?>
$_POST['getal'] is al een variabele en kan je gewoon gebruiken.
Wil je hier mee rekenen dan kan dit zonder het origineel te wijzigen bv. in een echo.
Als je de berekening wilt onthouden stop je het in een nieuwe variabele.
$berekening = $_POST['getal'] + 20;
Dit heeft mij veel geholpen. Daar staat onder het kopje 'php forms' (links in het menu) 5 links die je kan doorlopen waarna je een gevalideerd formulier met output hebt.
Bedoel het is niet echt helemaal antwoord op je vraag over het aanmaken van een variabele en optellen van waarden binnen variabelen, maar omdat je die vragen stelde lijkt het me dat dit sowieso nogal nuttig voor je is/kan zijn.
Edit: hele php tutorial van w3schools ben ik trouwens bijlangs gegaan, vond het erg leerzaam en duidelijk. Voor sommige andere dingen heb ik youtube clipjes opgezocht. En hier gevraagd als iets me echt niet lukte :)
OK, tot zover duidelijk.
Ik kende ook een BASIC programmeertaal waarbij ik inderdaad eerst een Variabele moest aanmaken (zelfs met de omvang ervan. Een bit, Nibble of Byte. Jaja... :-) )
Maar goed.
Hoe kan ik dan de ingegeven waarde uit het formulier gebruiken in de formule met de PHP code?
Ik weet dat ik moet "submit"ten om de gegevens in de variabele(?) te posten.
Maar hoe pak ik die dan weer op?
En hoe zet ik die $_post variabele om in een andere waarde om mee te rekenen?
benadering van Ariën kan ook, maar met de filter_input() dwing je jezelf een beetje om na te denken over de vraag: wat voor soort waarde verwacht ik hier? In mijn voorbeeld zeg ik dat ik een geheel getal wil hebben.
(en hij struikelt niet over een missend veld.)
Vandaar dat ik afgestapt ben van het direct gebruiken van $_POST['invoer']
Op het moment dat je filter_var gaat gebruiken moet je wel héél goed doorhebben wat er allemaal gebeurt / kan gebeuren.
Alle superglobals ($_GET, $_POST etc.) zijn (geneste) arrays met strings.
filter_var() levert één van de volgende resultaten op:
* indien de validatie slaagt retourneert deze een resultaat van een type dat overeenkomt met de filter
Als $_POST['invoer'] de waarde 12 had (strict genomen dus '12', een string) dan bevat $var1 na afloop de waarde 12 van het type integer
* indien de validatie mislukt retourneert de functie FALSE
* indien de validatie niet uitgevoerd kon worden, bijvoorbeeld omdat $_POST['invoer'] niet bestond, retourneert de functie NULL (mogelijk hangt dit van de PHP versie af? ik zie zo gauw geen flags voor FILTER_VALIDATE_INT?)
Er wordt dus volop gejongleerd met verschillende typen, terwijl PHP van zichzelf minder strict is. Mogelijk is er dus helemaal geen realisatie van het bovenstaande.
(en hij struikelt niet over een missend veld.)
Afhankelijk van hoe je de controle uitvoert met filter_var() kan dit tot gevolg hebben dat het onderscheid tussen de laatste twee bovenstaande gevallen verloren gaat (betrof het een validatie die mislukt, of een validatie die niet uitgevoerd kon worden?). En dit kan weer tot gevolg hebben dat je het probleem op de verkeerde plek aan het zoeken bent wanneer er iets fout gaat en je dit probeert te debuggen.
filter_input() is trouwens licht anders dan filter_var().
Het onderscheid tussen 12 en "12" heb ik in mijn toepassingen weinig of eigenlijk geen last van gehad.
Ik vind vooral de alles-in-een eigenschap handig: niet eerst isset() en dan een check met ctype_digit() of een regex om te kijken of het een url of mailadres is, is veel meer typwerk dan filter_input().
Maar zoals met alle functies: je kunt het ook verkeerd toepassen.