Sun 19 Feb 2006 14:02:24
อย่าว่ากานนะ หัดทำอยุ่ ต้องส่งอาจานอ่ะ เค้าบอกว่าไม่ต้องสวยก็ได้ ขอให้แสดงผลได้อ่ะ
คือที่ผมทำอ่ะ จะมีไฟล์ input.php เป็นหน้าที่สำหรับเลือกสินค้า คร่าวๆนะ
<FORM ACTION="output.php" METHOD="post">
<INPUT TYPE="radio" VALUE="เสื้อ" name="A">เสื้อ<br />
<INPUT TYPE="text" NAME="nA" SIZE="3"><br />
<INPUT TYPE="radio" VALUE="กางเกง" name="A">กางเกง<br />
<INPUT TYPE="text" NAME="nB" SIZE="3"><br />
<INPUT TYPE="submit" VALUE="«×éÍ">
<INPUT TYPE="reset">
</FORM>
และอีกไฟล์ที่รับข้อมูลอ่ะ output.php คร่าวๆ
<?php
$A = $_POST['A']; $nA=$_POST['nA']*100;
$nB=$_POST['nB']*200;
$all =$nA + $nB;
echo "You buy ".$A." is ".$all." Baht.";
?>
คือมีให้เลือกสินค้า พร้อม ระบุจำนวนด้วย แต่ทว่า มันเลือกได้อย่างเดียวอ่ะ คือผมต้องการ ให้มันเลือกได้หลายอย่างและ คิดเงินพร้อมออกมาด้วยอ่ะ ทำไงอ่า ........ไม่เอารวกับคำสั่ง mysql_ อะไรนั่นนะ เพาะไม่เคยเรียน เดี๋ยวอาจานว่า
เป็นโปรเจคง่ายๆ แต่ คิดไม่ออก ทำไงดี ขอบคุณครับ
1. เปลี่ยนชื่อ radio แต่ละอันเป็น A1, A2 หรือ A, B
2. เปลี่ยนไปใช้ Checkbox แทนโดยการประกาศเป็นชื่อเดียวกันแบบ Array เช่น name="A[]"
ทางฝั่ง output.php นั้นก็ต้องมีการเปลี่ยนครับ
ถ้าเป็นวิธีที่ 1 ทางฝั่ง output.php นั้นก็จะได้เป็น
<?
$A1 = $_POST["A1"];
$A2 = $_POST["A2"];
$nA = $_POST["nA"]*100;
$nB = $_POST["nB"]*200;
$all = $nA + $nB;
?>
ถ้าเป็นวิธีที่ 2 จะได้เป็น array ของตัวแปร A
<?
$A1 = $_POST["A"][0];
$A2 = $_POST["A"][1];
$nA = $_POST["nA"]*100;
$nB = $_POST["nB"]*200;
$all = $nA + $nB;
?>
ประมาณนี้ครับ
Sun 19 Feb 2006 16:48:16
แล้วในไฟล์ output.php อ่ะ .....ตรง echo เราต้องการให้ มันแสดงว่า เราซื้ออะไรไปบ้าง จากข้างบนนะ
echo "You buy ".$A." is ".$all." Baht.";
มันก็แสดงว่า You buy กางเกง is 3000 Baht. (ผมเลือก 2 อันอ่ะ) อยากให้มันขึ้น ประวาณว่า You buy เสื้อ ,กางเกง ราคา 3000 บาท อ่ะ ไม่ให้ขึ้นอันเดียวอ่ะ
และ อยากรู้ว่า ถ้า เค้าไม่กรอก จำนวน จะให้มันขึ้นว่า "กรุณาระบุจำนวนด้วย" ต้องทำยังไง เริ่มไม่ถูก
echo "You buy ".implode(",", $_POST["A"])." is ".$all." Baht.";
Sun 19 Feb 2006 17:05:47
มันขึ้น
Warning: implode() [function.implode]: Bad arguments. in C:\Program Files\xampp\htdocs\example\output.php on line 13
You buy is 1500 Baht.
อ่ะ ควรทำไงดี
<INPUT TYPE="checkbox" VALUE="กางเกง" name="A[]">กางเกง<br />
ต้องประกาศแบบ Array ครับถึงจะใช้กับ implode ได้ครับ
Sun 19 Feb 2006 22:21:46
และถ้าผมต้องการให้แสดงว่า
"สินค้าที่คุณเลือกได้แก่
-เสื้อราคา 100 บาท จำนวน 10 ตัว
-กางเกง 200บาท จำนวน 10 ตัว
-รองเท้า 500บาท จำนวน 2 คู่
รวมเป็นเงินทั้งหมด 4000 บาท"
จะทำยังไงอ่า และถ้าต้องการให้ขึ้น ว่า "กรุณาระบุจำนวนด้วย" เมื่อลูกค้าไม่ได้ใส่จำนวนไปอ่ะ
ขอบคุณครับ
$A1 = $_POST["A"][0];
$A2 = $_POST["A"][1];
....
ไปเรื่อยๆตามจำนวนของสินค้า
ส่วนถ้าจะให้โชว์เมื่อไม่มีการระบุจำนวนสินค้านั้น ควรใช้ Javascript ช่วยครับ เช่น
<script language="javascript">
function validate(obj){
if(obj.A[0].checked && obj.nA.value == ""){
alert("กรุณาระบุจำนวนด้วย");
obj.nA.focus();
return false;
}else if(obj.A[1].checked && obj.nA.value == ""){
alert("กรุณาระบุจำนวนด้วย");
obj.nB.focus();
return false;
}
return true;
}
</script>
<form action="output.php" method="post" onsubmit="return validate(this)">
<input type="checkbox" name="A[]" value="เสื้อ">เสื้อ <input type="text" name="nA" size="3"><br>
<input type="checkbox" name="A[]" value="กางเกง">กางเกง <input type="text" name="nB" size="3"><br>
<input type="submit" value="สั่งซื้อ">
</form>
จากโค๊ดข้างบนนั้นส่วนของ Javascript จะรับ Parameter มาเป็น Object form เพื่อใช้อ้างอิงถึง element ต่างๆภายใน Form โดยการเช็คคือ ถ้า A[0] ซึ่งหมายถึง checkbox อันแรกมี Properties checked เป็น true และ Object ที่ชื่อ nA ซึ่งคือ textbox ที่ไว้ใส่จำนวนของเสื้อนั้นไม่มีการใส่ค่าใดๆ ก็ให้ขึ้นข้อความเตือน เสร็จแล้วจะคืนค่ามาเป็น false ทำให้ form ไม่มีการส่งค่อไปยัง script ในส่วนของ Attribute action ถ้าไม่มีผิดพลาดในส่วนใดๆเลยก็จะคืนค่ามาเป็น true ทำให้ form ทั้งหมดจะ submit ส่งค่าไปยังไฟล์ที่อ้างไว้ใน Attribute action ครับ

















