bestel formulier
Pagina: « vorige 1 2 3 4 volgende »
Ronald E op 16/07/2012 19:08:10:
maar is java en javascript niet het zelfde?
De syntaxis van JavaScript vertoont overeenkomsten met de programmeertaal Java. Omdat beide talen het meest zichtbaar zijn op en rond de browser, maar vooral door de naamgeving, worden ze vaak met elkaar verward. De gelijkenis houdt daar echter op, want JavaScript heeft inhoudelijk meer gemeen met functionele programmeertalen, het biedt prototype-gebaseerde overerving en niet, zoals Java en de meeste objectgeoriënteerde talen, klasse-gebaseerde overerving.
(bron: wikipedia)
ik zou dit toch na een keuzes heben gemaakt en dan met 1 knop naar een ander pagina kunen sturen voor controle.
en daarna als het goed is kunnen mailen naar 2 e-mail adressen.
1 e-mail adres geeft de persoon zelf in en de ander is van de site
Toevoeging op 17/07/2012 18:22:48:
ik heb het stuk van post zo hoog mogelijk geplaatst
net onder het java gebeuren maar krijg al gelijk een error
Fatal error: Can't use function return value in write context in array1.php on line 38
en daarna als het goed is kunnen mailen naar 2 e-mail adressen.
1 e-mail adres geeft de persoon zelf in en de ander is van de site
Toevoeging op 17/07/2012 18:22:48:
ik heb het stuk van post zo hoog mogelijk geplaatst
net onder het java gebeuren maar krijg al gelijk een error
Fatal error: Can't use function return value in write context in array1.php on line 38
Code (php)
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
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
<script>
function addOne(spid){
amount = parseInt(document.getElementById('amt' + spid).value) + 1;
document.getElementById('amt' + spid).value = amount;
calcSubTotal(spid);
}
function substractOne(spid){
amount = parseInt(document.getElementById('amt' + spid).value) - 1;
if (amount < 0) {
amount = 0
}
document.getElementById('amt' + spid).value = amount;
calcSubTotal(spid);
}
function calcSubTotal(spid) {
subtotal = parseInt(document.getElementById('amt' + spid).value) *
parseFloat(document.getElementById('price' + spid).value.replace(',' , '.'));
document.getElementById('total' + spid).innerHTML = subtotal.toFixed(2).toString().replace('.',',');
updTotal();
}
function updTotal() {
totalp = 0.00;
el = document.getElementById('pricediv');
prices = el.getElementsByTagName('span');
for (i=0; i < prices.length; i++) {
if (prices[i].id != 'totalprice') totalp += parseFloat(prices[i].innerHTML.replace(',' , '.'));
}
totalpr = totalp.toFixed(2).toString();
document.getElementById('totalprice').innerHTML = totalpr.replace('.', ',');
}
</script>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$count = 0;
$insertvalues = 'VALUES ';
foreach($_POST as $key => $value) {
//controleer of het een aantal veld is en of de ingevulde waarde geen nul is
if (strpos('amt', $key) = 0 && (int)$value != 0) {
//haal het product_id uit $key
$id = substr($key, 3);
$count++;
if (count > 1) {
$insertvalues .= ','; // comma tussen de rijen
}
$insertvalues .= "(@orderid, " . $id . ", " . (int)$value .
"(SELECT price FROM products WHERE id=" . $id . "))";
}
}
if ($count > 0) { // er is wat besteld
include ('dbconnect.php');
//maak een bestelling aan:
$result = mysql_query("INSERT INTO orders (customer_id, order_date)
VALUES (00001, NOW())");
if ($result) {
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
mysql_query("SET @order_id = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
$result = mysql_query($sql);
if ($result) {
mysql_free_result($result);
$result = mysql_query("SELECT
o.amount, o.price_pp, o.amount * o.price_pp AS total, p.prd_name
FROM
order_products AS o
JOIN products AS p ON o.prd_id = p.id
WHERE
o.order_id = " . $order_id);
//hier kun je de bestelling bevestigen
}
}
}
}
?>
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
$prijs = 1;
$border=1;
include('db.php');
$link = mysql_connect($host, $dbnaam, $dbww);
mysql_select_db('test', $link);
$getQuery = "SELECT id, naam, kop, omschrijving, prijs FROM menu";
$runQuery = mysql_query($getQuery);
$aantalrijen = mysql_num_rows($runQuery);
if($runQuery === false) {
echo 'database fout';
}
//echo $aantalrijen;
$schermb="200";
$geldb="80";
$grid = '';
$i=0;
while ( $rij = mysql_fetch_assoc( $runQuery ) ) {
$i++ ;
if ($rij['kop'] === "K"){
?> <div id="pricediv"><table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0"><tr>
<td width="<?php echo $schermb ?>"> </td><td colspan="4">
<center><font size='4'><br><b><u><?php echo $rij['naam'] ?></u></b></font></center>
<center><i><?php echo $rij['omschrijving'] ?></i></center>
</td><td width="<?php echo $schermb ?>"> </td></tr></table>
<?php
}else{
?>
<table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0">
<tr><td width="<?php echo $schermb ?>">
<?php // echo $i ?> </td>
<td ><u><?php echo $rij['naam'] ?></u></td>
<td width="50"> <?php echo "€ ".number_format($rij['prijs'], 2, ',', ' ') ?> </td>
<td width='100'>
<?php
//$nummer="addnr".$i;
echo '<input type="button" onclick="substractOne('.$rij['id'].')" value="-" />';
echo '<input type="text" size="1" name="amt'.$rij['id'].'" id="amt'.$rij['id'].'" value="0" />';
echo '<input type="button" onclick="addOne('.$rij['id'].')" value="+" />';
echo '</td><td width="70" >€ ';
echo '<span id="total'.$rij['id'].'">0,00</span>';
echo '<input type="hidden" name="price'.$rij['id'].'" id="price'.$rij['id'] .'" value="'.$rij['prijs'].'" /></div>';
?>
</td><td width="<?php echo $schermb ?>"> </td></tr>
</table>
<table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0">
<tr><td width="<?php echo $schermb ?>"> </td><td >
<i><?php echo $rij['omschrijving'] ?></i>
</td><td width="<?php echo $schermb ?>"> </td></tr>
</table>
<?php
}
}
?>
<table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="<?php echo $schermb ?>"> </td>
<td ><p align="right">Totaal </td>
<td width="70">���
<span id="totalprice">0,00</span>
</td>
<td width="<?php echo $schermb ?>"> </td></tr>
</table>
</div>
function addOne(spid){
amount = parseInt(document.getElementById('amt' + spid).value) + 1;
document.getElementById('amt' + spid).value = amount;
calcSubTotal(spid);
}
function substractOne(spid){
amount = parseInt(document.getElementById('amt' + spid).value) - 1;
if (amount < 0) {
amount = 0
}
document.getElementById('amt' + spid).value = amount;
calcSubTotal(spid);
}
function calcSubTotal(spid) {
subtotal = parseInt(document.getElementById('amt' + spid).value) *
parseFloat(document.getElementById('price' + spid).value.replace(',' , '.'));
document.getElementById('total' + spid).innerHTML = subtotal.toFixed(2).toString().replace('.',',');
updTotal();
}
function updTotal() {
totalp = 0.00;
el = document.getElementById('pricediv');
prices = el.getElementsByTagName('span');
for (i=0; i < prices.length; i++) {
if (prices[i].id != 'totalprice') totalp += parseFloat(prices[i].innerHTML.replace(',' , '.'));
}
totalpr = totalp.toFixed(2).toString();
document.getElementById('totalprice').innerHTML = totalpr.replace('.', ',');
}
</script>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$count = 0;
$insertvalues = 'VALUES ';
foreach($_POST as $key => $value) {
//controleer of het een aantal veld is en of de ingevulde waarde geen nul is
if (strpos('amt', $key) = 0 && (int)$value != 0) {
//haal het product_id uit $key
$id = substr($key, 3);
$count++;
if (count > 1) {
$insertvalues .= ','; // comma tussen de rijen
}
$insertvalues .= "(@orderid, " . $id . ", " . (int)$value .
"(SELECT price FROM products WHERE id=" . $id . "))";
}
}
if ($count > 0) { // er is wat besteld
include ('dbconnect.php');
//maak een bestelling aan:
$result = mysql_query("INSERT INTO orders (customer_id, order_date)
VALUES (00001, NOW())");
if ($result) {
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
mysql_query("SET @order_id = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
$result = mysql_query($sql);
if ($result) {
mysql_free_result($result);
$result = mysql_query("SELECT
o.amount, o.price_pp, o.amount * o.price_pp AS total, p.prd_name
FROM
order_products AS o
JOIN products AS p ON o.prd_id = p.id
WHERE
o.order_id = " . $order_id);
//hier kun je de bestelling bevestigen
}
}
}
}
?>
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
$prijs = 1;
$border=1;
include('db.php');
$link = mysql_connect($host, $dbnaam, $dbww);
mysql_select_db('test', $link);
$getQuery = "SELECT id, naam, kop, omschrijving, prijs FROM menu";
$runQuery = mysql_query($getQuery);
$aantalrijen = mysql_num_rows($runQuery);
if($runQuery === false) {
echo 'database fout';
}
//echo $aantalrijen;
$schermb="200";
$geldb="80";
$grid = '';
$i=0;
while ( $rij = mysql_fetch_assoc( $runQuery ) ) {
$i++ ;
if ($rij['kop'] === "K"){
?> <div id="pricediv"><table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0"><tr>
<td width="<?php echo $schermb ?>"> </td><td colspan="4">
<center><font size='4'><br><b><u><?php echo $rij['naam'] ?></u></b></font></center>
<center><i><?php echo $rij['omschrijving'] ?></i></center>
</td><td width="<?php echo $schermb ?>"> </td></tr></table>
<?php
}else{
?>
<table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0">
<tr><td width="<?php echo $schermb ?>">
<?php // echo $i ?> </td>
<td ><u><?php echo $rij['naam'] ?></u></td>
<td width="50"> <?php echo "€ ".number_format($rij['prijs'], 2, ',', ' ') ?> </td>
<td width='100'>
<?php
//$nummer="addnr".$i;
echo '<input type="button" onclick="substractOne('.$rij['id'].')" value="-" />';
echo '<input type="text" size="1" name="amt'.$rij['id'].'" id="amt'.$rij['id'].'" value="0" />';
echo '<input type="button" onclick="addOne('.$rij['id'].')" value="+" />';
echo '</td><td width="70" >€ ';
echo '<span id="total'.$rij['id'].'">0,00</span>';
echo '<input type="hidden" name="price'.$rij['id'].'" id="price'.$rij['id'] .'" value="'.$rij['prijs'].'" /></div>';
?>
</td><td width="<?php echo $schermb ?>"> </td></tr>
</table>
<table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0">
<tr><td width="<?php echo $schermb ?>"> </td><td >
<i><?php echo $rij['omschrijving'] ?></i>
</td><td width="<?php echo $schermb ?>"> </td></tr>
</table>
<?php
}
}
?>
<table border="<?php echo $border ?>" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="<?php echo $schermb ?>"> </td>
<td ><p align="right">Totaal </td>
<td width="70">���
<span id="totalprice">0,00</span>
</td>
<td width="<?php echo $schermb ?>"> </td></tr>
</table>
</div>
Of je het in de db opslaat, of als mail verstuurt (ik zou het trouwens allebei doen, de code heb je al, alleen nog een paar tabelletjes bijmaken ;-)) maakt voor de werkwijze niet zoveel uit.
Toevoeging op 17/07/2012 18:40:37:
Ik ben een = vergeten daar
het moet dus zijn
if (strpos('amt', $key) == 0) ....
Toevoeging op 17/07/2012 18:40:37:
Ik ben een = vergeten daar
het moet dus zijn
if (strpos('amt', $key) == 0) ....
Gewijzigd op 17/07/2012 18:41:17 door Ger van Steenderen
ik weet niet over welke code je het nu heb. ik zie over de 3 bladzijdes niks van form en welke tabellen moet ik in die groep er bij maken dan.
De code om de gegevens in de database op te slaan, en in de database moet je de tabellen aanmaken, bv als volgt:
Tabel categories:
cat_id INT(11) (PK)
cat_name VARCHAR(50)
Tabel products:
prd_id INT(11)(PK)
prd_name VARCHAR(50)
prd_descr TEXT
price_pp FLOAT(6,2)
Tabel orders:
order_id INT(11) (PK)
cust_id INT(11)
order_date DATETIME
order_status TINYINT(2)
Tabel order_products:
order_id INT(11) (PK)
prd_id INT(11) (PK) -- de PK is een combi van order_id en prd_id
amount TINYINT(4) UNSIGNED -- of (MEDIUM)INT als je +255 aantal verwacht
price_pp FLOAT(6,2) -- om prijswijzigingen af te vangen
Tabel customers
cust_id INT(11)
cust_name VARCHAR(101)
cust_email VARCHAR(101)
... -- en nog een aantal velden voor de (eventuele) adres gegevens
Tabel categories:
cat_id INT(11) (PK)
cat_name VARCHAR(50)
Tabel products:
prd_id INT(11)(PK)
prd_name VARCHAR(50)
prd_descr TEXT
price_pp FLOAT(6,2)
Tabel orders:
order_id INT(11) (PK)
cust_id INT(11)
order_date DATETIME
order_status TINYINT(2)
Tabel order_products:
order_id INT(11) (PK)
prd_id INT(11) (PK) -- de PK is een combi van order_id en prd_id
amount TINYINT(4) UNSIGNED -- of (MEDIUM)INT als je +255 aantal verwacht
price_pp FLOAT(6,2) -- om prijswijzigingen af te vangen
Tabel customers
cust_id INT(11)
cust_name VARCHAR(101)
cust_email VARCHAR(101)
... -- en nog een aantal velden voor de (eventuele) adres gegevens
Gewijzigd op 17/07/2012 19:44:46 door Ger van Steenderen
oke die tabellen zijn aan gemaakt.
en alles werkt nu met de nieuwe namen.
maar wat je bedoeld met: de PK is een combi van order_id en prd_id
moet daar wat mee gebeuren?
maar hoe krijg ik dan een bestelling in die lijst van order_products
ik vraag wel veel nu. maar zo ver had ik het nog niet uitgedacht.
en alles werkt nu met de nieuwe namen.
maar wat je bedoeld met: de PK is een combi van order_id en prd_id
moet daar wat mee gebeuren?
maar hoe krijg ik dan een bestelling in die lijst van order_products
ik vraag wel veel nu. maar zo ver had ik het nog niet uitgedacht.
Geeft niet. Wat ik bedoel met combi is dat ik een primary key plaats op de samenvoeging van de kolommen prd_id en order_id. De meesten hier maken nog een aparte kolom daarvoor maar ik persoonlijk vind dat overbodig.
Ik heb in mijn vorige script voorbeeld al ingebouwd om de bestelling zowel in de orders als de order_products te krijgen, als je iets niet begrijpt moet even aangeven wat niet.
Ik heb in mijn vorige script voorbeeld al ingebouwd om de bestelling zowel in de orders als de order_products te krijgen, als je iets niet begrijpt moet even aangeven wat niet.
dat ik niet iets zie van een button op alles te posten of naar die database te schrijven.
naa een aantal producten gekozen te hebben moet je toch op bestel of zo drukken op het te verwerken naar de database?
en dan zouden de gegevens naar order_products geschreven worden
naa een aantal producten gekozen te hebben moet je toch op bestel of zo drukken op het te verwerken naar de database?
en dan zouden de gegevens naar order_products geschreven worden
Ik ben er vanuit gegaan dat je dat zelf al gedaan had. Ik heb je geen volledig afgewerkt script gegeven, maar geprobeerd je op weg te helpen.
Ik hoop echt dat je me nog verder op weg wil helpen.
Er zijn een aantal dingen bij gekomen die ik niet weet te gebruiken.
Ik heb wel eens een formulier gemaakt en groot deel gevonden waar men zelf gegevens moeten invullen.
En gegevens opzoekt via een postcode en dat stript van een website.
En daar na word ge e-mailt maar 3 e-mail adressen.
Het mailtje had ik ook nog opgevrolijkt met het logo.
De gegevens worden nog niet opgeslagen maar nu dat er in de database ruimte is komt dat wel er in.
Toevoeging op 18/07/2012 12:55:42:
op welke manier moet ik dit nu posten?
Er zijn een aantal dingen bij gekomen die ik niet weet te gebruiken.
Ik heb wel eens een formulier gemaakt en groot deel gevonden waar men zelf gegevens moeten invullen.
En gegevens opzoekt via een postcode en dat stript van een website.
En daar na word ge e-mailt maar 3 e-mail adressen.
Het mailtje had ik ook nog opgevrolijkt met het logo.
De gegevens worden nog niet opgeslagen maar nu dat er in de database ruimte is komt dat wel er in.
Toevoeging op 18/07/2012 12:55:42:
op welke manier moet ik dit nu posten?
Gewijzigd op 18/07/2012 13:46:22 door Ronald E
<input type="submit" ... />?
ik bekijk wat uitkomsten wat ik er van terug krijg en dat is:
1 * amt1
ce1 * price1
ce2 * price2
3 * amt3
ce3 * price3
5 * amt5
ce5 * price5
ce6 * price6
8
Klopt dat?
en dat komt daar dat stukje wat ik van je had gekregen
1 * amt1
ce1 * price1
ce2 * price2
3 * amt3
ce3 * price3
5 * amt5
ce5 * price5
ce6 * price6
8
Klopt dat?
en dat komt daar dat stukje wat ik van je had gekregen
Code (php)
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
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
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$count = 0;
$insertvalues = 'VALUES ';
foreach($_POST as $key => $value) {
//controleer of het een aantal veld is en of de ingevulde waarde geen nul is
if (strpos('amt', $key) == 0 && (int)$value != 0) {
//haal het product_id uit $key
$id = substr($key, 3);
echo $id." * ".$key."<br>";
$count++;
if ($count > 1) {
$insertvalues .= ','; // comma tussen de rijen
}
$insertvalues .= "(@orderid, " . $id . ", " . (int)$value ."(SELECT price FROM products WHERE id=" . $id . "))";
}
}
echo "<br> ".$count."<br>";
if ($count > 0) { // er is wat besteld
include ('databaselogin.php');
//maak een bestelling aan:
$result = mysql_query("INSERT INTO orders (customer_id, order_date)
VALUES (00001, NOW())");
if ($result) {
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
mysql_query("SET @order_id = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
$result = mysql_query($sql);
if ($result) {
mysql_free_result($result);
$result = mysql_query("SELECT
o.amount, o.prd_prijs_bestel_pp, o.amount * o.prd_prijs_bestel_pp AS total, p.prd_name
FROM
order_products AS o
JOIN products AS p ON o.prd_id = p.id
WHERE
o.order_id = " . $order_id);
//hier kun je de bestelling bevestigen
}
}
}
}
$count = 0;
$insertvalues = 'VALUES ';
foreach($_POST as $key => $value) {
//controleer of het een aantal veld is en of de ingevulde waarde geen nul is
if (strpos('amt', $key) == 0 && (int)$value != 0) {
//haal het product_id uit $key
$id = substr($key, 3);
echo $id." * ".$key."<br>";
$count++;
if ($count > 1) {
$insertvalues .= ','; // comma tussen de rijen
}
$insertvalues .= "(@orderid, " . $id . ", " . (int)$value ."(SELECT price FROM products WHERE id=" . $id . "))";
}
}
echo "<br> ".$count."<br>";
if ($count > 0) { // er is wat besteld
include ('databaselogin.php');
//maak een bestelling aan:
$result = mysql_query("INSERT INTO orders (customer_id, order_date)
VALUES (00001, NOW())");
if ($result) {
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
mysql_query("SET @order_id = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
$result = mysql_query($sql);
if ($result) {
mysql_free_result($result);
$result = mysql_query("SELECT
o.amount, o.prd_prijs_bestel_pp, o.amount * o.prd_prijs_bestel_pp AS total, p.prd_name
FROM
order_products AS o
JOIN products AS p ON o.prd_id = p.id
WHERE
o.order_id = " . $order_id);
//hier kun je de bestelling bevestigen
}
}
}
}
Het klopt dat je die uitkomst krijgt, maar die is niet goed vanwege een fout mijnerzijds en de manier waarop PHP met false omgaat.
In ieder geval deze regel:
Moet zijn
In ieder geval deze regel:
Moet zijn
ok dat heb ik aan gepast
nu bekijk ik de string
$insertvalues .= "(@order_id, ".$id.", ".(int)$value."(SELECT prd_prijs_bestel_pp FROM products WHERE prd_id=".$id."))";
En daar krijg ik als antwoord uit.
(@order_id, 1, 1(SELECT prd_prijs_bestel_pp FROM products WHERE prd_id=1)),
(@order_id, ce1, 2(SELECT prd_prijs_bestel_pp FROM products WHERE prd_id=ce1)),
kreeg wel extra kolommen maar die zijn gelijk aan de 2de regel wel id verhoogt.
en de eerste regel is met 1 verhoogt bij selectie
klopt dit zo?
dat eerste stukje kan ik niet echt rijmen (@order_id, 1, 1(SELECT
nu bekijk ik de string
$insertvalues .= "(@order_id, ".$id.", ".(int)$value."(SELECT prd_prijs_bestel_pp FROM products WHERE prd_id=".$id."))";
En daar krijg ik als antwoord uit.
(@order_id, 1, 1(SELECT prd_prijs_bestel_pp FROM products WHERE prd_id=1)),
(@order_id, ce1, 2(SELECT prd_prijs_bestel_pp FROM products WHERE prd_id=ce1)),
kreeg wel extra kolommen maar die zijn gelijk aan de 2de regel wel id verhoogt.
en de eerste regel is met 1 verhoogt bij selectie
klopt dit zo?
dat eerste stukje kan ik niet echt rijmen (@order_id, 1, 1(SELECT
Er zit nog een foutje in de samenstelling van de query, maar dat "ce1" zou er sowieso niet in mogen voorkomen, als je het aangepast zoals gezegd.
De aangepaste code:(het eerste gedeelte)
Dan krijg je deze query:
Hierdoor voeg je in één query meerdere rijen tergelijktijd in.
de @ voor orderid betekent in sql dat het een (user)variabele is.
(SELECT price FROM products WHERE id=2) is een subquery waarmee de prijs van het product uit de producten tabel gehaald wordt.
De aangepaste code:(het eerste gedeelte)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$count = 0;
$insertvalues = 'VALUES ';
foreach($_POST as $key => $value) {
//controleer of het een aantal veld is en of de ingevulde waarde geen nul is
if (strpos($key, 'amt') === 0 && (int)$value != 0) {
//haal het product_id uit $key
$id = substr($key, 3);
$count++;
if (count > 1) {
$insertvalues .= ','; // comma tussen de rijen
}
$insertvalues .= "(@orderid, " . $id . ", " . (int)$value .
",(SELECT price FROM products WHERE id=" . $id . "))";
}
}
echo "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
/* if ($count > 0) { // er is wat besteld
//dit stukje blijft hetzelfde
.... */
}
?>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$count = 0;
$insertvalues = 'VALUES ';
foreach($_POST as $key => $value) {
//controleer of het een aantal veld is en of de ingevulde waarde geen nul is
if (strpos($key, 'amt') === 0 && (int)$value != 0) {
//haal het product_id uit $key
$id = substr($key, 3);
$count++;
if (count > 1) {
$insertvalues .= ','; // comma tussen de rijen
}
$insertvalues .= "(@orderid, " . $id . ", " . (int)$value .
",(SELECT price FROM products WHERE id=" . $id . "))";
}
}
echo "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
/* if ($count > 0) { // er is wat besteld
//dit stukje blijft hetzelfde
.... */
}
?>
Dan krijg je deze query:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
INSERT INTO
order_products (order_id, prd_id, amount, price_pp)
VALUES
(@orderid, 2, 2,(SELECT price FROM products WHERE id=2)),
(@orderid, 3, 2,(SELECT price FROM products WHERE id=3)),
(@orderid, 5, 2,(SELECT price FROM products WHERE id=5)
order_products (order_id, prd_id, amount, price_pp)
VALUES
(@orderid, 2, 2,(SELECT price FROM products WHERE id=2)),
(@orderid, 3, 2,(SELECT price FROM products WHERE id=3)),
(@orderid, 5, 2,(SELECT price FROM products WHERE id=5)
Hierdoor voeg je in één query meerdere rijen tergelijktijd in.
de @ voor orderid betekent in sql dat het een (user)variabele is.
(SELECT price FROM products WHERE id=2) is een subquery waarmee de prijs van het product uit de producten tabel gehaald wordt.
Gewijzigd op 19/07/2012 12:04:21 door Ger van Steenderen
Nu werkt het eerste stuk er van.
De @orderid kom ik niet in me database tegen.
maar hij post nog niks in de tabel order_products.
kan ik nog een paar test punten in maken ?
De @orderid kom ik niet in me database tegen.
maar hij post nog niks in de tabel order_products.
Code (php)
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
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
if ($count > 0) { // er is wat besteld
echo "ja ".$count."<br>";
include ('databaselogin.php');
//maak een bestelling aan:
$result = mysql_query("INSERT INTO orders (customer_id, order_date)
VALUES (00001, NOW())");
if ($result) {
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
echo $order_id;
mysql_query("SET @order_id = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
echo $sql." <br>";
$result = mysql_query($sql);
if ($result) {
mysql_free_result($result);
$result = mysql_query("SELECT
o.amount, o.prd_prijs_bestel_pp, o.amount * o.prd_prijs_bestel_pp AS total, p.prd_name
FROM
order_products AS o
JOIN products AS p ON o.prd_id = p.id
WHERE
o.order_id = " . $order_id);
//hier kun je de bestelling bevestigen
}
}
}
}
echo "ja ".$count."<br>";
include ('databaselogin.php');
//maak een bestelling aan:
$result = mysql_query("INSERT INTO orders (customer_id, order_date)
VALUES (00001, NOW())");
if ($result) {
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
echo $order_id;
mysql_query("SET @order_id = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
echo $sql." <br>";
$result = mysql_query($sql);
if ($result) {
mysql_free_result($result);
$result = mysql_query("SELECT
o.amount, o.prd_prijs_bestel_pp, o.amount * o.prd_prijs_bestel_pp AS total, p.prd_name
FROM
order_products AS o
JOIN products AS p ON o.prd_id = p.id
WHERE
o.order_id = " . $order_id);
//hier kun je de bestelling bevestigen
}
}
}
}
kan ik nog een paar test punten in maken ?
Je if ($result) op regel 6 en 15 hebben zo geen nut natuurlijk.
if $result is wat? Je geeft niet op wat $result moet zijn. Bijvoorbeeld if ($result === true)
if $result is wat? Je geeft niet op wat $result moet zijn. Bijvoorbeeld if ($result === true)
Chris, dat is helemaal niet nodig:
if($result) is hezelfde als if($result == true)
Omdat het een insert query betreft kan je alleen een bool terug krijgen dus kan er niets fout gaan.
Ronald,
Je moet niet alles zomaar letterlijk overnemen, maar zelf ook wat controleren.
Ik kan alleen maar raden hoe je tabellen in elkaar steken, dus je moet de veldnamen in queries aanpassen aan jouw tabellen.
Ook moet je controleren of de queries goed gaan, dwz:
if($result) is hezelfde als if($result == true)
Omdat het een insert query betreft kan je alleen een bool terug krijgen dus kan er niets fout gaan.
Ronald,
Je moet niet alles zomaar letterlijk overnemen, maar zelf ook wat controleren.
Ik kan alleen maar raden hoe je tabellen in elkaar steken, dus je moet de veldnamen in queries aanpassen aan jouw tabellen.
Ook moet je controleren of de queries goed gaan, dwz:
Ger van Steenderen op 19/07/2012 10:35:22:
....
de @ voor orderid betekent in sql dat het een (user)variabele is.
....
de @ voor orderid betekent in sql dat het een (user)variabele is.
....
Gewijzigd op 19/07/2012 13:11:26 door Ger van Steenderen
@Ger,
Ik ben geen voorstander om het op die manier te doen, maar dat is een persoonlijke manier van schrijven.
Ik ben geen voorstander om het op die manier te doen, maar dat is een persoonlijke manier van schrijven.
het wilt echt niet naar de database schrijven.
bij de eerst if ($result === true) { moet het naar de database worden geschreven verwacht ik maar niks.
en bij mysql_free_result($result); word result weer leeg gemaakt.
op 1 of andere manier kan hij niet de database benaderen is daar een test voor?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
echo "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
if ($count > 0) { // er is wat besteld
echo "ja ".$count."<br>";
//maak een bestelling aan:
$NOW=date("Y-m-d \ H:i");
echo $NOW."<br>";
$result = mysql_query("INSERT INTO orders (order_id,cust_id, order_date, order_status) VALUES (,00001, ".$NOW.",)");
if ($result === true) {
Echo "result goed";
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
mysql_query("SET @orderid = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
//echo $sql." <br>";
$result = mysql_query($sql);
if ($result === true) {
Echo "result 2 goed";
if ($count > 0) { // er is wat besteld
echo "ja ".$count."<br>";
//maak een bestelling aan:
$NOW=date("Y-m-d \ H:i");
echo $NOW."<br>";
$result = mysql_query("INSERT INTO orders (order_id,cust_id, order_date, order_status) VALUES (,00001, ".$NOW.",)");
if ($result === true) {
Echo "result goed";
mysql_free_result($result);
//omdat een uservar gebruikt wordt in de query deze eerst even instellen
$order_id = mysql_insert_id();
mysql_query("SET @orderid = " . $insert_id);
$sql = "INSERT INTO order_products (order_id, prd_id, amount, price_pp) " . $insertvalues;
//echo $sql." <br>";
$result = mysql_query($sql);
if ($result === true) {
Echo "result 2 goed";
bij de eerst if ($result === true) { moet het naar de database worden geschreven verwacht ik maar niks.
en bij mysql_free_result($result); word result weer leeg gemaakt.
op 1 of andere manier kan hij niet de database benaderen is daar een test voor?




