Dynamisch Formulier aanpassen.

Pagina: 1
Acties:
  • 1.266 views

Acties:
  • 0 Henk 'm!

  • Dekaasboer
  • Registratie: Augustus 2003
  • Laatst online: 14-09 20:41
Poe poe,

Vandaag 27 graden hier. Maar ik programmeer door 8)

Ik ben een beetje vastgelopen in een formulier dat ik moet maken. En ik hoop dat jullie me een paar pointers kunnen geven hoe verder te gaan. Er is zoveel mis mee dat ik me niet eens kan realiseren hoeveel. Het zal dus een beetje een "ongoing process" worden :)

Ik heb de basis voor het script hier vandaan. "Dynamisch toevoegen en verwijderen van html elementen.

Nu heb ik dat op de volgende manier toegepast:
code:
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function addElement() {
  var ni = document.getElementById('myDiv');
  var numi = document.getElementById('theValue');
  var num = (document.getElementById('theValue').value -1)+ 2;
  numi.value = num;
  var newdiv = document.createElement('div');
  var divIdName = 'my'+num+'Div';
  newdiv.setAttribute('id',divIdName);
  newdiv.innerHTML = 'Extra bestelling '+num+' erbij!<form action="mailto:spoor_r@msn.com?SUBJECT=Reactie" method="post"><select name="BroodjeNR" id="Broodje'+num+'" name="imageName_1"><OPTION selected>Kies een Broodje</OPTION><OPTION>Rookvlees            2,00</OPTION><OPTION>Komijnenkaas jong  1,70</OPTION><OPTION>Serranoham         2,30</OPTION></select></td><td>Wit<INPUT TYPE="radio" NAME="brood" VALUE="wit"></td><td>Bruin<INPUT TYPE="radio" NAME="brood" VALUE="bruin"></td><td>Boter<input type="checkbox" name="boter" value="Ja"></td><td>Aantal<input type="text" name="plaats" size="2"></td></form><a href=\'#\' onclick=\'removeElement('+divIdName+')\'>Remove the div "'+divIdName+'"</a>';
  ni.appendChild(newdiv);
}
</script>
</head>
<body>
<input type="hidden" value="0" id="theValue" />
<p><a href="javascript:;" onclick="addElement();">Voeg bestelling toe</a></p>
<div id="myDiv"></div>
<BUTTON TYPE="submit"> Verzenden</BUTTON>
</body>


Het formulier dat ik het "innerHTML stukje staat wordt wordt dus iedere keer toegevoegd naarmate er meer bestellingen nodig zijn. Nu is de implementatie die ik gekozen heb waarschijnlijk totaal fout. En ik krijg ook niks werkende er uit

Uiteindelijk moet dit netjes met een feedback script gaan werken. Maar het lukt nu nog niet eens om de mailto: werkende te krijgen. Probleem is namelijk dat de "verzend" button niet meer werkt zodra ik hem buiten het herhalende gebied haal. ( maakt niet uit waar ik het </form> zet)

Kunnen jullie me misschien aangeven hoe ik verder moet? Ik snap namelijk niet veel van Java programmeren, ik kan het hoogstens toepassen. Als die knop werkend is kan ik tenminste de volgende fout weer opsporen 8)7

Alvast bedankt voor jullie input. _/-\o_

http://axrotterdam.blogspot.nl


Acties:
  • 0 Henk 'm!

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Je creëert nu voor elke bestelregel een apart formulier, zonder verzendknop.
Je moet zorgen dat de volgende code al direct in je pagina staat:
HTML:
1
2
3
4
<form action="mailto:spoor_r@msn.com?SUBJECT=Reactie" method="post">
<div id="myDiv"></div>
<button type="submit"> Verzenden</button>
</form>
Met je javascript voeg je in myDiv vervolgens alleen de extra form velden toe, zodat deze allemaal binnen de enkele form komen te staan.

Acties:
  • 0 Henk 'm!

  • Dekaasboer
  • Registratie: Augustus 2003
  • Laatst online: 14-09 20:41
Kijk, dat stukje inzicht miste ik even. Dan ga ik nu uitvogelen hoe ik de gegenereerde velden daadwerkelijk kan laten ophalen met een script.

Dit is me voorheen wel gelukt met een statisch contactformulier, maar dit is eveniets heel anders.
Ik zal het resultaat posten ALS het me lukt.

En ander laat ik wel weer van me horen ;)

[ Voor 16% gewijzigd door Dekaasboer op 25-07-2008 23:44 ]

http://axrotterdam.blogspot.nl


