Probleem met radiobuttons in PHP form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niek

Niek

01/01/2009 13:20:00
Quote Anchor link
Hoi,
ik ben bezig met een php bestelformuliertje. Ik heb een mooie van deze site afgehaald en die werkt perfect. Alleen nu wilt mijn opdrachtgever er graag een optie in zetten dat de mensen ook kunnen kiezen hoe ze het verzonden willen hebben. Afhalen of verzenden. Aan de hand daarvan kan in de bevestigingsmail het juiste bedrag getoond woorden. Alleen ik loop vast bij mee laten sturen van de data bij radiobuttons. Daarom ik heb een paar vraagjes:
Hoe laat die buttons de data verzenden die ik ook in de mail kan gebruiken?
Hoe laat ik het juiste bedrag in de mail verschijnen?
Hoe laat ik in de mail die de eigenaar van de site krijg zien waar ze voor hebben gekozen?

Hierbij de 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
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<?php
/******************************
*  Script:   Form Mail        *
*  Versie:   4.0              *
*  Author:   SkYcE            *
*  Released: 07-12-2006       *
******************************/

//Set sessie voor flood optie

session_start();

/*
** Variabelen instellen
*/


print "<script language=JavaScript>
<!--
function clickIE() {if (document.all) {(message);return false;}}
function clickNS(e) {if
(document.layers||(document.getElementById&&!document.all)) {
if (e.which==2||e.which==3) {(message);return false;}}}
if (document.layers)
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}

document.oncontextmenu=new Function(\"return false\")
// -->
</script>
"
;

// Naam voor als afzender van het bevestigingsmailtje
$var_name      = "Vrolijke Stappers";
// Het mail adres waarnaar de data verstuurd moet worden en afzender adres
$var_email     = "emailadres";
// Bevestigingsmail naar de verstuurder aanzetten (true = aan / false = uit)
$var_confirm   = true;
// Om flooden te voorkomen (true = aan / false = uit)
$var_noflood   = true;
//Bericht wat een bezoeker te zien krijgt als er sprake is van flooden
$var_flood_msg = "U kunt maar eens in de 1440 minuten een bestelling plaatsen. <i>(1 dag)</i><br>Dit is tegen spam.";
//Aantal flood seconden dat het formulier buiten gebruik moet zijn na het versturen van een bericht
$var_flood_sec = "86400";
// Geblokkeerde ip adressen, nieuw ip adres toevoegen is nieuwe waarde in de array
$var_ban_ips   = array('255.255.255.0');
// Bericht wat een bezoeker te zien krijgt indien diegene geblokkeerd is
$var_ban_msg   = "U bent geblokkeerd van het versturen van het contact formulier.";

/*
** Hieronder niks veranderen, tenzij je weet wat je doet
*/
//Functie voor ipadres verkrijgen

function get_ip () {
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ipadres = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
    $ipadres = $_SERVER['HTTP_CLIENT_IP'];
    }
else {
    $ipadres = $_SERVER['REMOTE_ADDR'];
    }

    
    return $ipadres;
}


//Host verkrijgen
$hostmask = gethostbyaddr(get_ip());
// Formulier weergeven
$form_view = true;
//Formulier versturen, als er iets misgaat word $ok = false
$ok = true;
// Bestandsnaam verkrijgen
$filename = basename($_SERVER['PHP_SELF']);
// Errors
$error = '';

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    //Validate form
    if(!trim($_POST['naam'])) {
        $ok = false;
        $error .= '- U heeft geen naam ingevuld<br />';
    }

    if(!eregi("[A-Za-z0-9_-]+([.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([.]{1}[A-Za-z0-9-]+)+", $_POST['email'])) {  
        $ok = false;  
        $error .= '- U heeft geen emailadres ingevuld<br />';  
    }

    if(!$_POST['straat']) {
        $ok = false;
        $error .= '- U heeft u Straat+huisnr niet ingevuld<br />';
    }

        if(!$_POST['postcode']) {
        $ok = false;
        $error .= '- U heeft geen postcode ingevuld<br />';
    }

        if(!$_POST['woonplaats']) {
        $ok = false;
        $error .= '- U heeft geen woonplaats ingevuld<br />';
    }

    if(!trim($_POST['bericht'])) {
        $ok = false;
        $error .= '- U heeft geen bericht ingevuld<br />';
    }

    
// E-mail naar $var_email (webmaster)
$msg_2_admin = "
Naam:                  "
.$_POST['naam']."
Email:                "
.$_POST['email']."
Straat+huisnr:         "
.$_POST['straat']."
Verzending:            
Postcode:             "
.$_POST['postcode']."
Woonplaats         "
.$_POST['woonplaats']."

======================================================================
Omschrijving:

"
.$_POST['bericht']."
======================================================================

======================================================================
Extra info:    
            Het betalingskenmerk van "
.$_POST['naam']." is: ".get_ip()."    
            "
