Home >Backend Development >PHP Tutorial >求一填值效果
图片如下:
<?php $sql = "select DISTINCT b.packageno,a.stock_no from `stock_detail` as a,`kw_manage` as b where a.stock_no = '".$stockno[$j-1]."' and a.cust_no = replace( b.cust_no, ' ', '' )";// echo $sql.'<br />'; $result = mysql_query($sql); $res = array(); while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { $sql2 = "select lotno,count(lotno) from `vp_barcode_2d_y` where packageno = '".$row['packageno']."' group by lotno,packageno order by lotno asc";// echo $sql2.'<br />'; $result2 = mysql_query($sql2); $var = array(); while($row2 = mysql_fetch_array($result2,MYSQL_NUM)) { if(isset($res[$row2[0]])) $res[$row2[0]]['count'] += $row2[1]; else $res[$row2[0]] = array('lotno'=>$row2[0],'count'=>$row2[1]); } } ksort($res); $arrs = array(); foreach($res as $v2) { $arrs[] = $v2; } print_r($arrs);//Array ( [0] => Array ( [lotno] => 3207 [count] => 240 ) ) $sql4 = "select arr_time,c_type,cust_no,snp,mount,mount*snp as m_total from `".$t."` where stock_no = '".$stockno[$j-1]."'"; $result4 = mysql_query($sql4); $a = array(); while($var = mysql_fetch_array($result4,MYSQL_NUM)) { $a[] = $var; }foreach($a as $k=>$v)//显示一个stockno对应的两行结果{ echo ' <tr height="56" style="height: 42.0pt"> <td> '.($k+1).'</td>';?> <td> <?php echo $v['0']; ?></td> <td> <?php echo $v['1']; ?></td> <td> <?php echo $v['2']; ?></td> <td> <?php $sql = "select type from `kw_info` where cust_no = '".$v['2']."'"; $result = mysql_query($sql); $row = mysql_fetch_array($result,MYSQL_ASSOC); echo $row['type']; ?></td> <td> <?php echo $v['3']; ?></td> <td> <?php echo $v['4']; ?></td> <td> <?php if(($arr_mount[$j-1]['mount']%$kx) != 0 ) echo $kx-($arr_mount[$j-1]['mount']%$kx); else echo '0'; ?></td> <td> <?php echo $v['5']; echo '</td>'; echo '<td>'; //需加入的代码部分; echo '</td>'; echo ' <td> </td> <td> </td> <td> </td> </tr>';}?>
简单的if不能解决?
循环太多,绕晕了。
这个时候smarty就显现出了强大的一面
在线等方案。。。
是不是我没有描述的不清楚?怎么没人回?
逻辑结构:
一个页面中stockno对应多个值,该值为代码中对应的$stockno[$j-1]
每个stockno为对应的值时,对应数据库中对应的行。见代码29行。
对应行中的图中零件号码(cust_no)的总数结果在代码26行求得。(1-26行求得零件号码的总数)
接下来就是零件号码数量的分配问题,我想问的就是这个分配的问题。
当stockno为对应的值时,带出该值对应的结果(例如图中两行结果),此两行结果的零件号码数量分别为120和135,对应代码36行foreach循环中的$v['5'];(代码79行),已知该零件号码的总数量为240,见代码第26行。
假设对应的零件号码总数量为360,那么图中对应的零件号码数量为120的对应紫色框中应填入3207 * 120,数量为135的对应紫框中应填入3207 * 135,余下的数量值带入stockno的下一个值。请问这个怎么实现?
谢谢!
你参与输出的数据是分别处理得到的
如何知道他们的对应关系?
你参与输出的数据是分别处理得到的
如何知道他们的对应关系?
stockno和cust_no(零件号码)是通过表`stock_detail`对应的,一对一或者一对多的关系。
cust_no(零件号码) 的数量是 通过 库存表`kw_manage` 得到的,求得该cust_no对应的库存总量。
再依据该cust_no的库存总量来分配对应的stockno对应的cust_no(零件号码)的数量。
你最好贴出测试数据!
你最好贴出测试数据!
代码第26行
print_r($arrs);//求得该cust_no对应的库存总量
Array ( [0] => Array ( [lotno] => 3207 [count] => 240 ) )
代码第34行
print_r($a);//结果是stockno和cust_no的对应关系,此例中是1对2的关系
Array([0]=>Array([0]=>2013-05-13 09:00:00 [1]=>L11K [2]=>23703EX80A [3]=>15 [4]=>8 [5]=>120) [1]=>Array([0]=>2013-05-13 09:00:00 [1]=>L11K [2]=>23703EX80A [3]=>15 [4]=>9 [5]=>135)
例中可能第二项的结果不满足(实际情况中不可能出现这种情况,若出现,则提示数量不够),则出现3207 * 120 (240-第一项的120),然后是其他的情况来补足,如 3207 * 120
3209 * 15。
#9的数据不够全面,我重新贴一个。
代码第26行
print_r($arrs);//求得该cust_no对应的库存总量
Array ( [0] => Array ( [lotno] => 3207 [count] => 240 ) [1] => Array ( [lotno] => 3209 [count] => 165 ) [2] => Array ( [lotno] => 3210 [count] => 360 ))
代码第34行
print_r($a);//结果是stockno和cust_no的对应关系,此例中是1对2的关系
当stockno = 1时:
Array([0]=>Array([0]=>2013-05-13 09:00:00 [1]=>L11K [2]=>23703EX80A [3]=>15 [4]=>8 [5]=>120) [1]=>Array([0]=>2013-05-13 09:00:00 [1]=>L11K [2]=>23703EX80A [3]=>15 [4]=>9 [5]=>135))
当stockno = 2时:
Array([0]=>Array([0]=>2013-05-13 09:00:00 [1]=>L11K [2]=>23703EX80A [3]=>15 [4]=>10 [5]=>150) [1]=>Array([0]=>2013-05-13 09:00:00 [1]=>L11K [2]=>23703EX80A [3]=>15 [4]=>10 [5]=>150))
....依次类推
应该得到的结果:
当stockno = 1时:
紫色第一行: 3207 * 120
紫色第二行: 3207 * 120
3209 * 15
当stockno = 2时:
紫色第一行: 3209 * 150
紫色第二行: 3210 * 150
....依次类推至stockno = n 。
像这样的结果。
这样?
$arrs = Array ( 0 => Array ( 'lotno' => 3207, 'count' => 240 ), 1 => Array ( 'lotno' => 3209, 'count' => 165 ), 2 => Array ( 'lotno' => 3210, 'count' => 360 ),);$a = Array( 0 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 8, 5 => 120), 1 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 9, 5 => 135), 2 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150), 3 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150),);两组数据不对等,如何知道 stockno 谁是谁?
这样?
$arrs = Array ( 0 => Array ( 'lotno' => 3207, 'count' => 240 ), 1 => Array ( 'lotno' => 3209, 'count' => 165 ), 2 => Array ( 'lotno' => 3210, 'count' => 360 ),);$a = Array( 0 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 8, 5 => 120), 1 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 9, 5 => 135), 2 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150), 3 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150),);两组数据不对等,如何知道 stockno 谁是谁?
$arrs = Array ( 0 => Array ( 'lotno' => 3207, 'count' => 240 ), 1 => Array ( 'lotno' => 3209, 'count' => 165 ), 2 => Array ( 'lotno' => 3210, 'count' => 360 ),);$a = Array(stockno1 =>Array( 0 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 8, 5 => 120)) 1 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 9, 5 => 135))), Array(stockno2 =>Array(0 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150), 1 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150)));
这样?
$arrs = Array ( 0 => Array ( 'lotno' => 3207, 'count' => 240 ), 1 => Array ( 'lotno' => 3209, 'count' => 165 ), 2 => Array ( 'lotno' => 3210, 'count' => 360 ),);$a = Array( 0 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 8, 5 => 120), 1 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4 => 9, 5 => 135), 2 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150), 3 => Array(0 => '2013-05-13 09:00:00', 1 => 'L11K', 2 => '23703EX80A', 3 => 15, 4=> 10, 5 => 150),);两组数据不对等,如何知道 stockno 谁是谁?
$arrs = Array ( 0 => Array ( 'lotno' => 3207, 'count' => 240 ), 1 => Array ( 'lotno' => 3209, 'count' => 165 ), 2 => Array ( 'lotno' => 3210, 'count' => 360 ),);$a = Array(stockno1 =>Array(0 => Array(5 => 120),1 => Array(5 => 135)), Array(stockno2 =>Array(0 => Array(5 => 150),1 => Array(5 => 150)));
贴错了,
$arrs = Array ( 0 => Array ( 'lotno' => 3207, 'count' => 240 ), 1 => Array ( 'lotno' => 3209, 'count' => 165 ), 2 => Array ( 'lotno' => 3210, 'count' => 360 ),);$a = Array(stockno1 =>Array(0 => Array(5 => 120),1 => Array(5 => 135)),stockno2 =>Array(0 => Array(5 => 150),1 => Array(5 => 150)));
你根据什么能把这两组数据关联在一起?
比如现在读到 $a['stockno1'][1][5],如何知道对应的应该是 $arrs[0] 还是 $arrs[1] 或者是 $arrs[2] ?
你根据什么能把这两组数据关联在一起?
比如现在读到 $a['stockno1'][1][5],如何知道对应的应该是 $arrs[0] 还是 $arrs[1] 或者是 $arrs[2] ?
程序中是这样关联的。首先得到stockno的值,再求得对应的cust_no,通过cust_no求得对应的lotno的总数量。
代码2-26行有体现。至于怎么将$arrs和$a相关联,能不能这样,将求得的stockno的结果排序,然后将$arrs按排序的结果赋给$a?
stockno的排序代码:
$sql = "select count(*) from (select stock_no,count(stock_no) from `".$t."` where adress like 'A%' group by stock_no) as temp";$result = mysql_query($sql);$row = mysql_fetch_array($result);$sql2 = "SELECT stock_no FROM `stock_detail` WHERE adress LIKE 'A%' GROUP BY stock_no ORDER BY adress, arr_time, c_type ASC";$result2 = mysql_query($sql2);$var = array();while($row1 = mysql_fetch_array($result2,MYSQL_NUM)){ $var[] = $row1;}for($x=0;$x<=$row['0'];$x++){ if($var[$x][0] == $stockno) echo ($x+1);}
问题在于你的 $arrs 和 $a 分别来自不关联的两个表,所以你需要找出两者的联系
因为你实际输出的是 $a, 所以你应该在取得 $a 后再去求取与之对应的 $arrs
这样合乎常理,也就很容易输出了
问题在于你的 $arrs 和 $a 分别来自不关联的两个表,所以你需要找出两者的联系
因为你实际输出的是 $a, 所以你应该在取得 $a 后再去求取与之对应的 $arrs
这样合乎常理,也就很容易输出了
好的。我明天先试试。谢谢答复。