Acties:
  • 0 Henk 'm!

  • Dekaasboer
  • Registratie: Augustus 2003
  • Laatst online: 14-09 20:41
Goed, het formulier wordt nu automatisch aangepast en maakt netjes de velden aan.

Vervolgens gebruik ik het "feedback.php

code:
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
/*
    CHFEEDBACK.PHP Feedback Form PHP Script Ver 2.11.0
    Generated by thesitewizard.com's Feedback Form Wizard.
    Copyright 2000-2008 by Christopher Heng. All rights reserved.
    thesitewizard and thefreecountry are trademarks of Christopher Heng.

    Get the latest version, free, from:
        http://www.thesitewizard.com/wizards/feedbackform.shtml

    You can read the Frequently Asked Questions (FAQ) at:
        http://www.thesitewizard.com/wizards/faq.shtml
    
    I can be contacted at:
        http://www.thesitewizard.com/feedback.php
    Note that I do not normally respond to questions that have
    already been answered in the FAQ, so *please* read the FAQ.

    LICENCE TERMS
    
    1. You may use this script on your website, with or
    without modifications, free of charge.
    
    2. You may NOT distribute or republish this script,
    whether modified or not. The script can only be
    distributed by the author, Christopher Heng.
    
    3. THE SCRIPT AND ITS DOCUMENTATION ARE PROVIDED
    "AS IS", WITHOUT WARRANTY OF ANY KIND, NOT EVEN THE
    IMPLIED WARRANTY OF MECHANTABILITY OR FITNESS FOR A
    PARTICULAR PURPOSE. YOU AGREE TO BEAR ALL RISKS AND
    LIABILITIES ARISING FROM THE USE OF THE SCRIPT,
    ITS DOCUMENTATION AND THE INFORMATION PROVIDED BY THE
    SCRIPTS AND THE DOCUMENTATION.

    If you cannot agree to any of the above conditions, you
    may not use the script. 
    
    Although it is not required, I would be most grateful
    if you could also link to thesitewizard.com at:

       http://www.thesitewizard.com/

*/

// ------------- CONFIGURABLE SECTION ------------------------

// $mailto - set to the email address you want the form
// sent to, eg
//$mailto       = "youremailaddress@example.com" ;

$mailto = 'spoor_r@msn.com' ;

// $subject - set to the Subject line of the email, eg
//$subject  = "Feedback Form" ;

$subject = "Online Bestelling" ;

// the pages to be displayed, eg
//$formurl      = "http://www.example.com/feedback.html" ;
//$errorurl     = "http://www.example.com/error.html" ;
//$thankyouurl  = "http://www.example.com/thankyou.html" ;

$formurl = "http://www.wensmedia.nl/test/kaaswaag/feedback.php" ;
$errorurl = "http://www.wensmedia.nl/test/kaaswaag/error.html" ;
$thankyouurl = "http://www.wensmedia.nl/test/kaaswaag/danku.html" ;

$uself = 0;
$email_is_required = 0;
$naam_is_required = 1;
$use_utf8 = 1;

// -------------------- END OF CONFIGURABLE SECTION ---------------

$headersep = (!isset( $uself ) || ($uself == 0)) ? "\r\n" : "\n" ;
$content_type = (!isset( $use_utf8 ) || ($use_utf8 == 0)) ? 'Content-Type: text/plain; charset="iso-8859-1"' : 'Content-Type: text/plain; charset="utf-8"' ;
$naam = $_POST['naam'] ;
$naamorganisatie = $_POST['naamorganisatie'] ;
$adres = $_POST['adres'] ;
$plaats = $_POST['plaats'] ;
$telefoon = $_POST['telefoon'] ;
$email = $_POST['email'] ;
$datumtijd = $_POST['datumtijd'] ;
$postcode = $_POST['postcode'] ;
$http_referrer = getenv( "HTTP_REFERER" );

if (!isset($_POST['email'])) {
    header( "Location: $formurl" );
    exit ;
}
if (($email_is_required && (empty($email) || !ereg("@", $email))) || ($naam_is_required && empty($naam))) {
    header( "Location: $errorurl" );
    exit ;
}
if ( ereg( "[\r\n]", $naam ) || ereg( "[\r\n]", $email ) ) {
    header( "Location: $errorurl" );
    exit ;
}
if (empty($email)) {
    $email = $mailto ;
}

if (get_magic_quotes_gpc()) {
    $comments = stripslashes( $comments );
}

