Te groot bestelformulier?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

Pascal van der Zwalm

Pascal van der Zwalm

29/09/2009 23:52:00
Quote Anchor link
Ik ben al enkele weken het internet af aan het struinen om mijn bestelformulier werkend te krijgen. Ik kwam hier op het forum de beginnershandleiding php tegen en heb deze doorgenomen. Met alles wat ik had gelezen op het internet heb ik vervolgens wat in elkaar gezet.

Hoe ziet het formulier eruit? http://www.passieenfotografie.nl/Bestelinformatie/Formulier.htm

Wat is het doel? Klanten kunnen hun fotobestelling doen, drukken op verzenden en ik wil dat een mailtje krijgen met de inhoud van het formulier (in ongeveer dezelfde layout van het formulier). Dit leek mij niet zo moeilijk...

Hoe ziet het php deel eruit?

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
$Voornaam
= $_POST["Voornaam"];
$Achternaam = $_POST["Achternaam"];
$Adres = $_POST["Adres"];
$Huisnr = $_POST["Huisnr"];
$Postcode = $_POST["Postcode"];
$Plaats = $_POST["Plaats"];
$Email = $_POST["Email"];
$Evenement1 = $_POST["Evenement1"];
$Evenement2 = $_POST["Evenement2"];
$Evenement3 = $_POST["Evenement3"];
$Evenement4 = $_POST["Evenement4"];
$Evenement5 = $_POST["Evenement5"];
$Evenement6 = $_POST["Evenement6"];
$Evenement7 = $_POST["Evenement7"];
$Evenement8 = $_POST["Evenement8"];
$Evenement9 = $_POST["Evenement9"];
$Evenement10 = $_POST["Evenement10"];
$Fotonr1 = $_POST["Fotonr1"];
$Fotonr2 = $_POST["Fotonr2"];
$Fotonr3 = $_POST["Fotonr3"];
$Fotonr4 = $_POST["Fotonr4"];
$Fotonr5 = $_POST["Fotonr5"];
$Fotonr6 = $_POST["Fotonr6"];
$Fotonr7 = $_POST["Fotonr7"];
$Fotonr8 = $_POST["Fotonr8"];
$Fotonr9 = $_POST["Fotonr9"];
$Fotonr10 = $_POST["Fotonr10"];
$Optie1 = $_POST["Optie1"];
$Optie2 = $_POST["Optie2"];
$Optie3 = $_POST["Optie3"];
$Optie4 = $_POST["Optie4"];
$Optie5 = $_POST["Optie5"];
$Optie6 = $_POST["Optie6"];
$Optie7 = $_POST["Optie7"];
$Optie8 = $_POST["Optie8"];
$Optie9 = $_POST["Optie9"];
$Optie10 = $_POST["Optie10"];
$Aantal1 = $_POST["Aantal1"];
$Aantal2 = $_POST["Aantal2"];
$Aantal3 = $_POST["Aantal3"];
$Aantal4 = $_POST["Aantal4"];
$Aantal5 = $_POST["Aantal5"];
$Aantal6 = $_POST["Aantal6"];
$Aantal7 = $_POST["Aantal7"];
$Aantal8 = $_POST["Aantal8"];
$Aantal9 = $_POST["Aantal9"];
$Aantal10 = $_POST["Aantal10"];
$Formaat1 = $_POST["Formaat1"];
$Formaat2 = $_POST["Formaat2];
$Formaat3 = $_POST["
Formaat3"];
$Formaat4 = $_POST["
Formaat4"];
$Formaat5 = $_POST["
Formaat5"];
$Formaat6 = $_POST["
Formaat6"];
$Formaat7 = $_POST["
Formaat7"];
$Formaat8 = $_POST["
Formaat8"];
$Formaat9 = $_POST["
Formaat9"];
$Formaat10 = $_POST["
Formaat10"];

if (!$Email) {
echo "
U heeft geen e-mailadres ingevuld!";
exit; }

if (!$Achternaam) {
echo "
U heeft geen achternaam ingevuld!";
exit; }

if (!$Voornaam) {
echo "
U heeft geen Voornaam ingevuld!";
exit; }

if (!$Plaats) {
echo "
U heeft geen woonplaats ingevuld!";
exit; }

else {

$tijd = time();
$datum = strftime("
%d/%m/%y %H:%M", $tijd);
$ip = getenv("
REMOTE_ADDR");
$message = "" . $Voornaam . "
stuurde het volgende berich:

_____________________________________________
Adresgegevens:
" . $Voornaam . " " . $Achternaam . "
" . $Ardes . " " . $Huisnr . "
" . $Postcode . " " . $Plaats . "


Emailadres: " . $Email . "

Betelling:
---------------------------------------------------------------------------------------------------------------------

        Evenement:            Fotonummer:        Glanzend/mat    Aantal:            Formaat
1. " . $Evenement1 . "            " . $Fotonr1 . "    " . $Optie1 . "    " . $Aantal1 . "            " . $Formaat1 . "
2. " . $Evenement2 . "            " . $Fotonr2 . "    " . $Optie2 . "    " . $Aantal2 . "            " . $Formaat2 . "
3. " . $Evenement3 . "            " . $Fotonr3 . "    " . $Optie3 . "    " . $Aantal3 . "            " . $Formaat3 . "
4. " . $Evenement4 . "            " . $Fotonr4 . "    " . $Optie4 . "    " . $Aantal4 . "            " . $Formaat4 . "
5. " . $Evenement5 . "            " . $Fotonr5 . "    " . $Optie5 . "    " . $Aantal5 . "            " . $Formaat5 . "
6. " . $Evenement6 . "            " . $Fotonr6 . "    " . $Optie6 . "    " . $Aantal6 . "            " . $Formaat6 . "
7. " . $Evenement7 . "            " . $Fotonr7 . "    " . $Optie7 . "    " . $Aantal7 . "            " . $Formaat7 . "
8. " . $Evenement8 . "            " . $Fotonr8 . "    " . $Optie8 . "    " . $Aantal8 . "            " . $Formaat8 . "
9. " . $Evenement9 . "            " . $Fotonr9 . "    " . $Optie9 . "    " . $Aantal9 . "            " . $Formaat19 . "
10. " . $Evenement10 . "            " . $Fotonr10 . "    " . $Optie10 . "    " . $Aantal10 . "            " . $Formaat10 . "


---------------------------------------------------------------------------------------------------------------------";

$mailadres = "
home@passieenfotografie.nl";
$message = str_replace ("
<br>","\n", $message);
  mail("
$mailadres", "Foto bestelling",
    $message, "
From: " . $Email . "");
    
echo "
Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.";
}

?>


Het probleem:
Het werkt wel, maar alleen met de eerste regel (bestelling 2 t/m 10 moet ik dan uit dit script verwijderen). Is hier een maximum aan verbonden, of zit ik helemaal verkeerd te denken?

Kan iemand mij een zetje in de goede richting geven??

Alvast bedankt!
 
PHP hulp

PHP hulp

19/04/2021 05:29:43
 
- Ariën -
Beheerder

- Ariën -

30/09/2009 00:10:00
Quote Anchor link
Waarom ga je eigenlijk 40 POST-variabelen onzinnig opslaan in een nieuwe variabele. Nergens voor nodig.

En controleer ook of mail() truew of false is. Nog beter gebruik je een mailclass like phpmailer of swiftmailer.
 
Michael -

Michael -

30/09/2009 00:42:00
Quote Anchor link
Ben 't met Aar eens, en op 50 mis je een ".
$Formaat2 = $_POST["Formaat2];
moet zijn
$Formaat2 = $_POST["Formaat2"];
En je beveiligd helemaal niks. Kwaadwillende code kan zo in de POST gestopt worden en worden uitgevoerd.
Haal regel 2 tm 59 gewoon weg, gebruik gewoon de $_POST variabelen in je script en beveilig deze met bij htmlentities, htmlspecialchars, mysql_real_escape_string, etc.

Edit:
Je kan natuurlijk heel makkelijk kijken of een veld ingevuld is:
if(isset($Evenement)) echo $Evenement;
En zo dus voorkomen dat er leegtes in je mail komen.
Gewijzigd op 01/01/1970 01:00:00 door Michael -
 
Jan Willem van der Veer

Jan Willem van der Veer

30/09/2009 09:03:00
Quote Anchor link
Quote:
$Voornaam = $_POST["Voornaam"];
$Achternaam = $_POST["Achternaam"];
$Adres = $_POST["Adres"];
(...)
$Formaat9 = $_POST["Formaat9"];
$Formaat10 = $_POST["Formaat10"];
Waarom kun je niet gewoon gewoon de $_POST[index]-variabelen gebruiken?

Daarnaast:
Quote:
$Optie1 = $_POST["Optie1"];
$Optie2 = $_POST["Optie2"];
$Optie3 = $_POST["Optie3"];
(...)
$Optie8 = $_POST["Optie8"];
$Optie9 = $_POST["Optie9"];
Zou ik voor dergelijke benamingen gewoon een array gebruiken. Dan kun je in je HTML de input gewoon Optie[] noemen. Dan wordt $_POST['Optie'] een array van 9 items lang...
Datzelfde geldt overigens voor Formaat1-10, Aantal1-10, Evenement1-10, Foto1-10. Het voordeel daarvan is ook dat je heel gemakkelijk in een lus kunt valideren.
Andere voordelen kunnen zijn dat je dan een random aantal bestellingen kunt doen (nu kun je er maximaal 10(. Je kunt met javascript dan gewoon weer een nieuwe rij voor een bestelling toevoegen als alle rijen opgebruikt zijn. En gezien de namen dan toch overal Optie[], Aantal[], Foto[] en Evenement[] heten, levert dat geen problemen op als je gewoon lekker clonet :)
 
Pascal van der Zwalm

Pascal van der Zwalm

30/09/2009 11:41:00
Quote Anchor link
Beadnkt allemaal voor de snelle reactie! De beveiliging is idd nog een item wat ik moet toevoegen.

@ Jan Willem: Je hebt inderdaad gelijk dat het 'mooier'is als je een soort onbegrenst formulier kunt maken. Alleen ik ben kwa kennis nog niet zo ver dat ik dat denk ik al kan maken. Ik wil eerst dit werkend hebben en dan weer doorgaan. Misschien kan je me wel op weg helpen met een voorbeeld array?
 
Jaron T

Jaron T

30/09/2009 11:59:00
Quote Anchor link
N.a.v. bovenstaande ben ik tot de conclusie gekomen dat je tabel structuur totaal niet in orde is.

google::normaliseren
Gewijzigd op 01/01/1970 01:00:00 door Jaron T
 
Pascal van der Zwalm

Pascal van der Zwalm

30/09/2009 12:13:00
Quote Anchor link
Jaron, ik heb het gezien, maar het gaat mij in eerste instantie erom dat het werkt.
Gewijzigd op 01/01/1970 01:00:00 door Pascal van der Zwalm
 
Jan Willem van der Veer

Jan Willem van der Veer

30/09/2009 12:59:00
Quote Anchor link
Quote:
N.a.v. bovenstaande ben ik tot de conclusie gekomen dat je tabel structuur totaal niet in orde is.

google::normaliseren
Tsjonge, jij hebt een goede glazen bol. In het hele stuk code wordt geen database gebruikt, maar jij ziet kans te concluderen dat men geen genormaliseerde tabellen gebruikt. Het enige wat ik uit de code haal is dat deze ronduit klote werkt en dat de TS beter af is bij een paar goede tutorials en/of boeken dan dit door te zetten.
 
Jaron T

Jaron T

30/09/2009 14:29:00
Quote Anchor link
Jan Willem van der Veer schreef op 30.09.2009 12:59:
Quote:
N.a.v. bovenstaande ben ik tot de conclusie gekomen dat je tabel structuur totaal niet in orde is.

google::normaliseren
Tsjonge, jij hebt een goede glazen bol. In het hele stuk code wordt geen database gebruikt, maar jij ziet kans te concluderen dat men geen genormaliseerde tabellen gebruikt. Het enige wat ik uit de code haal is dat deze ronduit klote werkt en dat de TS beter af is bij een paar goede tutorials en/of boeken dan dit door te zetten.


$Evenement1 = $_POST["Evenement1"];
$Evenement2 = $_POST["Evenement2"];
$Evenement3 = $_POST["Evenement3"];
$Evenement4 = $_POST["Evenement4"];
$Evenement5 = $_POST["Evenement5"];
$Evenement6 = $_POST["Evenement6"];
$Evenement7 = $_POST["Evenement7"];
$Evenement8 = $_POST["Evenement8"];
$Evenement9 = $_POST["Evenement9"];

Bijv:
Hoezo geen apperte tabel met evenementen ?
 
- SanThe -

- SanThe -

30/09/2009 15:15:00
Quote Anchor link
@Jaron: Dat stukje code dat jij nu geeft heeft, zoals Jan Willem reeds zei, inderdaad niks met een database te maken.
 
Jaron T

Jaron T

30/09/2009 15:35:00
Quote Anchor link
Ow verkeerd gelezen ;) Maar nog steeds onhandige manier van gegevens verwerken.
 
Jan Willem van der Veer

Jan Willem van der Veer

30/09/2009 16:21:00
Quote Anchor link
Quote:
Maar nog steeds onhandige manier van gegevens verwerken.
Yep, maar dat was al eerder geconcludeerd. Maar ik heb het idee dat de TS graag wil vasthouden aan het ideaal om één van zijn eerste scripts werkend te krijgen. En ik heb niet het idee dat zoiets het beste idee is.
 
Pascal van der Zwalm

Pascal van der Zwalm

30/09/2009 17:40:00
Quote Anchor link
Het is misschien niet de beste manier kom ik nu achter. Maar zou je dit beter aan kunnen pakken?

Zowieso natuurlijk die regels 2 tm 59 verwijderen en terug laten komen in de mail met een $_POST.

Jan willew, je hebt het in je post over die Arrey, heb je een voorbeeldje, dan ga ik daar vanavond mee aan de slag.
 
Michael -

Michael -

02/10/2009 18:50:00
Quote Anchor link
Pascal schreef op 30.09.2009 17:40:
Het is misschien niet de beste manier kom ik nu achter. Maar zou je dit beter aan kunnen pakken?

Zowieso natuurlijk die regels 2 tm 59 verwijderen en terug laten komen in de mail met een $_POST.

Jan willew, je hebt het in je post over die Arrey, heb je een voorbeeldje, dan ga ik daar vanavond mee aan de slag.

Anders zoek je gewoon even wat op over Array
Arrays zijn opzich niet moeilijk. Voorbeeldje wat je misschien kan gebruiken:
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
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{

  foreach($_POST['gegevens'] as $key=>$value)
  {

    echo $key.': '.$value.'<br>';
  }
}

echo '<form method="POST">';
for($i=0;$i<10;$i++)
{

echo '<input type="text" name="gegevens[]"><br>';
}

echo '<input type="submit">';
echo '</form>';
?>

Fouten voorbehouden.
Beveilig de POST nog wel even, en je kan eventueel nog controlen of 't $value gevuld is zodat ie geen lege velden toont.
 
Pascal van der Zwalm

Pascal van der Zwalm

02/10/2009 18:54:00
Quote Anchor link
Turmin, bedankt! Ik ben bezig om eerst even het formulier om te bouwen, zodat ik niet vast zit aan een vast aantal bestelde foto's.

BEdankt voor deze toevoeging, ik ga ermee aan de slag en hou jullie op de hoogte!
 



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.