bestel formulier
Hoop dat jullie me kunnen met een opzet en waar ik om moet denken.
De lijst met producten staan in de database dat zijn id, product, omschrijving, prijs.
Maar in mijn beleving kom ik uit in sub formulier in een formulier.
Wand als ik de lijst op de pagina zet wil ik dat achter elk product eerst 0 staat en met + en – kan kiezen de hoeveelheid.
En na die keuzes moet je de hele bestelling verzonden worden en dan alleen de lijst wat groter is dan 0.
Ook moet de prijs mee gerekend worden zo dat ze gelijk de totaal prijs weten.
Ik zit dus met het probleem van dat + en – in 1 formulier dan de prijs van totaal in het hele formulier.
Maar wat is je precieze vraag?
ik zoek iets wat er zo een beetje uitziet.
id1 product1 omschrijving1 prijs1 - 0 +
id2 product2 omschrijving2 prijs2 - 0 +
id3 product3 omschrijving3 prijs3 - 0 +
prijstotaal
[bestel] [wis]
Dat zal je dus even moeten maken lijkt mij. Ik denk niet dat iemand dat zo kant en klaar heeft liggen.
Maar nu waar pas ik dat van de prijs toe en dat het dan ook nog optelt
Ik weet wel dat nog alleen html en java is maar om zeten naar php lukt wel
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
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
<?php
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<script type="text/javascript">
<!--
function addNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu + 1);
document.getElementById(spid).innerHTML = aantalStraks;
}
function minNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu - 1);
if (aantalStraks<0){
aantalStraks=0;
}
document.getElementById(spid).innerHTML = aantalStraks;
}
-->
</script>
<title>Optellen</title>
</head>
<body>
<div>product1 <input type="button" value="-" onclick="minNumber('addnr1')"></a> <span id="addnr1">0</span> <input type="button" value="+" onclick="addNumber('addnr1')"></a> </div>
<div>product2 <input type="button" value="-" onclick="minNumber('addnr2')"></a> <span id="addnr2">0</span> <input type="button" value="+" onclick="addNumber('addnr2')"></a> </div>
<p> </p>
</body>
</html>
?>
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<script type="text/javascript">
<!--
function addNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu + 1);
document.getElementById(spid).innerHTML = aantalStraks;
}
function minNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu - 1);
if (aantalStraks<0){
aantalStraks=0;
}
document.getElementById(spid).innerHTML = aantalStraks;
}
-->
</script>
<title>Optellen</title>
</head>
<body>
<div>product1 <input type="button" value="-" onclick="minNumber('addnr1')"></a> <span id="addnr1">0</span> <input type="button" value="+" onclick="addNumber('addnr1')"></a> </div>
<div>product2 <input type="button" value="-" onclick="minNumber('addnr2')"></a> <span id="addnr2">0</span> <input type="button" value="+" onclick="addNumber('addnr2')"></a> </div>
<p> </p>
</body>
</html>
?>
Toevoeging op 10/07/2012 09:49:53:
Kan imand me uitleg geven over.
met Java heb ik geen ervaring mee, dus hoop ik op jullie ervaring.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
<form name="f2" action="../formscript.asp" method="post">
<input name="getal1" type="text" value="10" size="8"><br>
<input name="getal2" type="text" value="20" size="8"><br>
<Button type="button"
onclick="f2.som.value=parseInt(f2.getal1.value) + parseInt(f2.getal2.value)">
Som
</Button><br>
<input name="som" type="text" size="8" ><br><br>
</form>
?>
<form name="f2" action="../formscript.asp" method="post">
<input name="getal1" type="text" value="10" size="8"><br>
<input name="getal2" type="text" value="20" size="8"><br>
<Button type="button"
onclick="f2.som.value=parseInt(f2.getal1.value) + parseInt(f2.getal2.value)">
Som
</Button><br>
<input name="som" type="text" size="8" ><br><br>
</form>
?>
Hoe is die som nu opgebouwd.
F2= is van het formulier moet die gebruikt worden blijven
Som = waar de waarde word neer gezet.
Getal? =
Value = dit is echt een raadsel voor me.
Want dit moet ik samen voegen met dat andere script
Gewijzigd op 10/07/2012 09:49:39 door Ronald E
ik zou hiervoor trouwens schoon beginnen dus niet een bestaand script aanpassen. ( je leert er tenslotte van en je bent sneller klaar dan een bestaand script om bouwen )
maar ik weet niks van java of java script.
dan ben ik aan gewezen op het zoeken naar wat bestands.
het stuk php krijg ik wel voor elkaar.
maar nu moet het aantal geplust kunnen worden en dan daar achter de prijs.
en moet het een gepost worden naar een e-mail adres. met in die lijst een totaal bedrag.
Maar dat ik niet weet waar ik moet beginnen om die velden te laten rekenen moet ik het doen met oude script.
Of waar zou ik de goede informatie kunnen vinden waar ik het uit kan leren.
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
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
<script type="text/javascript">
<!--
function addNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu + 1);
document.getElementById(spid).innerHTML = aantalStraks;
}
function minNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu - 1);
if (aantalStraks<0){
aantalStraks=0;
}
document.getElementById(spid).innerHTML = aantalStraks;
}
-->
</script>
<?php
$tabel[] = array("id"=> 0,"naam" => "Taart", "omschrijving" => "Taart", "prijs" => "");
$tabel[] = array("id"=> 1,"naam" => "Appeltaart", "omschrijving" => "Taart gevuld met stukjes appels en krenten", "prijs" => "2,50");
$tabel[] = array("id"=> 2,"naam" => "Vlaaientaart", "omschrijving" => "Vlaai", "prijs" => "1,50");
$tabel[] = array("id"=> 3,"naam" => "Boterkoek", "omschrijving" => "Koek met veel boter bereid", "prijs" => "1,25");
$tabel[] = array("id"=> 4,"naam" => "Dranken", "omschrijving" => "Dranken", "prijs" => "");
$tabel[] = array("id"=> 5,"naam" => "Cola", "omschrijving" => "", "prijs" => "1,25");
$tabel[] = array("id"=> 6,"naam" => "Sinas", "omschrijving" => "", "prijs" => "1,25");
$tabel[] = array("id"=> 7,"naam" => "Thee", "omschrijving" => "In verschillende smaken", "prijs" => "1,25");
$aantal=sizeof($tabel)-1;
for ($i = 0; $i <= $aantal; $i++) {
$product=$tabel[$i];
if ($product['naam'] == $product['omschrijving']){
echo "<br><b>".$product['naam']."</b><br>";
}else{
echo $product['naam']." ".$product['prijs']." ";
$nummer="addnr".$i;
?><input type="button" value="-" onclick="minNumber('<?php echo $nummer ?>')"></a> <span id="<?php echo $nummer ?>">0</span> <input type="button" value="+" onclick="addNumber('<?php echo $nummer ?>')"></a></br><?php
if ($product['omschrijving']<>""){
echo "<i>".$product['omschrijving']."</i><br>";
}
}
}
?>
<!--
function addNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu + 1);
document.getElementById(spid).innerHTML = aantalStraks;
}
function minNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu - 1);
if (aantalStraks<0){
aantalStraks=0;
}
document.getElementById(spid).innerHTML = aantalStraks;
}
-->
</script>
<?php
$tabel[] = array("id"=> 0,"naam" => "Taart", "omschrijving" => "Taart", "prijs" => "");
$tabel[] = array("id"=> 1,"naam" => "Appeltaart", "omschrijving" => "Taart gevuld met stukjes appels en krenten", "prijs" => "2,50");
$tabel[] = array("id"=> 2,"naam" => "Vlaaientaart", "omschrijving" => "Vlaai", "prijs" => "1,50");
$tabel[] = array("id"=> 3,"naam" => "Boterkoek", "omschrijving" => "Koek met veel boter bereid", "prijs" => "1,25");
$tabel[] = array("id"=> 4,"naam" => "Dranken", "omschrijving" => "Dranken", "prijs" => "");
$tabel[] = array("id"=> 5,"naam" => "Cola", "omschrijving" => "", "prijs" => "1,25");
$tabel[] = array("id"=> 6,"naam" => "Sinas", "omschrijving" => "", "prijs" => "1,25");
$tabel[] = array("id"=> 7,"naam" => "Thee", "omschrijving" => "In verschillende smaken", "prijs" => "1,25");
$aantal=sizeof($tabel)-1;
for ($i = 0; $i <= $aantal; $i++) {
$product=$tabel[$i];
if ($product['naam'] == $product['omschrijving']){
echo "<br><b>".$product['naam']."</b><br>";
}else{
echo $product['naam']." ".$product['prijs']." ";
$nummer="addnr".$i;
?><input type="button" value="-" onclick="minNumber('<?php echo $nummer ?>')"></a> <span id="<?php echo $nummer ?>">0</span> <input type="button" value="+" onclick="addNumber('<?php echo $nummer ?>')"></a></br><?php
if ($product['omschrijving']<>""){
echo "<i>".$product['omschrijving']."</i><br>";
}
}
}
?>
ik weet niet of me aanpak goed is daar hoop ik wel wat van te horen.
uit lijnen gaat wel goed maar nog even weg gehaald voor het script.
maar wat ik nog zoek is om de array van aantal[i$] de aantal op te slaan. zo dat ik bij het posten de bestelde aantal plus het product kan laten versturen.
als ik dat goed in de array heb zitten kom ik weer een heel eind.
Gewijzigd op 12/07/2012 10:12:59 door Ronald E
Even een kort vraagje waarom zo moeilijk doen? die table is toch nergens voor nodig? ik neem aan dat je gebruik maakt van een database? ( of een ini file ) of ben je echt van plan om al je producten hardcoded op te slaan?
die lijst gaat de sql database in.
op die manier kan ik alles laten zien wat niet 0 is. en zo wil ik de te posten lijst maken. of gaat dat niet goed?
hier even een opzetje.. ( je moet het zelf uiteraard aanvullen )
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
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
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
/*
* haal alles uit de database
*/
$getQuery = "SELECT
rij, rij,
FROM
table
";
// query uitvoeren
$runQuery = mysql_query($getQuery);
// controle op query ( of hij gelukt is )
if($runQuery === false)
{
echo 'database fout';
}
else
{
// ga door elke rij heen en zet alle waardes in een assoc array
$msg = "";
while($row = mysql_fetch_assoc($runQuery))
{
// elke rij in $msg variable zetten
$msg = $row['rij'];
$msg .= $row['rij'];
$msg .= $row['rij'];
}
// echo $msg waar je msg weer wilt geven.
echo $msg;
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL);
/*
* haal alles uit de database
*/
$getQuery = "SELECT
rij, rij,
FROM
table
";
// query uitvoeren
$runQuery = mysql_query($getQuery);
// controle op query ( of hij gelukt is )
if($runQuery === false)
{
echo 'database fout';
}
else
{
// ga door elke rij heen en zet alle waardes in een assoc array
$msg = "";
while($row = mysql_fetch_assoc($runQuery))
{
// elke rij in $msg variable zetten
$msg = $row['rij'];
$msg .= $row['rij'];
$msg .= $row['rij'];
}
// echo $msg waar je msg weer wilt geven.
echo $msg;
}
?>
Toevoeging op 12/07/2012 11:01:55:
Edit:
als je dit gedaan hebt kunnen we weer een stapje verder kijken met hoe het dan moet.
maar kan ik de function ook de teller van php gebruiken?
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$i = $_POST['current_value'];
if(isset($_POST['plus']))
{
$i++;
}
if(isset($_POST['min']))
{
$i--;
}
}
$prijs = 10;
$prijs *= $i;
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
prijs <span><?php echo $prijs; ?></span>
<form action="" method="post">
<input type="submit" name="min" value="-"> <input name="current_value" type="text" value=<?php echo $i ?> > <input type="submit" name="plus" value="+">
</form>
</body>
</html>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$i = $_POST['current_value'];
if(isset($_POST['plus']))
{
$i++;
}
if(isset($_POST['min']))
{
$i--;
}
}
$prijs = 10;
$prijs *= $i;
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
prijs <span><?php echo $prijs; ?></span>
<form action="" method="post">
<input type="submit" name="min" value="-"> <input name="current_value" type="text" value=<?php echo $i ?> > <input type="submit" name="plus" value="+">
</form>
</body>
</html>
Om dat ik nooit weet hoe groot die lijst word en dan moet ik voor iedere regel ook input en een output moeten maken en het kan best zo zijn dat er 10 of wel veel meer verschillende producten worden gekocht.
ik wil graag dat de mensen zelf kunnen kliken op de hoeveelheid met het bedrag wat het kost perstuk er voor. en daar achter dan wat het maal het aantal kost.
daarna moet het verstuurt worden dan dan wil ik versturen alles waar het aantal niet nul is.
html kan toch uit zich zelf niet rekenen?
@Ronald
en als je het zo wilt hebben als je het hebben wilt dan moet je mijn manier maar gebruiken en als je het echt te moeilijk vind die van wouter. maar dan krijg je dus geen realtime bedrag te zien.
en zo moeilijk is het toch niet? je kan het makkelijk allemaal door php zelf laten genereren en elke box dan een eigen id o.i.d. meegeven en aan de hand daarvan ga je dan hetgeen wat 1 of hoger heeft in de database stoppen.
maar nu bij 1 klik gaat alle in 1 keer omhoog. dus dan moet ik voor alle regels een aparte uitvoer maken. Dan krijg je r ook een input voor alle regels. Of denk ik nu fout?
De lijst kan wel 100 producten bevatten.
ik heb het nu zo
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
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
<script type="text/javascript">
<!--
function addNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu + 1);
document.getElementById(spid).innerHTML = aantalStraks;
}
function minNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu - 1);
if (aantalStraks<0){
aantalStraks=0;
}
document.getElementById(spid).innerHTML = aantalStraks;
}
-->
</script>
<?php
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$in = $_POST['current_value'];
if(isset($_POST['plus']))
{
$in++;
}
if(isset($_POST['min']))
{
$in--;
if ($in<0) {
$in=0;
}
}
}
$prijs = 10;
//$prijs = $in;
ini_set('display_errors',1);
error_reporting(E_ALL);
include('databaselogin.php');
$link = mysql_connect($host, $dbnaam, $dbww);
mysql_select_db('test', $link);
$getQuery = "SELECT * FROM menu";
$runQuery = mysql_query($getQuery);
$aantalrijn = mysql_num_rows($runQuery);
if($runQuery === false)
{
echo 'database fout';
}
else
{
echo $aantalrijn;
$i=0;
while ( $rij = mysql_fetch_array( $runQuery ) ) {
$i=$i+1;
if ($rij['kop'] === "K"){
echo '<table border="1" width="100%"><tr><td width="80"> </td><td colspan="5">';
echo "<center><font size='4'><br><b>".$rij['naam']."</b></font></center>";
echo "<center><i>".$rij['omschrijving']."</i></center>";
echo '</td><td width="80"> </td></tr></table>';
}else{
echo '<table border="1" width="100%"><tr><td width="80"> ';
echo $i." </td><td> ".$rij['naam']." <br><i>".$rij['omschrijving']."</i></td><td width='80' valign='top'> ".number_format($rij['prijs'], 2, ',', ' ')." </td><td width='120' valign='top'> ";
$nummer="addnr".$i;
echo '<form action="" method="post">';
echo '<input type="submit" name="min" value="-"> <input name="current_value" type="text" size="5" value='.$in.' ><input type="submit" name="plus" value="+">';
echo '</form>';
echo'</td><td width="80" valign="top">'.number_format(($rij['prijs']*$in), 2, ',', ' ');
echo '</td><td width="80"> </td></tr></table>';
}
}
}
?>
<!--
function addNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu + 1);
document.getElementById(spid).innerHTML = aantalStraks;
}
function minNumber(spid) {
aantalNu = parseInt(document.getElementById(spid).innerHTML);
aantalStraks = (aantalNu - 1);
if (aantalStraks<0){
aantalStraks=0;
}
document.getElementById(spid).innerHTML = aantalStraks;
}
-->
</script>
<?php
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$in = $_POST['current_value'];
if(isset($_POST['plus']))
{
$in++;
}
if(isset($_POST['min']))
{
$in--;
if ($in<0) {
$in=0;
}
}
}
$prijs = 10;
//$prijs = $in;
ini_set('display_errors',1);
error_reporting(E_ALL);
include('databaselogin.php');
$link = mysql_connect($host, $dbnaam, $dbww);
mysql_select_db('test', $link);
$getQuery = "SELECT * FROM menu";
$runQuery = mysql_query($getQuery);
$aantalrijn = mysql_num_rows($runQuery);
if($runQuery === false)
{
echo 'database fout';
}
else
{
echo $aantalrijn;
$i=0;
while ( $rij = mysql_fetch_array( $runQuery ) ) {
$i=$i+1;
if ($rij['kop'] === "K"){
echo '<table border="1" width="100%"><tr><td width="80"> </td><td colspan="5">';
echo "<center><font size='4'><br><b>".$rij['naam']."</b></font></center>";
echo "<center><i>".$rij['omschrijving']."</i></center>";
echo '</td><td width="80"> </td></tr></table>';
}else{
echo '<table border="1" width="100%"><tr><td width="80"> ';
echo $i." </td><td> ".$rij['naam']." <br><i>".$rij['omschrijving']."</i></td><td width='80' valign='top'> ".number_format($rij['prijs'], 2, ',', ' ')." </td><td width='120' valign='top'> ";
$nummer="addnr".$i;
echo '<form action="" method="post">';
echo '<input type="submit" name="min" value="-"> <input name="current_value" type="text" size="5" value='.$in.' ><input type="submit" name="plus" value="+">';
echo '</form>';
echo'</td><td width="80" valign="top">'.number_format(($rij['prijs']*$in), 2, ',', ' ');
echo '</td><td width="80"> </td></tr></table>';
}
}
}
?>
Gewijzigd op 13/07/2012 10:51:00 door Ronald E
en gebruik mysql_fetch_assoc ipv array regel 57
elke regel echo is ook niet heel handig je kan beter zoals mijn voorbeeld doen zie onderstaand stukje
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$msg = "";
while($row = mysql_fetch_assoc($runQuery))
{
// elke rij in $msg variable zetten
$msg = $row['rij'];
$msg .= $row['rij'];
$msg .= $row['rij'];
}
// echo $msg waar je msg weer wilt geven.
echo $msg;
?>
$msg = "";
while($row = mysql_fetch_assoc($runQuery))
{
// elke rij in $msg variable zetten
$msg = $row['rij'];
$msg .= $row['rij'];
$msg .= $row['rij'];
}
// echo $msg waar je msg weer wilt geven.
echo $msg;
?>
op die manier kan je je logica voor je html tag uitvoeren en die paar kleine echo'tjes in je code zelf.
( zie voorbeeld plus / min box voorbeeldje )
en ik raad je ook aan om hetgeen wat je op wilt halen al in je query te controleren dus niet achteraf. regel 59.
gebruik geen * (wildcard) maar benoem alle veldnamen (rows)
verder moet
ini_set('display_errors',1);
error_reporting(E_ALL); boven ALLES
dus niet logica en dan ^ en dan weer logica..
daarna zie ik je je database connection includen maar ook in je script zelf schrijven? (dubbelop?)
ook moet je iets beter leren inspringen met je code want zoals het nu is kan je het bijna niet lezen. zo zie je foutjes heel snel over het hoofd ( bijvoorbeeld als je ergens een } vergeten bent o.i.d. )
1 ding heb ik bekeken $i zet ik op 0 anders krijg ik de foutmelding :Undefined variable: i in array1.php on line 58. door het optellen van $i
$i = $i+1;
kan je makkelijker korter en ( zo wordt het altijd geschreven) $i++ doen.