ติดมา 4 วันแล้วช่วยทีคับผม คือว่ามันไม่ยอกรันให้ใน ฐานข้อมูลนะครับ
ติดมา 4 วันแล้วช่วยทีคับผม
คือว่ามันไม่ยอกรันให้ใน ฐานข้อมูลนะครับ
ที่ต้องการคือ สมมติมีข้อมูลสินค้า5ชนิดอยากให้มันรันเองแบบ auto
ในฟิล รหัสนะครับ เช่น
005
004
003
002
001
ปวดหัวมากใก้ส่งแล้วช่วยทีครับพี่ ๆ
Code (PHP)
<?
include ("../connect_db.php");
// 1 หาค่า pro_id ล่าสุด โดยกำหนดเป็น id_max
// 2 เอาค่า id_max + 1 เพื่อให้ฐานข้อมูลเพิ่มค่า pro_id เพิ่มทีละ 1
// 3 กำหนดให้อยู่ในรูปแบบที่ต้องการโดยใช้ strlen คือกำหนดหลัก (x/x/x)
// 4 INSERT ข้อมูลจาก SELECT มา
$result=mysql_query("select pro_id from product order by pro_id desc limit 0,1")or die(mysql_error()) ; // เลือก ฟิล pro_id จากตาราง product โดยกำหนดให้ pro_id เรียงค่าตามลำดับโดยเลือกจากค่าที่มาล่าสุดก่อน limit คือกำหนดว่าเริ่มต้นที่ 1 จากนั้นนำค่าทั้งหมดเก็บไว้ที่ $result
$x=mysql_fetch_array($result) ; // นำ $result ไปเก็บไว้ที่ $x โดยใช้ mysql_fetch_array เพื่อที่จะกำหนด array
echo '$x= '.$x[0]; // แสดงผล $x = 0
$id_max=$x[0]+1 ; // $x = 1 (เก็บค่า $x ไว้ที่ $id_max )
echo '<br>$id_max='.$id_max; // แสดงค่า $id_max ซึ่ง = 1
$ra=strlen($id_max); // functionนับหลัก โดย รับค่า $id_max มาเก็บใส่ตัวแปร $ra
echo '<br>$ra='.$ra; // แสดงผล $ra ออกมา โดยที่ ***เงื่อนไข switch
switch($ra){
case 1:
$id_max='00'.$id_max; // case 1 กำหนด $id_max เป็น 00 ก่อนและต่อด้วย $id_max นั่นคือค่า ที่รับมา ในที่นี้คือ 1
echo '<br>$id_max='.$id_max; // แสดงผล $id_max ได้ค่า 001
break; // หยุด case 1
}
mysql_query("insert into product (pro_name,pro_year,pro_detail,pro_price,pro_pic,pro_quality)
values('$_POST[id_stamp]','$_POST[year]','$_POST[detail]','$_POST[price]','$_POST[file]','$_POST[quality]')") or die(mysql_error());
?>
<meta http-equiv=refresh content="2;url=http://localhost/stampthai/admin_login/admin_login.php"/>
<br><br><center><? echo ('กรุณารอซักครู่ระบบกำลังบันทึกข้อมูล'); ?></center>
<?php
?>
Tag : - - - -
Date :
2009-05-29 15:34:10
By :
bird2829
View :
929
Reply :
17
ตอนแรก ก็ไป select รหัส แล้วเรียงจาก มากไปน้อย เอาค่า แรกสุด ออกมา บวกค่าไปอีก 1 แล้วก็ เก็บในตัวแปร เพื่อสำหรับ insert ลงตารางใหม่
แล้วที่คุณทำมันไม่ได้ตามที่ต้องการหรอ ก็เห็นโค้ดหน้าจะได้รันได้ตามที่ต้องการแล้วอะ
Date :
2009-05-29 15:48:32
By :
ail2geal2
คือมัน insert ไม่ลงนะครับ echo ค่าจากformก็มาแล้ว เราจะเรียกค่าตัวแปรที่เก็บมาจาก select ยังไงคับคือ อยากให้มันลงฐานข้อมูล นะครับ ฐานข้อมูล ยังเป็นค่าว่างอยู่เลย
Date :
2009-05-29 15:56:49
By :
bird2829
1. select max(pro_id) + 1 from ... แบบนี้ใช้ได้ไหม ไม่แน่ใจลองดูครับ
2. สังเกตเห็นมีการใช้ $_POST[file] ตอนสร้าง Form ได้ set เป็น multipart/ อะไรสักอย่างหรือยังครับ เบื้องต้นแนะนำว่า ส่วนที่เกี่ยวกับ ฟิลด์ file ตัวนี้ให้ละไว้ก่อน (คือ เอาไว้ทำสุดท้าย ตอนนี้ insert อย่างอื่นๆ ให้ได้ก่อน)
ค่อยๆ ไล่โค้ด อย่างเช่นส่วน inset ทำทีหลัง ดูส่วนที่ บวกเพิ่มถูกหรือยัง ค่อยๆ ดูผลแล้วทำครับ แล้วถ้าติดเรื่อง File ที่ผมบอกก็ต้องหาข้อมูลต่อมันซับซ้อนนิดหน่อยครับเรื่อง Upload File และ เอาไฟล์ลง Database
Date :
2009-05-29 16:04:17
By :
handy
มันเป็นid ว่างนะครับพี่
Date :
2009-05-29 16:07:10
By :
bird2829
file ภาพ ผม ค่อยทำทีหลังครับ จะเอาidให้ได้ก่อนนะครับ
คือลอง แทนค่ามันออกนะครับ แต่ลงฐานข้อมูลดันว่างเปล่าแค่ id_name
ทำไงให้มันรันออกคับ
Date :
2009-05-29 16:11:05
By :
bird2829
ขอโทดครับ ช่อง pro_id ครับ พิมพ์ผิด
Date :
2009-05-29 16:12:05
By :
bird2829
ไม่มีใครมาช่วยเลย
Date :
2009-05-29 18:08:19
By :
bird2829
ง่ะ จะไม่ให้ว่างได้ไงอะ
mysql_query("insert into product (pro_name,pro_year,pro_detail,pro_price,pro_pic,pro_quality)
23.values('$_POST[id_stamp]','$_POST[year]','$_POST[detail]','$_POST[price]','$_POST[file]','$_POST[quality]')") or die(mysql_error());
ก็ไม่ทำการ insert ค่า pro_id ด้วยอะ
Date :
2009-05-29 18:12:10
By :
ail2geal2
ผมว่านะ ในส่วน ID ควรกำหนดให้มัน ห้ามเป็นค่าว่าง ถ้าจะดีกว่า not null อะ ถ้า ID นี้จำเป็นต้องมีทุกครั้ง
จะได้แจ้งเตือนได้ด้วย
Date :
2009-05-29 18:14:36
By :
ail2geal2
pro_id notnull แล้วครับ
พอ insert มาก็เหมือนเดิมครับคือไม่เข้าฐานข้อมูล ($_POST[id_stamp นี่เป็นรับค่าชื่อแสตมป์นะครับไม่ใช่รหัส)
mysql_query("insert into product (pro_id,pro_name,pro_year,pro_detail,pro_price,pro_quality)
values('$_POST[id_stamp]','$_POST[year]','$_POST[detail]','$_POST[price]','$_POST[quality]')") or die(mysql_error());
มันแจ้งว่า
$id_max=001Column count doesn't match value count at row 1
งง ตันหมดแล้วครับช่วยที
Date :
2009-05-29 18:59:08
By :
bird2829
จำนวนฟิลด์กับค่าที่ป้อนเข้าไปไม่เท่ากัน
Date :
2009-05-29 19:06:58
By :
plakrim
พอใช้แบบเดิมก็ไม่ขึ้นครับ คุณPlaKriM
mysql_query("insert into product (pro_name,pro_year,pro_detail,pro_price,pro_quality)
values('$_POST[id_stamp]','$_POST[year]','$_POST[detail]','$_POST[price]','$_POST[quality]')") or die(mysql_error());
Date :
2009-05-29 21:14:42
By :
bird2829
mysql_query("insert into product (pro_id,pro_name,pro_year,pro_detail,pro_price,pro_quality)
values('$id_max','$_POST[id_stamp]','$_POST[year]','$_POST[detail]','$_POST[price]','$_POST[quality]')") or die(mysql_error());
แบบนี้ครับ คุณไม่ทำการให้ค่า ของ Pro_id ลงไปด้วยอะครับ มันก็ไม่ขึ้นครับ
Date :
2009-05-29 21:28:33
By :
ail2geal2
ขอบคุณอย่างยิ่งครับ พี่ ๆ ทุกคน ผมทำได้แล้ว
Date :
2009-05-29 21:49:25
By :
bird2829
ผมว่าไปเปลี่ยน pro_id ให้เป็น autoincrement ครับ เพราะ pk มันไม่ยอมให้มีค่าว่างอยู่แล้ว ถ้าไม่ปรับก็ต้องหา max เหมือนด้านบน
Date :
2009-05-29 21:54:19
By :
plakrim
ถ้าปรับเป็น autoincrement จะรันแบบ string(varchar) ไม่ได้ครับ จะใช้ได้กะ int
จะต้องเก็บเป็น 1 2 3 แทน จะเก็บแบบ 001 002 003 ไม่ได้อะ
Date :
2009-05-30 00:47:22
By :
ail2geal2
หากเป็นผม ผมจะใช้ autoincrement แล้วเวลาโชว์ค่อยทำเป็น 001 002 เอา ง่ายต่อตัวเองยิ่งนัก
Date :
2009-05-30 00:52:15
By :
plakrim
Load balance : Server 03