ขอคำแนะนำเรื่องการใช้ mysql_num_rows กับการใช้ตัวแปรร่วมชนิด array กับการให้โชว์ลำดับแถวฟอร์มบันทึกให้พอดีตรงตามข้อมูลที่ num มา สงสัยมากๆครับ
เนื่องจากผมจะทำฟอร์มบันทึกสินค้าที่ขายออกไปนะครับ โดยยึดจากเลขที่ ใบเสนอราคาดังนี้ครับ
พอกดเลือกก็จะโชว์ข้อมูลแบบนี้
ที่นี้ ถ้าสินค้ามีแค่รายการเดียว มันก็จะโชว์ลำดับ ทั้ง 4 ลำดับ แต่มีข้อมูลโผล่มารายการเดียว
ที่นี้ ผมต้องการ ให้ ลำดับ 2 3 4 ไม่โชว์ ผมต้องเขียนโค้ดในลักษณะใดครับ ไม่ใจว่าใช้ mysql_num_rows หรือเปล่า ในการ num row ข้อมูลมาใช้งาน แล้วต้องเขียนในลักษณะไหนนะครับ
อันนี้เป็นโค้ดที่ผมเขียนเ็นแบบนี้
Code (PHP)
<?
$i = 1;
$query=mysql_query("select * from request where cus_ord_id = '$search'");
while ($rs1=mysql_fetch_array ($query)) {
if ( $i == 1 ) {
$var_p_code1=$rs1["pro_id"];
$var_p_qty1=$rs1["qty"];
$var_p_price1=$rs1["price"];
$var_p_name1=$rs1["pro_name"];
}
if ( $i == 2 ) {
$var_p_code2=$rs1["pro_id"];
$var_p_qty2=$rs1["qty"];
$var_p_price2=$rs1["price"];
$var_p_name2=$rs1["pro_name"];
}
if ( $i == 3 ) {
$var_p_code3=$rs1["pro_id"];
$var_p_qty3=$rs1["qty"];
$var_p_price3=$rs1["price"];
$var_p_name3=$rs1["pro_name"];
}
if ( $i == 4 ) {
$var_p_code4=$rs1["pro_id"];
$var_p_qty4=$rs1["qty"];
$var_p_price4=$rs1["price"];
$var_p_name4=$rs1["pro_name"];
}
$i = $i +1;
}
?>
ส่วนฟอร์มให้กรอกเป็นแบบนี้
Code (PHP)
<tr>
<td height=20 width=1 bgcolor=#9DBEE6 ></td>
<td height=20 width=123 bgcolor=ffffff >
<div align="right"><b><font face="MS Sans Serif, Microsoft Sans Serif" size="2" color="#6C7198">ลำดับที่ 1 </font></b></div>
</td>
<td height=20 width=1 bgcolor=9DBEE6 ><font face="MS Sans Serif, Microsoft Sans Serif" color="#CCCCCC" size="2"></font></td>
<td height=20 width=450 bgcolor=ffffff valign="middle" ><font face="MS Sans Serif, Microsoft Sans Serif" color="#6C7198" size="2">
<?
echo " <b>สินค้า:</b> "; echo $var_p_name1;
echo " จำนวน: "; echo "$var_p_qty1 ชุด";
?>
</font></td>
<td height=20 width=1 bgcolor=9DBEE6></td>
</tr>
<tr>
<td height=1 colspan=15 bgcolor=#9DBEE6><img src="image/dot.gif"></td>
</tr>
<tr>
<td height=20 width=1 bgcolor=#9DBEE6 ></td>
<td height=20 width=123 bgcolor=ffffff >
<div align="right"><b><font face="MS Sans Serif, Microsoft Sans Serif" size="2" color="#6C7198">ลำดับที่ 2 </font></b></div>
</td>
<td height=20 width=1 bgcolor=9DBEE6 ><font face="MS Sans Serif, Microsoft Sans Serif" color="#CCCCCC" size="2"></font></td>
<td height=20 width=388 bgcolor=ffffff valign="middle" ><font face="MS Sans Serif, Microsoft Sans Serif" color="#6C7198" size="2">
<?
echo " <b>สินค้า:</b> "; echo $var_p_name2;
echo " จำนวน: "; echo "$var_p_qty2 ชุด";
?>
</font></td>
<td height=20 width=1 bgcolor=9DBEE6></td>
</tr>
<tr>
<td height=1 colspan=15 bgcolor=#9DBEE6><img src="image/dot.gif"></td>
</tr>
<tr>
<td height=20 width=1 bgcolor=#9DBEE6 ></td>
<td height=20 width=123 bgcolor=ffffff >
<div align="right"><b><font face="MS Sans Serif, Microsoft Sans Serif" size="2" color="#6C7198">ลำดับที่ 3 </font></b></div>
</td>
<td height=20 width=1 bgcolor=9DBEE6 ><font face="MS Sans Serif, Microsoft Sans Serif" color="#CCCCCC" size="2"></font></td>
<td height=20 width=388 bgcolor=ffffff valign="middle" ><font face="MS Sans Serif, Microsoft Sans Serif" color="#6C7198" size="2">
<?
echo " <b>สินค้า:</b> "; echo $var_p_name3;
echo " จำนวน: "; echo "$var_p_qty3 ชุด";
?>
</font></td>
<td height=20 width=1 bgcolor=9DBEE6></td>
</tr>
<tr>
<td height=1 colspan=15 bgcolor=#9DBEE6><img src="image/dot.gif"></td>
</tr>
<tr>
<td height=20 width=1 bgcolor=#9DBEE6 ></td>
<td height=20 width=123 bgcolor=ffffff >
<div align="right"><b><font face="MS Sans Serif, Microsoft Sans Serif" size="2" color="#6C7198">ลำดับที่ 4 </font></b></div>
</td>
<td height=20 width=1 bgcolor=9DBEE6 ><font face="MS Sans Serif, Microsoft Sans Serif" color="#CCCCCC" size="2"></font></td>
<td height=20 width=388 bgcolor=ffffff valign="middle" ><font face="MS Sans Serif, Microsoft Sans Serif" color="#6C7198" size="2">
<?
echo " <b>สินค้า:</b> "; echo $var_p_name4;
echo " จำนวน: "; echo "$var_p_qty4 ชุด";
?>
</font></td>
<td height=20 width=1 bgcolor=9DBEE6></td>
</tr>
ครับ คือ ต้องการถ้า มีข้อมูล 1 แถว ก็โชว์แค่ 1 ลำดับ ถ้า 3 ก็โชว์ 3 ลำดับนะครับ
ต้องขอคำแนะนำพี่ๆด้วยครับ ขอบคุณครับTag : PHP
Date :
2011-08-29 12:00:52
By :
bukla
View :
1650
Reply :
6
ลองง่ายๆ สร้างงานชุดใหม่มา แล้วทำการ while
$query=mysql_query("select * from request where cus_ord_id = '$search'");
while ($rs1=mysql_fetch_array ($query)) {
echo $rs1[pro_id];
}
ลองดูก่อนนะครับว่า ไอดี มาเท่าไหร่ เท่ากับมีข้อมูลเท่านั้น
Date :
2011-08-29 12:08:15
By :
Dragons_first
ขอบคุณครับ
ทำตามอ้นคุงจะโชว์ แค่เลขที่สินค้าจาก table request นะครับ (rows แรก๗
table request เป็นแบบนี้ครับ
ที่นี้ผมจะถามว่า กรณี ถ้ามี 1 แถว ก็โชว์หนึ่งแถวนะครับ ตรงลำดับ
แล้วตรงฟอร์มโชว์ข้อมูล ผมต้องเขียนยังไงครับ ให้โชว์ตามข้อมูลที่มีอยู่จริง คือ 1 แถว ก็โชว์ 1 ฟอร์ม ไม่ต้องโชว์ทั้ง 4 ชุด ดังรูปแีรกๆ
Date :
2011-08-29 12:20:11
By :
bukla
ครับ แสดงว่าคุณทำถูกแล้วล่ะครับ ที่เหลือ คุณก็ใส่ฟิลด์ที่คุณต้องการให้แสดงก็เท่านั้นเองครับ
Date :
2011-08-29 13:17:28
By :
Dragons_first
แล้วๆ ตรงลำดับ ผมจะเขียนฟังค์ชั่นยังไง ให้โชว์เฉพาะตาม row ละครับ
Date :
2011-08-29 13:22:03
By :
bukla
เขียนทีละแถวค่ะ คำสั่ง while ($rs1=mysql_fetch_array ($query)) { จะได้มาทีละแถวอยู่แล้ว
ไม่ต้องสั่งเขียนทั้ง 4 ชุดแบบนั้น
ก็แค่
Code (PHP)
$i=1;
while ($rs1=mysql_fetch_array ($query)) {
echo "<tr>";
echo "<td>ลำดับ $i</td>";
echo "<td>";
echo " <b>สินค้า:</b> ".$rs1["pro_name"];
echo " จำนวน: ".$rs1["qty"]." ชุด";
echo "</td>";
echo "</tr>";
$i++;
}
Date :
2011-08-29 14:18:02
By :
ultrasiam
ขอบคุณครับ ขั้นตอนนี้โอเคผ่านแล้ว
แต่ที่ผมทำแบบนี้
Code (PHP)
<?
$i = 1;
$query=mysql_query("select * from request where cus_ord_id = '$search'");
while ($rs1=mysql_fetch_array ($query)) {
if ( $i == 1 ) {
$var_p_code1=$rs1["pro_id"];
$var_p_qty1=$rs1["qty"];
$var_p_price1=$rs1["price"];
$var_p_name1=$rs1["pro_name"];
}
if ( $i == 2 ) {
$var_p_code2=$rs1["pro_id"];
$var_p_qty2=$rs1["qty"];
$var_p_price2=$rs1["price"];
$var_p_name2=$rs1["pro_name"];
}
if ( $i == 3 ) {
$var_p_code3=$rs1["pro_id"];
$var_p_qty3=$rs1["qty"];
$var_p_price3=$rs1["price"];
$var_p_name3=$rs1["pro_name"];
}
if ( $i == 4 ) {
$var_p_code4=$rs1["pro_id"];
$var_p_qty4=$rs1["qty"];
$var_p_price4=$rs1["price"];
$var_p_name4=$rs1["pro_name"];
}
$i = $i +1;
}
?>
เพราะว่าในขั้นตอนถัดมา บันทึกสินค้า แบบมีซีเรียล
โค้ดผมจะประมาณนี้้ครับ
Code (PHP)
เบิกสินค้าลำดับที่ 1
</td>
<?
echo " <b>สินค้า:</b> ";
echo "<select name='i_p_code1' size='1' value ='' >
<option value=''>กรุณาเลือกสินค้า</option> ";
$query=mysql_query("select pro_id ,pro_name from product");
while ($rs1=mysql_fetch_array ($query)) {
$var_p_code1=$rs1['pro_id'];
$var_p_name1=$rs1['pro_name'];
echo "<option value='$var_p_code1'>$var_p_code1 - $var_p_name1</option>";
}
echo "</select>";
echo "<input type='hidden' name='i_p_qty1' size='11' maxlength='11' value='1'>";
echo "<input type='hidden' name='var_p_price1' size='11' maxlength='11' value='1'>";
echo " รหัสสินค้า: ";
echo "<select name='i_p_sn1' size='1' value ='' >
<option value=''>กรุณาเลือกรหัสสินค้า</option> ";
$query=mysql_query("select r_p_sn,r_p_id from recive where r_type='SOLD'");
while ($rs1=mysql_fetch_array ($query)) {
$var_p_sn1=$rs1['r_p_sn'];
$var_p_id1=$rs1['r_p_id'];
echo "<option value='$var_p_sn1'>$var_p_id1 : $var_p_sn1</option>";
}
echo "</select>";
?>
ซึ่งจะอิงกับตัวแปร ที่ประการไว้
Code (PHP)
$var_p_code1=$rs1["pro_id"];
$var_p_qty1=$rs1["qty"];
$var_p_price1=$rs1["price"];
$var_p_name1=$rs1["pro_name"];
$var_p_codex=$rs1["pro_id"];
$var_p_qtyx=$rs1["qty"];
$var_p_pricex=$rs1["price"];
$var_p_namex=$rs1["pro_name"]; ....
เพราะว่า พอกด "บันทึก" จะลิ้งค์ไปหน้านี้นะครับ
โค้ดจะประมาณนี้
Code (PHP)
if ($i_p_sn1 != '' || $i_p_code1 != '') {
$var_i_date = date ("d/m/y") ;
$sum_qoh =0;
$resulte = mysql_query("select cus_user,qty,price from request where cus_ord_id = '$i_q_no' and pro_id = '$i_p_code1' ");
$rec=mysql_fetch_array($resulte);
$i_cus_code1 = $rec['cus_user'];
$i_s_price1 = $rec['price'];
$resulte = mysql_query("select cus_ord_com,cus_ord_name,total from cus_order where cus_ord_id = '$i_q_no' ");
$rec=mysql_fetch_array($resulte);
$i_cus_name=$rec['cus_ord_name'];
$i_cus_com=$rec['cus_ord_com'];
$i_total=$rec['total'];
$resulte = mysql_query("select pro_min from product where pro_id = '$i_p_code1'");
$rec=mysql_fetch_array($resulte);
$var_i_qoh = $rec['pro_id'];
$var_s_qty = $rec['pro_min'];
$var_person = $username;
// $i_d_qty = 0 ;
// $i_r_qty = 0 ;
$i_b_start = '';
$i_b_finish = '';
$i_remarks = '';
$var_y= substr($dates,6,4) + 543;
$var_m = substr($dates,3,2);
$var_d = substr($dates,0,2);
$i_s_start = $var_d."/".$var_m."/".$var_y;
$var_y= substr($datef,6,4) + 543;
$var_m = substr($datef,3,2);
$var_d = substr($datef,0,2);
$i_s_finish = $var_d."/".$var_m."/".$var_y;
$sum_s_qty = $var_s_qty - $i_p_qty1 ;
$note = "ซื้อสินค้าแล้ว";
$query=mysql_query("insert into issue(i_no,i_p_code,i_p_sn,i_date,i_cus_user,i_cus_name,i_cus_com,i_qty,i_type,i_s_price,i_s_remarks,i_s_start,i_s_finish,i_person,i_q_no) values('','$i_p_code1','$i_p_sn1','$var_i_date','$i_cus_code1','$i_cus_name','$i_cus_com',1,'$i_type','$i_s_price1','$i_remarks','$i_s_start','$i_s_finish','$var_person','$i_q_no')");
$query=mysql_query("insert into order_list set
ord_id = '' , ord_date = CURDATE() , ord_name = '$i_cus_name' , ord_com = '$i_cus_com' , ord_q_no = '$i_q_no' , ord_total = '$i_total' , ord_user = '$i_cus_code1' ");
$query=mysql_query("update product set pro_min = '$sum_s_qty' where pro_id = '$i_p_code1'");
$query=mysql_query("update recive set r_type = 'OUTS' where r_p_id = '$i_p_code1' and r_p_sn = '$i_p_sn1'");
$query=mysql_query("update cus_order set cus_ord_note = 'finish!' where cus_ord_id = '$i_q_no'");
พี่ๆ พอมีคำแนะนำไหมครับ ว่าผมควรเขียนแบบไหนดีครับ ให้สามารถบันทึกข้อมูลได้ถูกต้องครับ ขอบคุณมากๆครับ
ประวัติการแก้ไข 2011-08-29 16:28:05
Date :
2011-08-29 16:27:22
By :
bukla
Load balance : Server 04