.$_POST['naam']." stuurde deze email op ".date('d-m-Y')." om ".date('H:i').".
              Het hostadres van "
.$_POST['naam']." is: ".$hostmask;

// E-mail naar $_POST['email'] (poster)
$msg_2_poster = "Beste ".$_POST['naam'].",

Bedankt voor het plaatsen van een bestelling.
U heeft onderstaande gegevens ingevuld. Zijn deze onjuist, dan verzoeken wij u dit zo z.s.m door te geven

======================================================================
Uw naam:                  "
.$_POST['naam']."
Uw email:                "
.$_POST['email']."
Uw straat+huisnr:         "
.$_POST['straat']."
Uw postcode:             "
.$_POST['postcode']."
Uw Woonplaats             "
.$_POST['woonplaats']."
======================================================================
Uw omschrijving:

"
.$_POST['bericht']."
======================================================================
Betaling:
U kunt het bedrag €22,50 overmaken op rekeningnummer 1234.56.789 tnv rekeninghouder  ovv "
.get_ip()." te Werkendam.
U kunt het bedrag €28,70 overmaken op rekeningnummer 1234.56.789 tnv rekeninghouder ovv "
.get_ip()." te Werkendam.

Wij zullen voorzichtig met u gegevens omgaan en ze niet doorgeven/doorverkopen aan derden
"
;

    if(in_array(get_ip(),$var_ban_ips)) {
        echo $var_ban_msg;
        $form_view = false;
    }
elseif ($var_noflood == true && (time()-$_SESSION["antiflood"]) <= $var_flood_sec) {
        echo $var_flood_msg;
        $form_view = false;
    }
elseif ($ok == true) {
        @
$send = mail($var_email,
                      "Nieuwe bestelling ".$_POST['onderwerp'],
                      $msg_2_admin,
                      "From: ".$_POST['naam']."<".$_POST['email'].">");
        
        if($send == 1) {  
            if($var_confirm == true){  
                mail($_POST['email'],
                     "Uw bestelling ".$_POST['onderwerp'],
                     $msg_2_poster,
                     "From: ".$var_name."<".$var_email.">");  
            }

            
            echo'Beste '.$_POST['naam'].', uw bericht is verzonden, bedankt voor uw reactie.';
            
            if($var_confirm == true){  
                echo'<br /><br />Er is een bevestigingsmail onderweg met wat u heeft ingevuld.';
            }
        }
else{  
            echo'Beste '.$_POST['naam'].', uw bericht is helaas niet verzonden.<br /><br />
            Er is een fout opgetreden bij het verzenden. Wij zullen proberen het probleem zo snel mogelijk
            te verhelpen.<br /><br />
            
            Mocht dit probleem na enkele dagen niet verholpen zijn,neem dan contact op met de
            <a href="mailto:'
.$var_email.'">Webmaster</a><br /><br />
            
            Bedankt voor uw medewerking.'
;  
        }

        
        $form_view = false;
        
        $_SESSION["antiflood"] = time();
    }
}


/*
** Formulier
*/

if($form_view == true) {
    echo '
    <html>
    <head>
        <title>Bestellen</title>
        <style type="text/css">
            body {
                font-family: Verdana;
                font-size:12px;
            }
            td {
                font-family: Verdana;
                font-size:12px;
            }
        </style>
        <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
    
    <BODY STYLE="background-color:transparent">'
;
    
    if($error != '') {
        echo '<font style="color:#FF0000;"><b>'.$error.'</b></font><br />';
    }

    
    echo '
    <p>Voorwaarden:</p>
    <p>U kunt bestellen door het formulier volledig in te vullen.</p>
    <p>Nadat u besteld heeft ontvangt van ons een mail van de kosten.</p>
    <p>Levertijd: Binnen 7 werkdagen, na ontvangst betaling, worden de klompen verzonden.</p>
    <form method="POST" action="'
.$filename.'" style="border:0px; margin:0px; padding:0px;">
    <table width="55%" cellspacing="0" cellpadding="5">
    <tr>
        <td align="right"><b>Naam:</b></td>
        <td><input type="text" name="naam" size="36" maxlength="36" value="'
.(isset($_POST['naam']) ? $_POST['naam'] : '').'"></td>
    </tr>
    <tr>
        <td align="right"><b>E-mailadres:</b></td>
        <td><input type="text" name="email" size="36" maxlength="36" value="'
.(isset($_POST['email']) ? $_POST['email'] : '').'"></td>
    </tr>
    <tr>
        <td align="right"><b>Straat+huisnr</b></td>
        <td><input type="text" name="straat" size="36" maxlength="36" value="'
.(isset($_POST['straat']) ? $_POST['straat'] : '').'"></td>
    </tr>
    <tr>
        <td align="right"><b>Postcode</b></td>
        <td><input type="text" name="postcode" size="36" maxlength="36" value="'
.(isset($_POST['postcode']) ? $_POST['postcode'] : '').'"></td>
    </tr>
    
    <tr>
        <td align="right"><b>Woonplaats</b></td>
        <td><input type="text" name="woonplaats" size="36" maxlength="36" value="'
.(isset($_POST['woonplaats']) ? $_POST['woonplaats'] : '').'"></td>
    </tr>
      <td align="right"><b>Verzending</b></td>
      <td><label>
      <input type="radio" name="verzending" checked id="RadioGroup1_0" value="'
.(isset($_POST['afhalen']) ? $_POST['afhalen'] : '').'">
      Afhalen</label>
    <br />
    <label>
      <input type="radio" name="verzending" id="RadioGroup1_1" value="'
.(isset($_POST['verzenden']) ? $_POST['verzenden'] : '').'">
      Verzenden</label></td>
    </tr>
    
    </tr>
    <tr>
        <td align="right" valign="top"><b>Probeer hier u zo goed mogelijk uw idee te plaatsen:</b></td>  
        <td><textarea rows="8" cols="40" name="bericht" style="overflow:auto;">'
.(isset($_POST['bericht']) ? $_POST['bericht'] : '').'</textarea></td>
    </tr>
    <tr>
        
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="submit" value="Versturen"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>'
;
}

