Enkele vragen mbt het verwerken van gegevens uit een formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Fanto Green

fanto Green

22/02/2016 22:14:52
Quote Anchor link
Hallo mensen,

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. ;-)

In ieder geval bedankt voor de hulp.
 
PHP hulp

PHP hulp

26/12/2024 17:58:28
 
- SanThe -

- SanThe -

22/02/2016 23:17:00
Quote Anchor link
Fanto Green op 22/02/2016 22:14:52:
Moet ik die variabele dan eerst "aanmaken"?


Ja.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// Dit geeft notice meldingen
echo $var1 + $var2;
// en dit ook
$var3 = $var1 + $var2;
// Logisch, want $var1 en $var2 bestaan niet
// $var3 = 0

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?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;
 
Fanto Green

fanto Green

24/02/2016 21:58:00
Quote Anchor link
Tot zover bedankt.
Ik ga er morgen even effectief mee bezig.
 
L deB

L deB

25/02/2016 10:22:51
Quote Anchor link
http://www.w3schools.com/php/php_forms.asp

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 :)
Gewijzigd op 25/02/2016 10:30:07 door L deB
 
Ivo P

Ivo P

25/02/2016 10:40:34
Quote Anchor link
- SanThe - op 22/02/2016 23:17:00:
Fanto Green op 22/02/2016 22:14:52:
Moet ik die variabele dan eerst "aanmaken"?


Ja.



Niet helemaal.
Een variabele moet bestaan, wil je eruit kunnen lezen. Dat is wat het eerste voorbeeld (echo $var1 + $var2) doet.

Maar schrijven kan zondermeer:

$var4 = 12;

Dit zal de variabele aanmaken.
Verschillende andere talen kunnen ook niet in een variabele schrijven als die niet vooraf gedeclareerd is.

bijvoorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
DECLARE var4 INT
var4 = (SELECT 1 FROM dual);


In php wordt zo'n variabele direct aangemaakt.

Nadeel is dat

$var4 = 12;
en verderop
$Var4 = 20;
gewoon een 2e variabele introduceert (met hoofdletter V) terwijl je mogelijk verwachtte de $var4 te overschrijven.
 
Jan R

Jan R

26/02/2016 07:05:00
Quote Anchor link
Ivo P op 25/02/2016 10:40:34:

$var4 = 12;
en verderop
$Var4 = 20;
gewoon een 2e variabele introduceert (met hoofdletter V) terwijl je mogelijk verwachtte de $var4 te overschrijven.


(Visual) Basic is nog gemakelijker:) Dit is hoofdletter ONgevoelig
 
Fanto Green

fanto Green

29/02/2016 15:59:43
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

29/02/2016 16:02:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// hiermee controleren we of er een POST-request is gestuurd via een formulier.
if($_SERVER['REQUEST_METHOD']=="POST") {

// hiermee tonen we de <input...> met als name 'voornaam'.  
echo $_POST['voornaam'];
}

?>
Gewijzigd op 29/02/2016 16:03:06 door - Ariën -
 
Ivo P

Ivo P

29/02/2016 16:11:21
Quote Anchor link
bovenin het script dat je aanroept:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {

   $var1 = filter_input(INPUT_POST, 'invoer', FILTER_VALIDATE_INT);

}

?>


na bijvoorbeeld een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<form method="post" action="">
<input type="text" name="invoer">
</form>


Toevoeging op 29/02/2016 16:14:15:

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']
 
Thomas van den Heuvel

Thomas van den Heuvel

29/02/2016 16:47:09
Quote Anchor link
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.

Quote:
(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.
Gewijzigd op 29/02/2016 16:47:59 door Thomas van den Heuvel
 
Ivo P

Ivo P

29/02/2016 17:57:44
Quote Anchor link
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.
 
Fanto Green

fanto Green

29/02/2016 21:33:01
Quote Anchor link
Eeehh...
Mensen, ik wil het graag blijven begrijpen.
Ik hoop dat in mijn startpost of uit mijn reacties duidelijk wordt dat ik ABSOLUUT een leek ben.
Filters en zo... Dat zal allemaal wel en ik geloof jullie absoluut, maar die noodzaak is er nu nog niet.
Dwz... Ik wil alleen eerst eens zien of ik iets uit een formulier kan doorzetten naar en aantal rekensommen.
Ik weet wat ik invoer en trust me, als dat werkt ga ik hem helemaal over de kop stressen om te zien hoe ik dat kan oplossen.

Maar voor eerst...
De mogelijkheid om een ingevulde waarde naar een .php bestand te krijgen om het te bewerken. :-)

Toevoeging op 29/02/2016 21:37:02:

- Ariën - op 29/02/2016 16:02:45:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// hiermee controleren we of er een POST-request is gestuurd via een formulier.
if($_SERVER['REQUEST_METHOD']=="POST") {

// hiermee tonen we de <input...> met als name 'voornaam'.  
echo $_POST['voornaam'];
}

?>


tot zover had ik het ook goed, Ariën

Maar nu de $_post ook zien over te zetten naar een variabele.



Toevoeging op 29/02/2016 21:43:25:

kijk, dit is nu een stukje van de code.
Ik haal dit uit het formulier en wil de inhoud van variabele "niks1" bv overzetten naar een nieuwe variabele.

