AsaMedlem sedan dec. 20011 934 inlägg
Har ett formulär där jag har olika grupper med radio knappar. Har sedan en grupp med checkbox. Radioknapparna är det ett val som skall kunna göras medan checkboxarna ska man kunna välja hur många som helst. Vill nu kunna skriva ut alla dessa på en sida via POST. Men vete tusan hur jag skall skriva. Har testat denna kod
foreach ($_POST as $key => $val){
echo "$key : $val <br/>";
}
Men den skriver bara ut det sista valet av de valen man gör i checkboxarna. Måste få in en till loop på nå vis i den.
cascaMedlem sedan feb. 20003 262 inlägg
Du kan skicka flera värden till en array med att sätta name med [], dvs:
<pre>
<?php
print_r($_POST);
?>
</pre>
<form method="post">
<input type="checkbox" name="values[]" value="a">
<input type="checkbox" name="values[]" value="b">
<input type="submit">
</form>
AsaMedlem sedan dec. 20011 934 inlägg
Så här ser mitt formulär ut typ:
<form action="" method="post">
<fieldset>
<legend id="caption_tillval_malning">MÅLNING & FÄRGVAL</legend>
<ol>
<li>
<label>
<input type="radio" name="tillval_malning" value="Måla själv;0" checked data-info="Måla själv" data-price="0" />
Jag kommer måla själv.
</label>
</li>
<li>
<label>
<input type="radio" name="tillval_malning" value="Färdigmålad;3900" checked data-info="Färdigmålad" data-price="3900" />
Färdigmålad utsida i önskad kulör (Grundfärg och täckfärg eller slamfärg)
</label>
</li>
</ol>
</fieldset>
<fieldset>
<legend id="caption_ovriga_tillval">ÖVRIGA TILLVAL</legend>
<ol>
<li>
<label>
<input type="checkbox" name="ovriga_tillval" value="Loft;0" checked data-info="Loft med räcke och stege" data-price="1500" />
Loft med räcke och stege, 120 cm högt
</label>
</li>
<li>
<label>
<input type="checkbox" name="ovriga_tillval" value="Dörrtrycke;3900" checked data-info="Färdigmålad" data-price="900" />
Riktigt dörrtrycke med låskista för standard Assa-lås eller motsvarande (Standard är ett kulknäppe i mässing)
</label>
</li>
</ol>
</fieldset>
cascaMedlem sedan feb. 20003 262 inlägg
Ändra alltså value="ovriga_tillval" till value="ovriga_tillval[]" på dina checkboxar.
AsaMedlem sedan dec. 20011 934 inlägg
AsaMedlem sedan dec. 20011 934 inlägg
Hm, finns det något annat sätt då jag använder value namnet till en annan sak och kan inte vara med [] då :/
AsaMedlem sedan dec. 20011 934 inlägg
Här är all min kod och kan ej få till det på nåt vis. Nån som kan hjälpa med min kod så det funkar att hämta ut alla värdena om man kör submit.
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<meta charset="utf-8">
<!--
Created using JS Bin
http://jsbin.com
Copyright (c) 2014 by voigtan (http://jsbin.com/xowiq/1/edit)
Released under the MIT license: http://jsbin.mit-license.org
-->
<title>JS Bin</title>
<style id="jsbin-css">
</style>
</head>
<body>
<form action="" method="post">
<fieldset>
<legend id="caption_tillval_malning">MÅLNING & FÄRGVAL</legend>
<ol>
<li>
<label>
<input type="radio" name="tillval_malning" value="Måla själv;0" checked data-info="Måla själv" data-price="0" />
Jag kommer måla själv.
</label>
</li>
<li>
<label>
<input type="radio" name="tillval_malning" value="Färdigmålad;3900" checked data-info="Färdigmålad" data-price="3900" />
Färdigmålad utsida i önskad kulör (Grundfärg och täckfärg eller slamfärg)
</label>
</li>
</ol>
</fieldset>
<fieldset>
<legend id="caption_ovriga_tillval">ÖVRIGA TILLVAL</legend>
<ol>
<li>
<label>
<input type="checkbox" name="ovriga_tillval" value="Loft;0" checked data-info="Loft med räcke och stege" data-price="1500" />
Loft med räcke och stege, 120 cm högt
</label>
</li>
<li>
<label>
<input type="checkbox" name="ovriga_tillval" value="Dörrtrycke;3900" checked data-info="Färdigmålad" data-price="900" />
Riktigt dörrtrycke med låskista för standard Assa-lås eller motsvarande (Standard är ett kulknäppe i mässing)
</label>
</li>
</ol>
</fieldset>
<span class="pris" style="font:30px helvetica"></span>
</form>
<div id="summary"></div>
<script>
$(document).ready(function() {
var inputs = $("input:checkbox, input:radio");
var createList = function(group) {
var markup = [];
$.each(group, function(a,b) {
var header = $("#caption_" + a).text();
markup.push('<div class="header">' + header + '</div>');
$.each(this, function(){
markup.push('<div class="item">');
markup.push(this.info);
markup.push('<div class="price">');
markup.push(this.price);
markup.push('</div>');
markup.push('</div>');
});
});
return markup.join('');
};
function calcTotal() {
var totalPris = 0;
var obj = {};
inputs.filter(':checked').each(function() {
var $this = $(this);
var price = parseInt($this.data('price'), 10);
var info = $this.data('info');
if(info && info.length) {
if(!obj[this.name]) {
obj[this.name] = [];
}
obj[this.name].push({
info: info,
price: price
});
}
totalPris += price;
});
$("#summary").html(createList(obj));
$("span.pris").html(totalPris + ":-");
}
calcTotal();
inputs
.on('change', calcTotal);
});
</script>
</body>
voigtann1Medlem sedan juni 20018 810 inlägg
eftersom koden letar efter:
var header = $("#caption_" + a).text();
dvs det var innan "caption_ovriga_tillval" men nu bli det "caption_ovriga_tillval[]" och det finns inget element med det ID, så du behöver ändra detta:
inputs.filter(':checked').each(function() {
var $this = $(this);
var price = parseInt($this.data('price'), 10);
var name = this.name.replace(/\[\]$/, "");
var info = $this.data('info');
if(!obj[name]) {
obj[name] = [];
}
obj[name].push({
info: info,
price: price
});
totalPris += price;
});