Soort 'Bestelformulier' met verschillende onderwerpen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stephanie -

Stephanie -

15/12/2015 13:29:08
Quote Anchor link
Hoi,

Voor onderstaande website moet ik per assortiment een soort bestelformulier hebben, waarin de naam van de bloem het onderwerp is van het bericht.
http://binnenkijkenbij.nl/happycolors/roses.html

Als je dus op een van die bloemen klikt, zie je in de lightbox een tekst met "contact us". Als je hierop klikt moet ik of direct naar de contactpagina gaan waarin het onderwerp automatisch wordt ingevuld met de naam van de bloem. Of dat je na het klikken een popup krijgt met een formulier waarin ook het onderwerp automatisch is ingevuld.
Ik heb nu een heel eenvoudig contactformulier waarin je eigen gegevens kunnen invullen.
En ik heb geen idee of zoiets mogelijk is / of hoe ik dit moet aanpakken. Hoop dat jullie mij wat verder kunnen helpen?

Thanks!

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
<div class="col-sm-8">
          <h1 class="post-title">Feel free to contact us</h1>
          <p></p>
          <div class="divide20"></div>
          <div class="form-container">
            <div class="response alert alert-success"></div>
            <form class="forms" action="contact/form-handler.php" method="post">
              <fieldset>
                <ol>
                  <li class="form-row text-input-row name-field">
                    <input type="text" name="name" class="text-input defaultText required" title="Name (Required)"/>
                  </li>
                  <li class="form-row text-input-row email-field">
                    <input type="text" name="email" class="text-input defaultText required email" title="Email (Required)"/>
                  </li>
                  <li class="form-row text-input-row subject-field">
                    <input type="text" name="subject" class="text-input defaultText" title="Subject"/>
                  </li>
                  <li class="form-row text-area-row">
                    <textarea name="message" class="text-area required"></textarea>
                  </li>
                  <li class="form-row hidden-row">
                    <input type="hidden" name="hidden" value="" />
                  </li>
                  <li class="nocomment">
                    <label for="nocomment">Leave This Field Empty</label>
                    <input id="nocomment" value="" name="nocomment" />
                  </li>
                  <li class="button-row">
                    <input type="submit" value="Submit" name="submit" class="btn btn-submit bm0" />
                  </li>
                </ol>
                <input type="hidden" name="v_error" id="v-error" value="Required" />
                <input type="hidden" name="v_email" id="v-email" value="Enter a valid email" />
              </fieldset>
            </form>
          </div>
          <!-- /.form-container -->
        </div>

<?php
include('SMTPClass.php');

$use_smtp = '0';
$emailto = '[email protected]';

    // retrieve from parameters
    $emailfrom = isset($_POST["email"]) ? $_POST["email"] : "";
    $nocomment = isset($_POST["nocomment"]) ? $_POST["nocomment"] : "";
    $subject = 'Contactformulier Happy Colors';
    $message = '';
    $response = '';
    $response_fail = 'There was an error verifying your details.';
    
        // Honeypot captcha
        if($nocomment == '') {
        
            $params = $_POST;
            foreach ( $params as $key=>$value ){
            
                if(!($key == 'ip' || $key == 'emailsubject' || $key == 'url' || $key == 'emailto' || $key == 'nocomment' || $key == 'v_error' || $key == 'v_email')){
                
                    $key = ucwords(str_replace("-", " ", $key));
                    
                    if ( gettype( $value ) == "array" ){
                        $message .= "$key: \n";
                        foreach ( $value as $two_dim_value )
                        $message .= "...$two_dim_value<br>";
                    }
else {
                        $message .= $value != '' ? "$key: $value\n" : '';
                    }
                }
            }

            
        $response = sendEmail($subject, $message, $emailto, $emailfrom);
            
        }
else {
        
            $response = $response_fail;
        
        }


    echo $response;

// Run server-side validation
function sendEmail($subject, $content, $emailto, $emailfrom) {
    
    $from = $emailfrom;
    $response_sent = 'Thank you. Your messsage has been received.';
    $response_error = 'Error. Please try again.';
    $subject =  filter($subject);
    $url = "Origin Page: ".$_SERVER['HTTP_REFERER'];
    $ip = "IP Address: ".$_SERVER["REMOTE_ADDR"];
    $message = $content."\n$ip\r\n$url";
    
    // Validate return email & inform admin
    $emailto = filter($emailto);

    // Setup final message
    $body = wordwrap($message);
    
    if($use_smtp == '1'){
    
        $SmtpServer = 'SMTP SERVER';
        $SmtpPort = 'SMTP PORT';
        $SmtpUser = 'SMTP USER';
        $SmtpPass = 'SMTP PASSWORD';
        
        $to = $emailto;
        $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
        $SMTPChat = $SMTPMail->SendMail();
        $response = $SMTPChat ? $response_sent : $response_error;
        
    }
else {
        
        // Create header
        $headers = "From: $from\r\n";
        $headers .= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/plain; charset=utf-8\r\n";
        $headers .= "Content-Transfer-Encoding: quoted-printable\r\n";
        
        // Send email
        $mail_sent = @mail($emailto, $subject, $body, $headers);
        $response = $mail_sent ? $response_sent : $response_error;
        
    }

    return $response;
}


