PHP bestelformulier output zonder lege velden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan Roodbaard

Jan Roodbaard

30/09/2013 12:27:13
Quote Anchor link
Ha!

Voor een slagerij heb ik een bestelformulier in elkaar geknutseld.

Het formulier bestaat uit een lange lijst (ongeveer 100) producten met standaard input-velden.

Het formulier wordt als HTML-tabel naar het mailadres van de slagerij verstuurd.
De producten die niet worden besteld, komen wel in de HTML tabel te staan.

Dit is niet alleen onnodig maar het maakt de tabel ook erg onoverzichtelijk en bovendien kost het uitprinten van de bestelling onnodig veel papier (3 vellen)

Wie weet er een oplossing voor dit probleem zonder dat ik het formulier helemaal opnieuw hoef te maken.


Toevoeging op 30/09/2013 12:28:18:
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
<?php
$mail_to
= 'bestelling@######.nl';
$mail_from = 'bestelling@######.nl';
$mail_subject = 'Nieuwe Bestelling';
$headers  = "From: #####@######.com\r\n";
$headers .= "Content-type: text/html charset=iso-8859-1 \r\n";
$message ="<html>
      <head>
      <title>Message</title>

      </head>
      <body>

   <table border= 1px; font-size= 10; >
 
  
     <tr><td><strong>Contactgegevens</strong></td><td>&nbsp</td></tr>
     <tr><td style= width:400px>Naam</td>><td style= width:400px>$field_1</td></tr>
     <tr><td>Woonplaats</td><td>$field_2</td></tr>
     <tr><td>Telefoon</td><td>$field_3</td></tr>
     <tr><td>E-mail</td><td>$field_4</td></tr>
     <tr><td>Datum bestelling</td><td>$field_5</td></tr>
      <tr><td>Tijd bestelling</td><td>$field_121</td></tr>
      <tr><td>&nbsp</td><td>&nbsp</td><tr>
       <tr><td><strong>Gehakt - Snel klaar</strong></td><td>&nbsp</td></tr>
    
     <tr><td>&nbsp</td><td>&nbsp</td><tr>
     <tr><td>Gehakt halfhalf</td><td>$field_6</td></tr>
    <tr><td>Gehakt halfhalf (gekruid)</td><td>$field_119</td></tr>

     <tr><td>rundergehakt</td><td>$field_7</td></tr>
    <tr><td>rundergehakt (gekruid)</td><td>$field_120</td></tr>

     <tr><td>Mager rundergehakt</td><td>$field_8</td></tr>
       <tr><td>Tartaar</td><td>$field_9</td></tr>
      
       <tr><td>&nbsp</td><td>&nbsp</td><tr>
       <tr><td><strong>Rundvlees - Snel klaar</strong></td><td>&nbsp</td></tr>
      
      <tr><td>hamburger ong</td><td>$field_10</td></tr>
     <tr><td>hamburger gep</td><td>$field_11</td></tr>
      <tr><td>Rudersaucijzen</td><td>$field_12</td></tr>
     <tr><td>Biefstuk</td><td>$field_13</td></tr>
      <tr><td>Kogelbiefstu</td><td>$field_14</td></tr>
     <tr><td>Zijlendebiefstuk</td><td>$field_15</td></tr>
     <tr><td>Haasbiefstuk</td><td>$field_16</td></tr>
      
      <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Rundvlees - divers</strong></td><td>&nbsp</td></tr>
      
      <tr><td>Bieflappen</td><td>$field_17</td></tr>
      <tr><td>Borstlappen</td><td>$field_18</td></tr>
      <tr><td>Riblappen</td><td>$field_19</td></tr>
      <tr><td>Lendelappen</td><td>$field_20</td></tr>
      <tr><td>Braadlappen</td><td>$field_21</td></tr>
      <tr><td>Sucadelappen</td><td>$field_22</td></tr>
      <tr><td>Dikke rib</td><td>$field_23</td></tr>
      <tr><td>Dikke lende</td><td>$field_24</td></tr>
      <tr><td>Rosbeef</td><td>$field_25</td></tr>
      <tr><td>Klapstuk</td><td>$field_26</td></tr>
      <tr><td>Staartstuk</td><td>$field_27</td></tr>
      <tr><td>Hacheevlees</td><td>$field_28</td></tr>
      
    
      <tr><td>Runderrollade</td><td>$field_29</td></tr>
      <tr><td>Lenderollade</td><td>$field_30</td></tr>
      <tr><td>Picanha</td><td>$field_31</td></tr>
      <tr><td>Costella</td><td>$field_32</td></tr>
      <tr><td>Ribeye</td><td>$field_33</td></tr>
      <tr><td>Hart</td><td>$field_34</td></tr>
      <tr><td>Kopvlees</td><td>$field_35</td></tr>
      <tr><td>Pens</td><td>$field_36</td></tr>
           <tr><td>Soepvlees</td><td>$field_117</td></tr>
     <tr><td>Runderpoulet</td><td>$field_118</td></tr>
      
      <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Varkensvlees - Snel klaar</strong></td><td>&nbsp</td></tr>
      
      <tr><td>Shoarma</td><td>$field_37</td></tr>
      <tr><td>Slavinken</td><td>$field_38</td></tr>
      <tr><td>Schnitzel</td><td>$field_39</td></tr>
      <tr><td>Schnitzel gep</td><td>$field_40</td></tr>
      <tr><td>Varkensfiletlapjes</td><td>$field_41</td></tr>
      <tr><td>Verse worst</td><td>$field_42</td></tr>
      
    <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Varkensvlees - divers</strong></td><td>&nbsp</td></tr>
    
      <tr><td>Halskarbonade</td><td>$field_43</td></tr>
      <tr><td>Ribkarbonade</td><td>$field_44</td></tr>
      <tr><td>Haaskarbonade</td><td>$field_45</td></tr>
      <tr><td>Hamlappen</td><td>$field_46</td></tr>
      <tr><td>Speklappen</td><td>$field_47</td></tr>
      <tr><td>Speklappen zwoerd</td><td>$field_48</td></tr>
      <tr><td>Varkenshaas</td><td>$field_49</td></tr>
      <tr><td>Varkenspoulet</td><td>$field_50</td></tr>
      <tr><td>Schouderfiletlapjes (hals zb)</td><td>$field_51</td></tr>
      <tr><td>Karbonade zb</td><td>$field_52</td></tr>
      <tr><td>Varkensfricandeau</td><td>$field_53</td></tr>
      <tr><td>Rauwe lever</td><td>$field_54</td></tr>
      
    <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Winterkost</strong></td><td>&nbsp</td></tr>
      
    
      <tr><td>Krabbetjes</td><td>$field_55</td></tr>
      <tr><td>Hamschijf</td><td>$field_56</td></tr>
      <tr><td>Bovenpoot</td><td>$field_57</td></tr>
      <tr><td>Rookworst</td><td>$field_58</td></tr>
      <tr><td>Vers doorregen spek</td><td>$field_59</td></tr>
      
      <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Spek</strong></td><td>&nbsp</td></tr>
      
      <tr><td>Vet rookspek</td><td>$field_60</td></tr>
      <tr><td>Vet rookspek zz</td><td>$field_61</td></tr>
      <tr><td>Dobbelsteentjes mager</td><td>$field_62</td></tr>
      <tr><td>Dobbelsteentjes vet</td><td>$field_63</td></tr>
      <tr><td>Mager ontbijtspek</td><td>$field_64</td></tr>
      <tr><td>Vers doorregen(mager) spek</td><td>$field_65</td></tr>
      <tr><td>Vers vet spek</td><td>$field_66</td></tr>
      <tr><td>Pekelspek</td><td>$field_67</td></tr>
      
         <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Rollade</strong></td><td>&nbsp</td></tr>
    
      <tr><td>Varkensfiletrollade</td><td>$field_68</td></tr>
      <tr><td>Schoudrfiletrollade</td><td>$field_69</td></tr>
      <tr><td>Varkensrollade</td><td>$field_70</td></tr>
      <tr><td>Spekrollade</td><td>$field_71</td></tr>
      
          <tr><td>&nbsp</td><td>&nbsp</td><tr>
      <tr><td><strong>Kip producten</strong></td><td>&nbsp</td></tr>
      
      <tr><td>Kipfilet</td><td>$field_72</td></tr>
      <tr><td>Kippoulet</td><td>$field_73</td></tr>
      <tr><td>Kippenpoten</td><td>$field_74</td></tr>
      <tr><td>Drumsticks</td><td>$field_75</td></tr>
      <tr><td>Kipschnitzel</td><td>$field_76</td></tr>
      

    
    
          
         </table>
 </body>
 </html>"