Ik doe dat hieronder fout, zover was ik al. Maar hoe het wel moet weet ik ook niet.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
          echo $_POST ['niks1'];
        echo $_POST ['niks2'];
        $_eerste = ($_POST['niks1']);
Gewijzigd op 29/02/2016 21:44:24 door fanto Green
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/03/2016 15:09:36
Quote Anchor link
$_POST is ook een variabele. In principe is er meestal geen noodzaak om deze in een andere variabele te kopiëren.
Daarnaast is $_POST altijd een associatieve array.

om het geheel wat transparanter voor jezelf te maken kun je gewoon in één keer de hele $_POST array op je scherm knallen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
    // show me what's inside the $_POST array:
    echo '<pre>' . print_r($_POST, TRUE) . '</pre>';
}

?>
 
Fanto Green

fanto Green

01/03/2016 15:35:35
Quote Anchor link
Kijk, dit gaat dus al boven mijn pet...
Ik kan met de tijd wel met arrays gaan werken, maar ik wil vooralsnog graag een waarde uit het formulier overzetten naar formulier om daar eea mee te berekenen.
Ik weet niet hoe ik dat doe behalve het posten uit het formulier en het requesten in de andere PHP pagina.
Ik weet alleen niet hoe ik die variabelen kan overzetten in een nieuwe variabele.
Extreem basaal, maar ik weet al niet eens hoe dat moet.
Zie mijn stukje code in mijn voorgaande post. :-)

Toevoeging op 01/03/2016 15:38:32:

Frank Nietbelangrijk op 01/03/2016 15:09:36:
$_POST is ook een variabele. In principe is er meestal geen noodzaak om deze in een andere variabele te kopiëren.


Nee, maar in dit geval dus wel.
Er zijn ongetwijfeld legio oplossingen te vinden, die allemaal complexer zijn.
Maar nu even niet.

Mijn stukje code uit mijn voorgaande post werkt niet.
Ik wil alleen de inhoud van variabele "niks1" overzetten naar een andere variabele.
 
Ivo P

Ivo P

01/03/2016 15:40:27
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $eerste = $_POST['niks1']; ?>


dit zou moeten werken: als $_POST['niks'] bestond, dan zit zijn waarde nu ook in $eerste.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $eerste; ?>
zou dat moeten aantonen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/03/2016 15:46:51
Quote Anchor link
$_POST is een array. Je werkt dus al met een array, of je wil of niet.

Maar het antwoord op jouw vraag:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
    $niks = $_POST['niks'];
    echo $niks;

    // maar dan had je net zo goed kunnen doen:
    echo $_POST['niks'];
}

?>



Toevoeging op 01/03/2016 15:50:03:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
    $a = $_POST['a'];
    $b = $_POST['b'];
    $totaal = $a + $b;
    echo $totaal;

    // maar dan had je net zo goed kunnen doen:
    $totaal = $_POST['a'] + $_POST['b'];
    echo $totaal;
}

?>
 
Fanto Green

fanto Green

01/03/2016 16:27:00
Quote Anchor link
True...
Maar wat dan als ik de variabele uit het formulier meermalen wil gebruiken?
Puur hypothetisch.

Het gaat mij erom dat ik leer hoe ik gegevens uit een formulier wegzet in variabelen waar ik later mee ga rekenen.
Dat is me nu goed uitgelegd.
Ik dacht namelijk dat het fenomeen "$_Post" een begrip was voor variabelen (arrays, wat je wilt) uit het formulier.

Vanavond weer even achter de PC kruipen.

Toevoeging op 01/03/2016 16:29:50:

Is een string ($) een duiding van een array? of van een variabele?
 
- SanThe -

- SanThe -

01/03/2016 16:30:50
Quote Anchor link
Een POST-variabele bestaat alleen op de pagina waarnaar het formulier wordt verstuurd.
Je kan daar de POST-var zo vaak als je wilt gebruiken zolang je de POST-var zelf maar geen andere waarde geeft.
 
Ivo P

Ivo P

01/03/2016 16:33:55
Quote Anchor link
Een string is een reeks tekens. Bijvoorbeeld "abc" of "ab34$$32"

Een integer is een geheel getal: Bijvoorbeeld 12 of 42 of -9

En zo heb je ook booleans: True of False.

En nog een stel typen variabele
http://php.net/manual/en/language.types.php

http://www.w3schools.com/php/php_datatypes.asp

Een array bevat een serie waarden, al dan niet van 1 type.


----

over het deel van je vraag "als ik ze vaker nodig heb"

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$dubbele
= $_POST['niks'] * 2;
$helft = $_POST['niks'] / 2;

$opgeteld = $_POST['niks'] + $_POST['niks2'];
?>
 
- SanThe -

- SanThe -

01/03/2016 16:34:49
Quote Anchor link
Fanto Green op 01/03/2016 16:27:00:
Is een string ($) een duiding van een array? of van een variabele?


Een array is ook een variabele, alleen met meerdere waarden.

Dus beiden beginnen met $.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// tekst
$variabele = 'tekst';
// getal
$anderevar = 123;
// array met twee elemementen
$array = array('tekst', 123);
// enzovoort
?>
 
Fanto Green

fanto Green

01/03/2016 16:36:35
Quote Anchor link
Top!
Even weer wat input om in me op te nemen.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.