การ fetch ข้อมูลจาก result ที่คิวรี่ได้จะอ้าง index ของ array ได้ยังไง หรือใครมีวิธีแก้ไขอื่นๆแนะนำหน่อยคับ
Code (PHP)
while($row = mysql_fetch_assoc($result)){
$rec += 1;
$sum += $row['num_ps2']*$row['price_one'];
$line += 1;
if(mb_strlen($row['name_ps2'],"UTF-8") > 55){
$arr = explode(" ",$row['name_ps2']);
$numlen = 0;
for($a=0;$a<count($arr);$a++){;
echo $arr[$a].' ';
$numlen += mb_strlen($arr[$a],"UTF-8");
if($a != count($arr)-1){
$numlen += 1; //whitespace
if(mb_strlen($arr[$a+1],"UTF-8")+$numlen > 55){
$numlen = 0;
$addline += 1;
$line += 1;
}
}
}
}echo $rec.' '.$line.'<br>';
if($line/21 > 1 || $line%21 == 0){
if($line > 21){$rec -= $line-21;}
$addline += $line-21;
$line = 0;
$minus[$x] = 21-$rec;
$x += 1;
$rec = 0;
}
}
จากโค๊ดด้านบนผมอยากจะอ้าง $row['name_ps2'][index] มันจะอ้างยังไงคับหรือมันทำไม่ได้ เพราะปกติมันทำตามรอบของมันอยู่แล้วตามจำนวนของแถวข้อมูล
คืออยากจะเอา$row['name_ps2']ในตำแหน่งถัดไปมาเข้า if ก่อนเพื่อดูว่ามันต้องใช้กี่บรรทัดในการพิมพ์และนำไปเปรียบเทียบว่าถ้า บรรทัดที่ใช้ในการพิมพ์ของ$row['name_ps2']ในตำแหน่งถัดไปบวกกับบรรทัดที่พิมพ์ไปแล้ว เกิน 21 บรรทัด จะให้จำนวนบรรทัดและเรดคอดที่พิมพ์ต่อหน้าเริ่มนับหนึ่งใหม่
รูปประกอบครับระหว่างหน้าที่ยังไม่ใช่หน้าสุดท้าย ถ้าบรรทัดมันเปรียบเทียบแล้วเกิน 21 มันจะไปขึ้นหน้าใหม่ให้
แต่พอเป็นหน้าสุดท้ายแล้ว มันจะเกิดปัญหาไม่ยอมขึ้นไปอีกหน้าทั้งๆที่เกิน 21 บรรทัดแล้ว
ผมเช็คดูแล้วว่าเป็นที่การคิวรี่ LIMIT มันไม่มีตัวไปลบในหน้าสุดท้ายเพราะ ตัว$minus[$x]มัน เก็บค่าได้ 4 ตำแหน่ง แต่ มันลูปคิวรี่ 5 รอบ รอบที่ 5 จึงเกิดปัญหาไม่มีตัวไปลบ LIMIT ที่ $minus[$x]ไม่มีค่าก็รอบสุดท้ายมันไม่ได้เข้า if($line/21 > 1 || $line%21 == 0)ที่จะกำหนดค่าให้กับ $minus[$x]
อันนี้โค๊ดที่คิวรี่
Code (PHP)
if($j!=0){$strminus += $minus[$x-1];}
$str = "SELECT name_ps2,num_ps2,unit,year_ps2,date_use,price_one,price_two,type_budget,date_ps2,type_material,for_use,balance,vat FROM ps2 x,ps2_h y WHERE x.no_paper = y.no_paper and x.no_acc = y.no_acc and x.no_paper = \"".$_GET['p']."\" and x.no_acc = \"".$_SESSION['chk_no_acc']."\" and division = \"".$_SESSION['chk_division']."\" ORDER BY name_ps2 LIMIT ".((0+(21*$j))-$strminus).",".(21-$minus[$x]);
Tag : PHP, MySQL
ประวัติการแก้ไข 2015-10-24 03:48:34
Date :
2015-10-24 03:46:58
By :
axyz987
View :
764
Reply :
1
$sum_row=0; $all_row=mysql_num_rows($result);
while($row = mysql_fetch_assoc($result)){
....
...
...
if( ++$sum_row=$all_row || $line/21 > 1 || $line%21 == 0){
Date :
2015-10-24 05:24:59
By :
NewbiePHP
Load balance : Server 02