Nieuw hier, 1e post, 1e vraag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oscar Moerman

Oscar Moerman

22/06/2024 00:31:39
Quote Anchor link
Best php vriendjes. Ik heb besloten om mijzelf php te gaan leren. Ik programmeer al vele jaren op hobby niveau in Delphi, en ben bekend met HTML en CSS. Om dingen online te maken of een koppeling daarmee leek php mij wel een volgende stap. Boek gekocht ( https://phpandmysql.com/ ) deze moet ik nog doorwostelen maar ondertussen zelf al begonnen met een project...(om de leercurve te verkleinen)

Wellicht maak ik het mij al meteen te moeilijk, maar ik ben OOP (object georiënteerd programmeren) gewent.. in php werkt dat blijk baar anders. Dus ik leg jullie het probleem (uitdaging ! )_ voor :

Ik wil een functie uit een php- bestand uitvoeren via een Form in HTML.

In php bestand "Berekeningen.php" heb ik de volgende code :


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

Function Vergistingsgraad($BeginSg,$EindSG){
  if ($BeginSG < "1000") {
  $SVG = 0;
  Echo "Het Begin SG moet groter dan 1000 zijn !";
  }

  Else {
  $SVG = (($BeginSg - $EindSg)/($BeginSg-1000))*100;
  return $SVG;
  }}


?>


Met deze functie wil ik een percentage berekenen. De gebruiker voert bijvoorbeeld in : 1050 voor BeginSG en 1010 voor Eind SG (Verschil is 40)


Vervolgens heb ik een Index.php voor het uitvoeren van het formulier. De inhoud ziet er zo uit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
<!DOCTYPE html>
<
html>
<
head>
  <
meta name="Internet lokatie" content="http://www.brouwvisie.nl">
  <
meta name="Author" content="Ozzie's php website versie 1.0">
  <
meta name="Generator" content="Edit Pad 3,5,1">
  <
meta name="robots" content="index","follow">
  <
meta name="Description" content="Dit is de 1e poging tot een php website">
  <
meta name="KeyWords" content="Bier,Brouwen,Bier brouwen">
  <
title>Ozzie's PHP brouw website</title>
</head>

<body>
  <h1>Welkom op mijn Pagina</h1>
  <p>U gebruikt de volgende Browser : <?php echo $_SERVER['
HTTP_USER_AGENT']; ?></p>

  <form method="post" action="<?php echo($_SERVER['
PHP_SELF']) ?>">
<?php
  require '
Berekeningen.php';
?>


  Begin SG: <input type="text" name="BeginSg">
  Eind SG : <input type="text" name="EindSg">
  Vergistingsgraad : <?php echo(Vergistingsgraad($BeginSg,$EindSg)) ?>
  <input name="berekenen" type="submit" value="berekenen">
  </form>  

</body>
</html>
?>


Uiteraard werk dit niet...maar hoe wel ? Ik wil dus de 2 variabelen die de gebruiker in voert, gebruiken in de formule/functie uit de "berekeningen.php" En de uitvoer het liefst in dezelfde pagina...

Hoe werkt dit in php ?

Alvast dank !!!
Gewijzigd op 22/06/2024 00:33:07 door Oscar Moerman
 
PHP hulp

PHP hulp

05/11/2024 15:39:19
 
- Ariën  -
Beheerder

- Ariën -

22/06/2024 00:40:20
Quote Anchor link
Eigenlijk is het een kwestie van debuggen door je variabelen even tijdelijk te echo'en of op een andere manier te outputten.

Want waar komen $BeginSg,$EindSg vandaan? Als dit uit je formulier komt, dan loop je iets van 22 jaar achter, omdat we al die tijd $_POST-variabelen gebruiken.
Gewijzigd op 22/06/2024 00:42:02 door - Ariën -
 
Oscar Moerman

Oscar Moerman

22/06/2024 00:54:04
Quote Anchor link
- Ariën - op 22/06/2024 00:40:20:
Want waar komen $BeginSg,$EindSg vandaan? Als dit uit je formulier komt, dan loop je iets van 22 jaar achter, omdat we al die tijd $_POST-variabelen gebruiken.


Ik begin net met php leren..dus ik loop nog niets achter..probeer alleen te ontdekken hoe e.a.a. werkt... :-)
 
- Ariën  -
Beheerder

- Ariën -

22/06/2024 01:00:36
Quote Anchor link
Die techniek door $BeginSg,$EindSg te gebruiken die uit je formulier komen zijn +/- 22 jaar uit PHP gehaald. Nu zijn dat dit: $_POST['BeginSg'] en $_POST['EindSg'].

Verder raad ik aan om ook te controleren of er een POST-actie plaats heeft gevonden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
    // op dit punt controleer je of het formulier is verstuurd, en zijn de $_POST variabelen beschikbaar.
}
?>
Gewijzigd op 22/06/2024 01:01:37 door - Ariën -
 

22/06/2024 20:07:12
Quote Anchor link
Het is misschien even wennen, maar PHP is geen Delphi. PHP is een scripttaal, dwz. instructies worden uitgevoerd door PHP en code wordt niet gecompileerd. Dat kan op 2 manieren:
- via de command line interface, door PHP aan te roepen met het scriptbestand dat je hebt geschreven
- via de FastCGI Process Manager, in combinatie met een webserver.

Aan je script te zien meng je HTML met PHP, en heb je dus een webserver nodig.
Via de browser vraag je aan de webserver om het PHP-script. Dat script (bv. "index.php") wordt eerst langs PHP-FPM gehaald, en het resultaat toont de webserver aan de browser.
PHP negeert alles wat er in de index.php staat, tot aan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php. Na ?>
negeert PHP weer alles.
En alles wat tussen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>
staat ziet PHP als instructies.
Dus wat je nu hebt staan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
<!DOCTYPE html>

...


?>

Is niet wat je wilt. De HTML doctype declaratie en HTML tags (alles tussen kleiner-dan en groter-dan tekens) en HTML tekst nodes gaat PHP niet voor je uitvoeren.

Het helpt als je PHP vraagt om fouten in de code te laten zien in de browser. Niet handig voor een live site, maar wel voor jouw project. Bijvoorbeeld door zo te beginnen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
declare(strict_types=1);

// jouw code hier

?>

En lees vooral dat boek eens even door, dit soort basic dingen horen er gewoon in te staan. Dan hoef je ook niet zo lang te wachten voordat je antwoord krijgt.
 



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.