$messageproper =

    "This message was sent from:\n" .
    "$http_referrer\n" .    
    "------------------------------------------------------------\n" .
    "Naam: $naam\n" .
    "Naam organistatie: $naamorganisatie\n" .
    "Adres: $adres\n" .
    "Plaats: $plaats\n" .
    "telefoon:$telefoon\n" .
    "email: $email\n" .
    "datumtijd: $datumtijd\n" .
    "postcode: $postcode\n" .
    "bestelling: $bestelling\n" .
    "Brood: $brood\n" .
    "Boter?: $boter\n" .
    "------------------------- COMMENTS -------------------------\n\n" .
    $comments .
    
    "\n\n------------------------------------------------------------\n" ;
    
    
    
    
    

mail($mailto, $subject, $messageproper,
    "From: \"$naam\" <$email>" . $headersep . "Reply-To: \"$naam\" <$email>" . $headersep . "X-Mailer: chfeedback.php 2.11.0" .
    $headersep . 'MIME-Version: 1.0' . $headersep . $content_type );
header( "Location: $thankyouurl" );
exit ;

?>


Het probleem is dat dit nooit ontworpen is voor variabele content. Er kunnen 2 of 15 broodjes besteld worden. Zij krijgen iedere keer een hoger nummer door '+num' alleen hoe laat ik dit formulier een onbekende uitlezen? Simpelweg +num hierbij zetten werkt niet :p

kent iemand een tutorial of heeft iemand suggesties?

http://axrotterdam.blogspot.nl


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Er zijn meer dan voldoende PHP/HTML/JS tutorials te vinden op het web. Het is hier op GoT nadrukkelijk niet de bedoeling dat wij je projectje gaan voorkauwen, je aan het handje houden of voor je gaan zitten debuggen of de fouten aanwijzen.

Verdiep je gewoon eens in de materie en kom dan gerust terug met concrete vragen. De manier waarop dit topic loopt is nu gewoon een Kan iemand even...?-topic en daar doen we dus niet aan ;)

Overigens, voor support op 'geleende' code kun je ook aankloppen bij de auteur.

[ Voor 8% gewijzigd door RobIII op 28-07-2008 13:10 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

-NMe- schreef op maandag 28 juli 2008 @ 15:04:
Om daar toch inhoudelijk op te reageren: foreach($_POST). Zoek op wat foreach doet, en wat er in $_POST staat. Daarna kom je er wel uit. ;)
Dekaasboer schreef op maandag 28 juli 2008 @ 15:12:
Het is me met de tip van -NME- Eindelijk gelukt! Ik ben zo apetrots op mezelf :p Is het mogelijk om de oplossing in mijn topic te zetten? Ookal zit het op slot?

Ik kende de functie foreach niet en gaf altijd exact aan welke waardes opgehaald moesten worden. Nu heb ik een script die gewoon alles ophaalt, en met ingebouwde spambescherming. (hoewel ik me afvraag hoe effectief die is :X )

[ Voor 19% gewijzigd door NMe op 30-07-2008 17:00 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Dekaasboer
  • Registratie: Augustus 2003
  • Laatst online: 14-09 20:41
Alvast bedankt -NME-

Dit is uiteindelijk het php gedeelte geworden:
code:
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
<?PHP 

$adres[0] = "jaapie";
$domein[1] = "hotmail";
$aap[2] = "@";

$to = "$adres[0]$aap[2]$domein[1]]";
$subject = "Onderwerp invullen"; 
$headers = "Header message invullen";
$forward = 0;
$location; "Locatie van het script invullen";

$date = date ("l, F jS, Y"); 
$time = date ("h:i A"); 

$msg = "Bestelling gemaakt op: $date at $time.\n\n"; 

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    foreach ($_POST as $key => $value) { 
        $msg .= ucfirst ($key) ." : ". $value . "\n"; 
    }
}
else {
    foreach ($_GET as $key => $value) { 
        $msg .= ucfirst ($key) ." : ". $value . "\n"; 
    }
}

mail($to, $subject, $msg, $headers); 
if ($forward == 1) { 
    header ("Location:$location"); 
} 
else { 
    echo "Bedankt voor uw bestelling. We nemen zo snel mogelijk contact met u op om uw bestelling te bevestigen."; 
} 

?>

Het haalt alles uit een formulier op, zet het netjes onder elkaar en laat ook nog de tijd van versturen zien. Ook heb ik een rudimentaire vorm van spambescherming er in gemaakt.

Voor de rest hoeft er nu alleen nog maar gezorgd te worden dat het html formulier netjes is.

http://axrotterdam.blogspot.nl

Pagina: 1

Dit topic is gesloten.