// Remove any un-safe values to prevent email injection
function filter($value) {
    $pattern = array("/\n/", "/\r/", "/content-type:/i", "/to:/i", "/from:/i", "/cc:/i");
    $value = preg_replace($pattern, "", $value);
    return $value;
}


exit;

?>

- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 15/12/2015 13:38:03 door - Ariën -
 
PHP hulp

PHP hulp

26/04/2024 09:41:04
 
- Ariën  -
Beheerder

- Ariën -

15/12/2015 13:41:29
Quote Anchor link
In de lightbox staat al de code van de bloem, dus die zou je dan met een GET-parameter kunnen meegeven in de URL naar het contactformulier.

'contact.php?code=R1001'
Dan kan je met $_GET['code'] in je PHP-script de waarde alvast invullen.

Let er wel op dat PHP standaard niet wordt uitgevoerd in een *.html-document. Daarom heb ik hier als voorbeeld .php van gemaakt.
Gewijzigd op 15/12/2015 13:41:55 door - Ariën -
 
Stephanie -

Stephanie -

15/12/2015 13:56:17
Quote Anchor link
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?

& bedankt voor de tip! over html het document.
Gewijzigd op 15/12/2015 13:58:03 door Stephanie -
 
Peter K

Peter K

15/12/2015 14:06:23
Quote Anchor link
Stephanie - op 15/12/2015 13:56:17:
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?

& bedankt voor de tip! over html het document.



Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php

In contact.php kun je het volgende doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>


Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.
Gewijzigd op 15/12/2015 14:08:13 door Peter K
 
Stephanie -

Stephanie -

15/12/2015 14:23:57
Quote Anchor link
Peter K op 15/12/2015 14:06:23:
Stephanie - op 15/12/2015 13:56:17:
Hoi Ariën,
Thanks voor je reactie en uitleg, alleen is mij niet helemaal duidelijk waar ik de GET-parameter dan het beste kan plaatsen/ hoe te plaatsen in het php-script?

& bedankt voor de tip! over html het document.



Je zult je contact.html moeten wijzigen van .html extensie naar .php
http://binnenkijkenbij.nl/happycolors/contact.html wordt dan:
http://binnenkijkenbij.nl/happycolors/contact.php

In contact.php kun je het volgende doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>


Als je naar contact.php?bloem=1000 gaat, zal $_GET['bloem'] "1000" zijn.
Als je naar contact.php?bloem=tulp gaat, zal $_GET['bloem'] "tulp" zijn.




Hoi Peter thanks voor de hulp!
Ik heb nu inderdaad bij de bloem de url aangegeven met de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<h2>R1000 &nbsp;&nbsp;&nbsp;<a href="contact.php?bloem=R1000"><strong>Contact us ></strong></a></h2>


en in mijn contact.php heb ik het volgende gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<li class="form-row text-input-row subject-field">
                    <input type="text" name="subject" class="text-input defaultText" title="Subject" <?php printf("{$_GET['bloem']}"); ?>>
                  </li>



Url werkt prima, maar het onderwerp wordt nog niet weergegeven in het formulier.
Waar kan ik dit dan aanpassen? Ik heb geprobeerd de GET-parameter in het phpscript te plaatsen die de mail verzendt maar dat ging niet. (Ik had hem zo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$subject = '$_GET['bloem']';
maar ik denk dat ik iets fout doe haha.
 
Peter K

Peter K

15/12/2015 14:31:24
Quote Anchor link
Excuses,

Je moet er dit van maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" value="<?php printf("{$_GET['bloem']}"); ?>">


Als je naar contact.php?bloem=test gaat zul je dit zien in je bron:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="subject" class="text-input defaultText" title="Subject" test>

De waarde komt dus wel mooi in je script, maar hij moest nog in de value gezet worden. Met bovenstaande zou het moeten werken.
Gewijzigd op 15/12/2015 14:33:15 door Peter K
 
Jan de Laet

Jan de Laet

15/12/2015 14:32:01
Quote Anchor link
Zonder de buitenste quotjes: $subject = $_GET['bloem'];
 
- Ariën  -
Beheerder

- Ariën -

15/12/2015 14:32:07
Quote Anchor link
Je moet die GET-waarde wel netjes in een value=" " zetten ;-)
 
Stephanie -

Stephanie -

15/12/2015 14:47:35
Quote Anchor link
OOOOOH, wauw Nice!
Dank jullie wel! valt best mee hoe moeilijk dit was haha.
Gewijzigd op 15/12/2015 14:48:01 door Stephanie -
 
Peter K

Peter K

15/12/2015 20:15:11
Quote Anchor link
Je kunt het nog mooier maken natuurlijk.

Als onderwerp kun je ook plaatsen:
Bloem bestelling: (HIER DE GET WAARDE)

Uiteraard moet die tekst 'Bleom bestelling:' er enkel komen zodra er een bloem is gekozen.
Als iemand standaard naar het contact formulier gaat wil je dat niet.

Je kunt een controle doen of dus de GET gevuld is.
Als dat zo is maak je een nieuwe variabele aan.

Deze nieuwe variabele kun je dan ook toevoegen in de value van subject.
 



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.