;







mail($mail_to, $mail_subject, $message, $headers, 'From: ' . $mail_from);


    
    
   $sHtml .= '<h1>Het formulier is verzonden</h1><p>Hartelijk dank voor het plaatsen van uw bestelling.</p>';
    }


echo $sHtml;

?>

Edit:
Code tussen code-tags gezet. gelieve dit in het vervolg zelf te doen.
Gewijzigd op 30/09/2013 21:30:12 door - Ariën -
 
PHP hulp

PHP hulp

05/01/2025 00:34:06
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/09/2013 12:59:44
Quote Anchor link
Zo bedankt, kost me zowat een scrollwiel :p. Wat je nu plaatst is het formulier zelf. Vervang dit eens voor een stukje van je code dat na het versturen van het formulier oa? De email verstuurd. Het kan nooit al te ingewikkeld zijn, gewoon elk veld testen of er iets ingevuld is...
 
Jan Roodbaard

Jan Roodbaard

30/09/2013 13:06:11
Quote Anchor link
Ha Frank,

Bedankt voor je reactie.

Ik had idd. het verkeerde stukje code geciteerd. Ik heb het nu aangepast
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/09/2013 21:27:56
Quote Anchor link
Goed Jan, hoeveel artikelen zijn dat die in het formulier staan? Dat kan natuurlijk anders. Als je het goed wil doen dan ga je die artikelen opslaan in de database. Ze krijgen dan een uniek nummer waarmee we de omschrijving, de prijs en wat al nog meer kunnen terughalen uit de database.