?>
 
PHP hulp

PHP hulp

24/04/2024 14:08:31
 
Jesper Diovo

Jesper Diovo

01/01/2009 13:27:00
Quote Anchor link
$_POST['verzending'] in dit geval bevat de value van de radio button waar op geklikt is. Als je die dus bij afhalen als 'afhalen' definieert en bij verzenden als 'verzenden', weet je als het formulier is verstuurd door een simpele if er achter te komen wat de invuller wil. Daarmee kun je dan het bedrag berekenen; ik neem aan dat bij verzenden alleen wat verzendkosten komen?
 
Joren de Wit

Joren de Wit

01/01/2009 13:30:00
Quote Anchor link
Je geeft je radiobuttons de naam 'verzending'. Bij de verwerking van je formulier kun je de gekozen waarde dus uitlezen via $_POST['verzending'].

Daarnaast ga je nog wel de fout in bij de value van je radiobuttons, die is namelijk niet variabel en heeft dus altijd dezelfde waarde. Het lijkt erop dat je probeert te bereiken dat de juiste radio button aangevinkt is als het formulier al een keer verzonden is en er fouten in het formulier zitten? Dan zul je als blijkt dat de betreffende radio button aangevinkt moet zijn, het checked="checked" attribuut mee moeten geven. Aan de value verander je verder niets...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<label>
      <input type="radio" name="verzending" checked id="RadioGroup1_0" value="afhalen" '
. isset($_POST['verzending']) && $_POST['verzending'] == 'afhalen' ? 'checked="checked"' : '' .'>
      Afhalen</label>'
;
?>
 
Niek

Niek

01/01/2009 14:56:00
Quote Anchor link
@Jezpur:
Ja het is inderdaad de bedoeling dat als er voor afhalen is gekozen dat er 22.50 wordt weergegeven en als er voor verzenden is gekozen 28,70 dat is inderdaad met een if te doen alleen moet die wel eerst het juiste zenden.

@blanche:
Het aanvinken is niet per sé nodig...
als ik jouw code probeer dan krijg ik een witte pagina te zien...

Ik heb heb het formuliertje ook online staan...
http://vrolijkeklompjes.altenavacatures.nl/bestellen.php

sorry voor deze domme vragen maar ik ben nog een newbie met php...
 
Niek

Niek

01/01/2009 15:28:00
Quote Anchor link
Na wat rommelen kreeg ik deze melding in mn error log:
[Thu Jan 01 15:11:43 2009] [error] [client ---.--.--.---] PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/vhosts/altenavacatures.nl/subdomains/vrolijkeklompjes/httpdocs/bestellen.php on line 108, referer: http://vrolijkeklompjes.altenavacatures.nl/

toen ik regel 108 weghaalde werdt die melding regel 109 en toen 114, oftwel hij ging alle $_POST dingen langs.. toen ik regel 107 leegmaakte kreeg ik deze melding:

[Thu Jan 01 15:24:43 2009] [error] [client ---.--.--.---] PHP Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /var/www/vhosts/altenavacatures.nl/subdomains/vrolijkeklompjes/httpdocs/bestellen.php on line 245, referer: http://vrolijkeklompjes.altenavacatures.nl/

Dat is apart want in die regel staat helemaal geen , of ; ..... wel een : maar daar moet het niet aan kunnen liggen lijkt mij....

Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door Niek
 
- SanThe -

- SanThe -

01/01/2009 15:51:00
Quote Anchor link
Niek schreef op 01.01.2009 15:28:
... expecting ',' or ';'

Dit wordt juist wél verwacht.
 
Niek

Niek

01/01/2009 15:54:00
Quote Anchor link
hmmm kzal nog eens gaan klieren dan...
 



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.