การนำข้อมูลที่เป็น อาร์เรย์ ยัดใส่ดาต้าเบส ทำยังไงครับ
ผมได้ทำการเก็บข้อมูลมาเป็นอาร์เรย์ โดยใช้ session(array) ในการเก็บค่าindex ซึ่งมันวนค่าที่ได้ออกมาถูกต้อง แต่ติดตรงที่ตอนผมจะทำการ วนข้อมูลเพื่อ insert ใส่ ฐานข้อมูลมันดันขึ้นอันสุดท้ายมาให้ลองดูโค๊ดนะครับ
Code (PHP)
<?php session_start();
if (!isset($_SESSION['PROFILE'])){ $_SESSION['PROFILE'] = array(); }
if (isset($_POST['Name']) && isset($_POST['LastName']) && isset($_POST['Company']) && isset($_POST['Email']) && isset($_POST['Address']) && isset($_POST['Aumpur']) && isset($_POST['Province']) && isset($_POST['Zipcode']) && isset($_POST['Country']) && isset($_POST['Tel']) && isset($_POST['Fax'])){
$PROFILE = array(
'Name' => $_POST['Name'],
'Lastname' => $_POST['Lastname'],
'Company' => $_POST['Company'],
'Email' => $_POST['Email'] ,
'Address' => $_POST['Address'],
'Aumpur' => $_POST['Aumpur'],
'Province' => $_POST['Province'],
'Zipcode' => $_POST['Zipcode'],
'Country' => $_POST['Country'],
'Tel' => $_POST['Tel'],
'Fax' => $_POST['Fax']
);
$_SESSION['PROFILE'][] = $PROFILE;
header('Location: ' . $_SERVER['PHP_SELF']);
}
?>
ส่วนนี่จะเป็นข้อมูลที่วนลูปมากจาก อาร์เรย์
Code (PHP)
$i=0;
foreach ($_SESSION['CART'] as $itemNumber => $item) {
$i++;
if($i%2==0){
$bg ="#eeeeee";
}else{
$bg ="#f8f8f8";
}
?>
<table width="100%" border="0" cellspacing="1" cellpadding="1" height="30" bgcolor="#FFFFFF" bordercolor="#CCCCCC">
<tr id="item<?=$itemNumber;?>" bgcolor="<?=$bg?>">
<th width="70%" align="left" class="style1" scope="col"><?=$item['id']?> <?=$item['name']?></th>
<td width="10%" align="center" class="style1" scope="col"><?=number_format($item['priceper'],2,'.',',')?></td>
<td width="10%" align="center" class="style1" scope="col"><?=$item['unit']?></td>
<td width="10%" align="center" class="style1" scope="col"><?=number_format($item['unit'] * $item['priceper'],2,'.',',')?></td>
</tr>
</table>
<? } ?>
<table width="100%" border="0" align="center" cellpadding="1" cellspacing="1">
<tr>
<td width="90%" height="20" align="right" bgcolor="#CCCCCC" scope="col" class="style1">รวม</td>
<td width="10%" align="center" bgcolor="#CCCCCC" scope="col" class="style1"><?=number_format($_SESSION['total'],2,'.',','); ?></td>
</tr>
<tr>
<td align="right" height="20" bgcolor="#CCCCCC" scope="col" class="style1">ภาษีมูลค่าเพิ่ม 7%</td>
<td align="center" bgcolor="#CCCCCC" scope="col" class="style1"><?=number_format(0.07*$_SESSION['total'],2,'.',','); ?></td>
</tr>
<tr>
<th align="right" height="20" bgcolor="#CCCCCC" scope="col" class="style1">ราคารวมทั้งหมด</th>
<th bgcolor="#CCCCCC" scope="col" class="style1"><?=number_format((0.07*$_SESSION['total'])+$_SESSION['total'],2,'.',','); ?></th>
</tr>
</table>
แล้วผมลองทดสอบด้วยการวนลูปข้อมูลออกมาแสดงดูก่อน เพื่อที่หากว่าแสดงครบผมจะได้ทำการ ยัดใส่ฐานข้อมูลได้ทันที แต่มันดันเอาข้อมูลอันล่างสุดมาแสดงครับ
Code (PHP)
<?php
session_start();
$id = $item['id'];
$name = $item['name'];
$price= number_format($item['priceper'],2,'.',',');
$unit = $item['unit'];
$total= $price - $unit;
for($i=0;$i<count($name);$i++){//ทดสอบการดึงค่า id มาดูก่อนว่ามาไหม ปรากฏว่ามันมาแต่อันสุดท้าย
echo $id[$i];
}
?>
จะได้เห็นดังรูปครับ
Tag : PHP, MySQL, Ajax, jQuery, CakePHP
ประวัติการแก้ไข 2011-02-05 11:52:38
Date :
2011-02-05 11:50:35
By :
Dragons_first
View :
1480
Reply :
11
จุดประสงค์คือทำยังไงให้ข้อมูลที่มีในอาร์เรย์ แสดงครบเพื่อที่จะทำการ insert ข้อมูลได้ครบถ้วนทุกข้อมูลครับ
Date :
2011-02-05 11:54:51
By :
Dragons_first
print_r($_SESSION['CART']); ดูซิครับ
Date :
2011-02-05 11:59:22
By :
PlaKriM
ได้ตามรูปนี้นะครับ
Date :
2011-02-05 12:23:50
By :
Dragons_first
ถ้าผมเข้าใจไม่ผิด พี่อั๋นจะให้ผมวนค่าใน session['cart'] ลงฐานข้อมูลหรอครับ
Date :
2011-02-05 12:24:48
By :
Dragons_first
มันเป็น array 2 มิตินะครับ ไม่อยากแก้ตัวที่สร้าง session อะนะ
Code (PHP)
foreach($_SESSION['CART'][0] as $carts){
echo '<br />' . $carts[id];
}
Date :
2011-02-05 12:29:57
By :
PlaKriM
ขอบคุณพี่อั๋นนะครับ คือ มันก็ยังเป็นปัญหาเดิมๆ แต่เปลี่ยนวิธีแก้ไขใหม่ มันก็ยังเหมือนเดิมครับคือข้อมูลมันแสดงไม่ครบอ่ะครับ ไม่รู้ว่าโค๊ดที่ผมเขียนเนี่ยมันเพี้ยนตรงไหนถึงส่งค่ามาให้ไม่หมด เช่น
อันนี้ที่พี่อั๋นแก้ให้นะครับ
Code (PHP)
foreach($_SESSION['CART'][0] as $carts){
echo '<br />' . $carts[id];
}
ข้อมูลที่ได้จากการรันโค๊ดอันนี้แล้วมันจะเป็นแบบนี้ครับ
N
t
1
1
f
มันแสดงแค่นี้จริงๆครับ
แต่ถ้าหากว่าตัดเอาค่าในอาร์เรย์ออก มันก็จะแสดงครบครับ(ปัญหาเดิม+2)
Code (PHP)
foreach($_SESSION['CART'][0] as $carts){
echo '<br />' . $carts;//ตัดเอา ['id'] ออกไปครับ
}
มันก็จะแสดงครบถ้วน แต่มาแค่ชุดเดียวครับ ซึ่งจริงการวนลูปค่ามันจะต้องออกมาครบตามจำนวนที่มีอยู่ในข้อมูล ถูกไหมครับ
NF000001
test
100
1
fer3.jpg
แต่ข้อมูลมันก็ยังออกแค่ชุดเดียวเท่านั้น มันไม่ได้ออกมา 3 ชุดเหมือนดังในรายการสั่งซื้อ ซึ่งปัญหาตรงนี้แหละครับที่ผมสงสัยจึงเอามาถาม
รบกวนพี่อั๋นชี้แนะให้อีกหน่อยครับ
Date :
2011-02-05 12:52:06
By :
Dragons_first
ดูผิด จริงๆ ถ้าเป็น array แบบนี้
foreach ($_SESSION['CART'] as $itemNumber => $item) {
echo '<br />' . $item['id'];
}
แบบนี้ก็น่าจะได้นี่นา
Date :
2011-02-05 13:04:01
By :
PlaKriM
ไม่งั้นก็เอาหน้าที่ each ข้อมูลใน array มาแสดง ทั้งหมดมาดูหน่อย
Date :
2011-02-05 13:05:19
By :
PlaKriM
Code (PHP)
$carts = array(
0 => array('id'=>'111','name'=>'aaaaaaaaaa','pic'=>'aaa.jpg',),
1 => array('id'=>'222','name'=>'bbbbbbbbbb','pic'=>'bbb.jpg',),
2 => array('id'=>'333','name'=>'ccccccccccc','pic'=>'ccc.jpg',),
);
foreach($carts as $cart){
echo '<br />id=' . $cart['id'] . ', name=' . $cart['name'] . ', pic=' . $cart['pic'];
}
ลักษณะเดียวกันกะ session น้องอ้นคุง เลย
Date :
2011-02-05 13:12:37
By :
PlaKriM
เอ่อขอบคุณพี่อั๋นมากๆนะครับ พอผมเห็นพี่เขียนโค๊ดแบบนี้
Code (PHP)
foreach ($_SESSION['CART'] as $itemNumber => $item) {
echo '<br />' . $item['id'];
}
ทำให้ผมนึกขึ้นได้ว่า ผมก็เขียนแบบนี้เหมือนกันตอนให้มันแสดงมาเป็น list แล้วทำไมผมถึงได้ปัญญาอ่อนคิดไม่ได้เนอะว่าก็เอาตัวที่วนนั่นน่ะแหละมาเขียนอีกรอบ แต่เปลีย่นจากให้มันแสดงเป็น list ก็จับยัดเข้าฐานข้อมูลแทน
เปลืองพื้นที่พี่วินนะนี่
ยังไงก็ขอบคุณพี่อั๋นอีกรอบครับทำให้ผมคิดได้ แต่มันเกิดขึ้นได้กับทุกคนครับที่เขียนเองมึนเอง 55555++
Date :
2011-02-05 13:52:06
By :
Dragons_first
Date :
2011-02-05 22:21:17
By :
PlaKriM
Load balance : Server 00