ช่วยแปลงการรับค่าจากธรรมดาเป็นแบบ Array หน่อยครับ ทำมานานจะแก้เป็น Array ไม่ได้ซักที
ผมมีโค้ดตามนี้นะครับ ดึงชื่อ+ราคามาจาก db แล้วรับจำนวนจาก user ผมต้องการทำให้มันเป็นการรับแบบ Array น่ะครับ
ไม่รุ้จะเริ่มต้นยังไงดี ไม่รุ้จะเริ่มตรงไหน อ่านดู หาวิธีแล้วยังไงก็งง ไม่เข้าใจซักที คือที่ต้องทำเป็น Array เพราะถ้าเกิดมันมี
สินค้าเยอะขึ้น แล้วจะทำให้ต้องมาเพิ่มโค้ดเรื่อยๆ ยาวแน่เลย
Code (PHP)
<td><form action="orderdetail.php" method="post" name="form1" id="form1" onSubmit="JavaScript:return check();" >
<table width="99%" border="0" align="center" cellpadding="3" cellspacing="0">
<tr align="left">
<td colspan="3" bgcolor="#FFFFFF" ><p><img src="images/iphone.jpg" width="590" height="70" /></p></td>
<?
$objConnect = mysql_connect("localhost","xxxxxx","xxxxxx") or die("Error Connect to Database");
$objDB = mysql_select_db("xxxxxx");
$strSQL = "SELECT * FROM Product";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="600" border="10">
<tr>
<th width="91"> <div align="center">Product ID </div></th>
<th width="98"> <div align="center">Name </div></th>
<th width="97"> <div align="center">Stock</div></th>
<th width="59"> <div align="center">Price </div></th>
<th width="59"> <div align="center">Amount </div></th>
<td width="120"> <div align="center">Total</div></th>
</tr>
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["PRO_ID"];?></div></td>
<td><?=$objResult["PRO_Name"];?></td>
<td><div align="center"><?=$objResult["PRO_Stock"];?></div></td>
<td align="right"><?=$objResult["PRO_Price"];?></td>
<?if ($objResult["PRO_Name"] === "iPhone" )
{
?>
<td align="center"><input name="txtQty1" type="text" id="txtQty1" size="15" value="" onChange ="add()" onkeyup="digitsOnly(this);doCalSum(1,this.value,<?=$objResult["PRO_Price"];?>)"></td>
<td align="center"><span name="spnSum1" id="spnSum1">$0.00</span><input type="hidden" name="hdnSum1" id="hdnSum1" value="" ></td>
<input type="hidden" name="pri1" id="pri1" value="pri1"></td>
<input type="hidden" name="proid1" id="proid1" value="<?=$objResult["PRO_ID"];?>" ></td>
<input type="hidden" name="stock1" id="stock1" value="<?=$objResult["PRO_Stock"];?>" ></td>
<input type="hidden" name="proname1" id="proname1" value="<?=$objResult["PRO_Name"];?>" ></td>
<input type="hidden" name="proprice1" id="proprice1" value="<?=$objResult["PRO_Price"];?>" ></td>
<?
}
else if ($objResult["PRO_Name"] === "iPad" )
{
?>
<td align="center"><input name="txtQty2" type="text" id="txtQty2" size="15" value="" onChange ="add()" onkeyup="digitsOnly(this);doCalSum(2,this.value,<?=$objResult["PRO_Price"];?>)"></td>
<td align="center"><span name="spnSum2" id="spnSum2">$0.00</span><input type="hidden" name="hdnSum2" id="hdnSum2" value="" ></td>
<input type="hidden" name="pri2" id="pri2" value="pri2"></td>
<input type="hidden" name="proid2" id="proid2" value="<?=$objResult["PRO_ID"];?>" ></td>
<input type="hidden" name="stock2" id="stock2" value="<?=$objResult["PRO_Stock"];?>" ></td>
<input type="hidden" name="proname2" id="proname2" value="<?=$objResult["PRO_Name"];?>" ></td>
<input type="hidden" name="proprice2" id="proprice2" value="<?=$objResult["PRO_Price"];?>" ></td>
<?
}
else if ($objResult["PRO_Name"] === "iPod" )
{
?>
<td align="center"><input name="txtQty3" type="text" id="txtQty3" size="15" value="" onChange="add()" onkeyup="digitsOnly(this);doCalSum(3,this.value,<?=$objResult["PRO_Price"];?>)"></td>
<td align="center"><span name="spnSum3" id="spnSum3">$0.00</span><input type="hidden" name="hdnSum3" id="hdnSum3" value="" ></td>
<input type="hidden" name="pri3" id="pri3" value="pri3"></td>
<input type="hidden" name="proid3" id="proid3" value="<?=$objResult["PRO_ID"];?>" ></td>
<input type="hidden" name="stock3" id="stock3" value="<?=$objResult["PRO_Stock"];?>" ></td>
<input type="hidden" name="proname3" id="proname3" value="<?=$objResult["PRO_Name"];?>" ></td>
<input type="hidden" name="proprice3" id="proprice3" value="<?=$objResult["PRO_Price"];?>" ></td>
<?
}
else if ($objResult["PRO_Name"] === "iMac" )
{
?>
<td align="center"><input name="txtQty4" type="text" id="txtQty4" size="15" value="" onChange ="add()" onkeyup="digitsOnly(this);doCalSum(4,this.value,<?=$objResult["PRO_Price"];?>)"></td>
<td align="center"><span name="spnSum4" id="spnSum4">$0.00</span><input type="hidden" name="hdnSum4" id="hdnSum4" value="" ></td>
<input type="hidden" name="pri4" id="pri4" value="pri4"></td>
<input type="hidden" name="proid4" id="proid4" value="<?=$objResult["PRO_ID"];?>" ></td>
<input type="hidden" name="stock4" id="stock4" value="<?=$objResult["PRO_Stock"];?>" ></td>
<input type="hidden" name="proname4" id="proname4" value="<?=$objResult["PRO_Name"];?>" ></td>
<input type="hidden" name="proprice4" id="proprice4" value="<?=$objResult["PRO_Price"];?>" ></td>
<?
}
?>
<?
}
?>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td align="center"><input type="text" name="amount" id="amount" value="0" size=5 readonly="true"> </td>
<td align="center"><input type="text" name="tot" id="tot" value="$0.00" size=10 readonly="true"> </td>
</tr>
</table>
ส่วนอันนี้เป็น javascript ตอนคำนวณนะครับ
Code (JavaScript)
function add()
{
var Qty1=parseInt(document.forms.form1.txtQty1.value);
if (document.forms.form1.txtQty1.value === "")
{
Qty1=0;
}
var Qty2=parseInt(document.forms.form1.txtQty2.value);
if (document.forms.form1.txtQty2.value === "")
{
Qty2=0;
}
var Qty3=parseInt(document.forms.form1.txtQty3.value);
if (document.forms.form1.txtQty3.value === "")
{
Qty3=0;
}
var Qty4=parseInt(document.forms.form1.txtQty4.value);
if (document.forms.form1.txtQty4.value === "")
{
Qty4=0;
}
var amount = Qty1+Qty2+Qty3+Qty4;
document.forms.form1.amount.value=amount;
var pri1=Qty1*22000;
var pri2=Qty2*15000;
var pri3=Qty3*7500;
var pri4=Qty4*100000;
var tot = parseFloat(pri1+pri2+pri3+pri4);
document.forms.form1.tot.value=tot.toFixed(2);
document.forms.form1.pri1.value=pri1;
document.forms.form1.pri2.value=pri2;
document.forms.form1.pri3.value=pri3;
document.forms.form1.pri4.value=pri4;
Tag : PHP, JavaScript
ประวัติการแก้ไข 2011-04-12 09:57:22 2011-04-12 10:07:01
Date :
2011-04-12 09:56:05
By :
ZieIw
View :
1280
Reply :
9
ช่วยแนะแนวนิดนึงก็ยังดีครับ ^^
Date :
2011-04-12 11:29:15
By :
ZieIw
Code (JavaScript)
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<script language="javascript">
function fncCal()
{
var tot = 0;
var sum = 0;
for(i=1;i<=document.form1.hdnLine.value;i++)
{
tot = parseInt(eval("document.form1.txtVol1_"+i+".value")) + parseInt(eval("document.form1.txtVol2_"+i+".value"));
eval("document.form1.txtVol3_"+i+".value="+tot);
sum += tot; //หาผลรวมทั้งหมด แก้บรรทัดนี้ครับ
document.form1.txtSum.value=sum;
}
}
</script>
<form action="page.cgi" method="post" name="form1">
Input 1 <input name="txtVol[]" id="txtVol1_1" type="text"> <input name="txtVol[]" id="txtVol2_1" type="text"> = <input name="txtVol[]" id="txtVol3_1" type="text"><br>
Input 2 <input name="txtVol[]" id="txtVol1_2" type="text"> <input name="txtVol[]" id="txtVol2_2" type="text"> = <input name="txtVol[]" id="txtVol3_2" type="text"><br>
Input 3 <input name="txtVol[]" id="txtVol1_3" type="text"> <input name="txtVol[]" id="txtVol2_3" type="text"> = <input name="txtVol[]" id="txtVol3_3" type="text"><br>
Input 4 <input name="txtVol[]" id="txtVol1_4" type="text"> <input name="txtVol[]" id="txtVol2_4" type="text"> = <input name="txtVol[]" id="txtVol3_4" type="text"><br>
Input 5 <input name="txtVol[]" id="txtVol1_5" type="text"> <input name="txtVol[]" id="txtVol2_5" type="text"> = <input name="txtVol[]" id="txtVol3_5" type="text"><br>
<input type="hidden" name="hdnLine" value="5">
Summary : <input name="txtSum" id="txtSim" type="text"><br>
<input name="btnCal" type="button" value="Cal" OnClick="JavaScript:fncCal();">
</form>
</body>
</html>
ตามนี้เลยครับ มันจะต้องมีจำนวน Line เก็บไว้ในตัวแปรแล้วใช้ eval อ่านค่าตัวแปร เพื่อ sum ค่าครับ
Go to : อยากสอบถามพี่วิน( Mr.win) หรือท่านๆอื่นครับ เรื่อง Code javascript ที่ผมทำไม่ผ่าน
Go to : การอ้างถึงช่องรับข้อมูล เช่น document.form1.x.value ครับ เชคค่าว่างของ textbox หลายช่อง
Go to : ขอรบกวนผู้รู้หน่อยครับ เรื่องหาผลคำนวณใน textbox หลายๆชุด
Date :
2011-04-12 12:00:45
By :
webmaster
กราบขอบพระคุณงามๆ หนึ่งทีครับ
Date :
2011-04-12 12:10:43
By :
ZieIw
แปลงได้แค่นี้อ่ะครับ คือ id = "txtQty[]" ผมไม่สามารถเขียนเหมือนที่คุณวินให้มาได้ มันต้องเก็บเป็น array ด้วย เพราะคำสั่งอันนี้มันวนลูปเอา
เลยมีให้เขียนแค่บรรทัดเดียว ถ้าเกิดผมเขียนแบบนี้ ตรง javascript ผมต้องทำยังไงหรอครับ?
Code (PHP)
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><div align="center"><?=$objResult["PRO_ID"];?></div></td>
<td><?=$objResult["PRO_Name"];?></td>
<td><div align="center"><?=$objResult["PRO_Stock"];?></div></td>
<td align="right"><?=$objResult["PRO_Price"];?></td>
<td align="center"><input name="txtQty[]" type="text" id="txtQty[]" size="15" value="" onChange ="add()" onkeyup="digitsOnly(this);doCalSum([],this.value,<?=$objResult["PRO_Price"];?>)"></td>
<td align="center"><span name="spnSum[]" id="spnSum[]">$0.00</span>
<input type="hidden" name="hdnSum[]" id="hdnSum[]" value="" ></td>
<input type="hidden" name="pri[]" id="pri[]" value="pri[]"></td>
<input type="hidden" name="proid[]" id="proid[]" value="<?=$objResult["PRO_ID"];?>" ></td>
<input type="hidden" name="stock[]" id="stock[]" value="<?=$objResult["PRO_Stock"];?>" ></td>
<input type="hidden" name="proname[]" id="proname[]" value="<?=$objResult["PRO_Name"];?>" ></td>
<input type="hidden" name="proprice[]" id="proprice[]" value="<?=$objResult["PRO_Price"];?>" ></td>
<?
}
}
?>
ประวัติการแก้ไข 2011-04-12 14:34:15
Date :
2011-04-12 14:33:37
By :
ZieIw
ใช้เป็น Array ไม่ได้ครับ ให้ใช้ id เป็นตัวระบุเลยครับ
Code (PHP)
<?
$i=0;
while($objResult = mysql_fetch_array($objQuery))
{
$i++;
?>
<tr>
<td><div align="center"><?=$objResult["PRO_ID"];?></div></td>
<td><?=$objResult["PRO_Name"];?></td>
<td><div align="center"><?=$objResult["PRO_Stock"];?></div></td>
<td align="right"><?=$objResult["PRO_Price"];?></td>
<td align="center"><input name="txtQty<?=$i;?>" type="text" id="txtQty<?=$i;?>" size="15" value="" onChange ="add()" onkeyup="digitsOnly(this);doCalSum(<?=$i;?>,this.value,<?=$objResult["PRO_Price"];?>)"></td>
<td align="center"><span name="spnSum<?=$i;?>" id="spnSum<?=$i;?>">$0.00</span>
<input type="hidden" name="hdnSum<?=$i;?>" id="hdnSum<?=$i;?>" value="" ></td>
<input type="hidden" name="pri<?=$i;?>" id="pri<?=$i;?>" value="pri<?=$i;?>"></td>
<input type="hidden" name="proid<?=$i;?>" id="proid<?=$i;?>" value="<?=$objResult["PRO_ID"];?>" ></td>
<input type="hidden" name="stock<?=$i;?>" id="stock<?=$i;?>" value="<?=$objResult["PRO_Stock"];?>" ></td>
<input type="hidden" name="proname<?=$i;?>" id="proname<?=$i;?>" value="<?=$objResult["PRO_Name"];?>" ></td>
<input type="hidden" name="proprice<?=$i;?>" id="proprice<?=$i;?>" value="<?=$objResult["PRO_Price"];?>" ></td>
<?
}
}
?>
<input type="hidden" name="line" id="line" value="<?=$i;?>">
Date :
2011-04-12 16:08:34
By :
webmaster
นี่เหลือครับที่ต้องการ ขอบคุณมากๆ
แต่ว่า php มันไม่มี array ในเชิงการใ้ช้งานแบบนี้หรอครับ?
ประวัติการแก้ไข 2011-04-12 16:21:52
Date :
2011-04-12 16:16:42
By :
ZieIw
แล้วอย่างที่ถ้าฟังก์ชั่นนี้มีการรับค่าแบบนี้ ตรง พารามิเตอร์ รับยังไงดีครับ?
วนลูปเอาหรอ?
Code (JavaScript)
function doCalSum(Record, Qty, Price)
{
for(i=1;i<=document.form1.hdnLine.value;i++)
{
var Sum[i];
Sum[i] = parseInt(Qty[i]) * parseFloat(Price[i]);
document.getElementById("hdnSum[i]" + Record).value = Sum[i].toFixed(2);
document.getElementById("spnSum[i]" + Record).innerHTML = Sum[i].toFixed(2);
doCalTotal();
}
}
function doCalTotal()
{
var Record = document.getElementById("hdnCount").value;
var Total = 0;
for(i=1;i<=Record;i++){
Total += parseFloat(document.getElementById("hdnSum" + i).value);
}
document.getElementById("spnTotal").innerHTML = Total.toFixed(2);
}
Date :
2011-04-12 16:24:10
By :
ZieIw
อันนี้การเชคค่าแบบ Multi CreateElement ครับ
Code (JavaScript)
<html>
<head>
<title>ThaiCreate.Com JavaScript Add/Remove Element</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM customer";
$objQuery = mysql_query($strSQL);
?>
<script language="javascript">
function CheckValidate()
{
for(i=1;i<=document.frmMain.hdnMaxLine.value;i++)
{
//*** Column 1 ***/
if(eval("document.frmMain.Column1_"+i+".value")=="")
{
alert('Please input Column 1 line.. ' + i);
eval("document.frmMain.Column1_"+i+".focus();")
return false;
}
//*** Column 2 ***/
if(eval("document.frmMain.Column2_"+i+".value")=="")
{
alert('Please input Column 2 line.. ' + i);
eval("document.frmMain.Column2_"+i+".focus();")
return false;
}
//*** Column 3 ***/
if(eval("document.frmMain.Column3_"+i+".value")=="")
{
alert('Please input Column 3 line.. ' + i);
eval("document.frmMain.Column3_"+i+".focus();")
return false;
}
//*** Column 4 ***/
if(eval("document.frmMain.Column4_"+i+".value")=="")
{
alert('Please input Column 4 line.. ' + i);
eval("document.frmMain.Column4_"+i+".focus();")
return false;
}
//*** Column 5 ***/
if(eval("document.frmMain.Column5_"+i+".value")=="")
{
alert('Please input Column 5 line.. ' + i);
eval("document.frmMain.Column5_"+i+".focus();")
return false;
}
}
}
function CreateSelectOption(ele)
{
var objSelect = document.getElementById(ele);
var Item = new Option("", "");
objSelect.options[objSelect.length] = Item;
<?
while($objResult = mysql_fetch_array($objQuery))
{
?>
var Item = new Option("<?=$objResult["Name"];?>", "<?=$objResult["CustomerID"];?>");
objSelect.options[objSelect.length] = Item;
<?
}
?>
}
function CreateNewRow()
{
var intLine = parseInt(document.frmMain.hdnMaxLine.value);
intLine++;
var theTable = document.getElementById("tbExp");
var newRow = theTable.insertRow(theTable.rows.length)
newRow.id = newRow.uniqueID
var newCell
//*** Column 1 ***//
newCell = newRow.insertCell(0);
newCell.id = newCell.uniqueID;
newCell.setAttribute("className", "css-name");
newCell.innerHTML = "<center><INPUT TYPE=\"TEXT\" SIZE=\"5\" NAME=\"Column1_"+intLine+"\" ID=\"Column1_"+intLine+"\" VALUE=\"\"></center>";
//*** Column 2 ***//
newCell = newRow.insertCell(1);
newCell.id = newCell.uniqueID;
newCell.setAttribute("className", "css-name");
newCell.innerHTML = "<center><INPUT TYPE=\"TEXT\" SIZE=\"5\" NAME=\"Column2_"+intLine+"\" ID=\"Column2_"+intLine+"\" VALUE=\"\"></center>";
//*** Column 3 ***//
newCell = newRow.insertCell(2);
newCell.id = newCell.uniqueID;
newCell.setAttribute("className", "css-name");
newCell.innerHTML = "<center><INPUT TYPE=\"TEXT\" SIZE=\"5\" NAME=\"Column3_"+intLine+"\" ID=\"Column3_"+intLine+"\" VALUE=\"\"></center>";
//*** Column 4 ***//
newCell = newRow.insertCell(3);
newCell.id = newCell.uniqueID;
newCell.setAttribute("className", "css-name");
newCell.innerHTML = "<center><INPUT TYPE=\"TEXT\" SIZE=\"5\" NAME=\"Column4_"+intLine+"\" ID=\"Column4_"+intLine+"\" VALUE=\"\"></center>";
//*** Column 5 ***//
newCell = newRow.insertCell(4);
newCell.id = newCell.uniqueID;
newCell.setAttribute("className", "css-name");
newCell.innerHTML = "<center><SELECT NAME=\"Column5_"+intLine+"\" ID=\"Column5_"+intLine+"\"></SELECT></center>";
//*** Create Option ***//
CreateSelectOption("Column5_"+intLine)
document.frmMain.hdnMaxLine.value = intLine;
}
function RemoveRow()
{
intLine = parseInt(document.frmMain.hdnMaxLine.value);
if(parseInt(intLine) > 0)
{
theTable = document.getElementById("tbExp");
theTableBody = theTable.tBodies[0];
theTableBody.deleteRow(intLine);
intLine--;
document.frmMain.hdnMaxLine.value = intLine;
}
}
</script>
<body Onload="CreateNewRow();CreateNewRow();">
<form name="frmMain" method="post" action="Submit.php" OnSubmit="return CheckValidate();">
<table width="445" border="1" id="tbExp">
<tr>
<td><div align="center">Column 1 </div></td>
<td><div align="center">Column 2 </div></td>
<td><div align="center">Column 3 </div></td>
<td><div align="center">Column 4 </div></td>
<td><div align="center">Column 5 </div></td>
</tr>
</table>
<input type="hidden" name="hdnMaxLine" value="0">
<input name="btnAdd" type="button" id="btnAdd" value="+" onClick="CreateNewRow();">
<input name="btnDel" type="button" id="btnDel" value="-" onClick="RemoveRow();">
<br>
<br>
<br>
<input name="btnSubmit" type="submit" id="btnSubmit" value="Submit">
</form>
</body>
</html>
Date :
2011-04-12 16:38:16
By :
webmaster
ขอบคุณครับ ลึกซึ้งจริงๆ การเขียนโปรแกรมเนี่ย
Date :
2011-04-12 16:43:03
By :
ZieIw
Load balance : Server 02