éénmaal die lijst in de database gezet kunnen we de artikelen er regel voor regel uithalen en er een formulierveld van maken. aan dat formulierveld geven we dan weer een id mee zodat we later nog steeds weten om welk artikel het gaat.

Maar goed iets zegt me dat je dat allemaal niet wil en dat je een snelle oplossing wilt.
Ik stuur je tevens even een privé berichtje.

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
<?php
$message
='<html>
<head> ....
'
; // zo door tot <tr><td><strong>Gehakt - Snel klaar</strong></td><td>&nbsp</td></tr>


// daarna komen de artikelen:

if($field_6 != '')
    $message .= '<tr><td>Gehakt halfhalf</td><td>$field_6</td></tr>';

// enz..

// aan het einde even afsluiten:

$message .= '
</table>
</body>
</html>'
;
?>
Gewijzigd op 30/09/2013 21:31:22 door Frank Nietbelangrijk
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/09/2013 22:41:23
Quote Anchor link
Jan Roodbaard op 30/09/2013 12:27:13:
Wie weet er een oplossing voor dit probleem zonder dat ik het formulier helemaal opnieuw hoef te maken.

Zoals Frank zegt, zet het assortiment in een database, dan kan je van daaruit het formulier genereren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$result
= mysqli_query($con, "SELECT meat_id, meat_description FROM meats");
if ($result !== false) {
    while ($meat = mysqli_fetch_assoc($result)) {
        echo '<tr><td>' . $meat['meat_description'] . ':</td>
            <td><input type="text" name="meat['
. $meat. ']"></td>';

    }
}

?>


Het formulier uitlezen:
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
<?php
//eerst even de vleesjes uit de database halen in in een array pompen
if ($_SERVER['REQUEST_METHOD'] == 'POST']) {
    $result = mysqli_query($con, "SELECT meat_id, meat_description FROM meats");
    if ($result !== false) {
        $meatdesc = array();
        while ($meat = mysqli_fetch_assoc($result)) {
            $meatsdesc[$meat['meat_id']] = $meat['meat_description'];

        }
    }

//dan de waardes uit het formulier verwerken
    foreach ($_POST['meat'] as $id => $weight) {
        if (trim($weight) != '') {
            $message .= '<tr><td>' . $meatdesc[$key] . '</td><td>' .
                $weight . '</td></tr>';
        }
    }
}

?>

Dit lijkt me een snellere oplossing, dan elke keer voor elk product het veld te controleren.
 



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.