A-AA+then

หนูเขียนโค้ด เพิ่มข้อมูลสมาชิก แล้วแต่ไม่แสดงผลตามที่ต้องการ ช่ว

1,546
1. พอดีว่า หนูลองเขียนโค้ดการเพิ่ม ข้อมูลสมาชิก แต่ ไม่แสดงผลตามที่ต้องการ
ซึ่งหนูจะส่งโค้ดให้พี่ ดู นะคะ พี่ๆ ที่ทราบปัญหา ช่วยแนะนำหนูด้วยนะคะ (หนูอยากทำโปรเจกให้ผ่านไวๆ ค่ะ)

2. ถ้า หนูต้องการเพิ่มโค้ด เลือกอาชีพ จากคอมโบบ๊อก หนูต้องเขียนโค้ดยังไงหรอคะ
3. และ ต้องการให้ upload รูป สมาชิกด้วย หนูต้องเขียนโค้ดยังไง หรอคะ โดยให้ ข้อมูลเหล่านี้ อยู่ในฟร์อมเดียวกันอ่ะค่ะ

( ซึ่งจาก ตาราง member1 หนูต้องเพิ่ม ฟิว member_occupation และ member_image )

// ตาราง member1 ด้วย SQL

ฐานข้อมูล: `vod_st`
--

-- --------------------------------------------------------

--
-- โครงสร้างตาราง `member1`
--

CREATE TABLE `member1` (
`member_number` int(11) NOT NULL auto_increment,
`member_user_id` varchar(50) NOT NULL COMMENT 'ชื่อเข้าระบบของสมาชิก',
`member_password` varchar(50) NOT NULL COMMENT 'รหัสผ่านของสมาชิก',
`member_name` varchar(30) NOT NULL COMMENT 'ชื่อสมาชิก',
`member_lname` varchar(50) NOT NULL COMMENT 'นามสกุลสมาชิก',
`member_nickname` varchar(20) NOT NULL COMMENT 'ชื่อเล่นสมาชิก',
`member_sex` varchar(10) NOT NULL,
`member_address` text NOT NULL COMMENT 'ที่อยู่ของสมาชิก',
`member_tel` varchar(10) NOT NULL COMMENT 'เบอร์โทรศัพท์สมาชิก',
`member_email` varchar(50) NOT NULL COMMENT 'อีเมลสมาชิก',
`member_dateTime_apply` date NOT NULL COMMENT 'วันที่สมัครสมาชิก',
PRIMARY KEY (`member_number`)
) ENGINE=MyISAM DEFAULT CHARSET=tis620 COMMENT='ตารางสมาชิก' AUTO_INCREMENT=1 ;


----------------------------------
และนี้ คือโค้ด นะคะ

// function.php

<?
function displaydate($x) {
$thai_m=array("มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
$date_array=explode("-",$x);
$y=$date_array[0];
$m=$date_array[1]-1;
$d=$date_array[2];

$m=$thai_m[$m];
$y=$y+543;

$displaydate="$d $m $y";
return $displaydate;
} // end function displaydate

function checkemail($checkemail) {
if(ereg( "^[^@ ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)$",$checkemail) ) {
return true;
} else {
return false;
}
} // end fuction checkemail
?>

---------------------------------
// connect.php

<?
$host="localhost";
$user="root";
$pw="root";
$dbname="vod_st";
$c = mysql_connect($host,$user,$pw);
mysql_query("SET NAMES UTF8");
if (!$c) {
echo "<h3>ERROR : ไม่สามารถติดต่อฐานข้อมูลได้</h3>";
exit();
}
?>

---------------------------------
// register.html
<HTML>
<HEAD><TITLE>Member ระบบสมาชิก</TITLE></HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<BODY>
<H1>:: Register ::</H1>
<FORM METHOD="POST" ACTION="register2.php">
<table width="350" height="258" border="0">
<tr>
<td>username : </td>
<td><label>
<input name="member_user_id" type="text" id="member_user_id">
*</label></td>
</tr>
<tr>
<td>password : </td>
<td><label>
<input name="member_password" type="text" id="member_password">
*</label></td>
</tr>
<tr>
<td>ชื่อ : </td>
<td><label>
<input name="member_name" type="text" id="member_name">
*</label></td>
</tr>
<tr>
<td>นามสกุล : </td>
<td><label>
<input name="member_lname" type="text" id="member_lname">
*</label></td>
</tr>
<tr>
<td>ชื่อเล่น : </td>
<td><label>
<input name="member_nickname" type="text" id="member_nickname">
</label></td>
</tr>
<tr>
<td>เพศ : </td>
<td><label>
<input name="member_sex" type="radio" value="ชาย" checked>
ชาย&nbsp;
<input name="member_sex" type="radio" value="หญิง">
หญิง</label></td>
</tr>
<tr>
<td>อีเมล : </td>
<td><label>
<input name="member_email" type="text" id="member_email" size="30">
*</label></td>
</tr>
<tr>
<td>โทรศัพท์ : </td>
<td><label>
<input name="member_tel" type="text" id="member_tel" size="10">
</label></td>
</tr>
<tr>
<td>ที่อยู่ :</td>
<td><label>
<textarea name="member_address" cols="30" id="member_address"></textarea>
</label></td>
</tr>
<tr>
<td><label>
<input type="submit" name="Submit" value="Submit">
</label></td>
<td><label>
<input type="reset" name="Submit2" value="Reset">
</label></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</FORM>
</BODY>
</HTML>

------------------------
// register2.php

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?
$member_user_id=$_POST[member_user_id];
$member_password=$_POST[member_password];
$member_name=$_POST[member_name];
$member_lname=$_POST[member_lname];
$member_nickname=$_POST[member_nickname];
$member_sex=$_POST[member_sex];
$member_email=$_POST[member_email];
$member_tel=$_POST[member_tel];
$member_address=$_POST[member_address];
$member_dateTime_apply=date("Y-m-d");

if ($member_user_id=="" or $member_password=="" or $member_name=="" or $member_lname=="" ) {
echo "<h3>ERROR : กรุณากรอกข้อมูลให้ครบนะคะ<h3>"; exit();
}
include "function.php";
if (!checkemail($member_email)) {
echo "<h3>ERROR : รูปแบบอีเมลที่กรอกไม่ถูกต้องนะคะ </h3>"; exit();
}
include "connect.php";
mysql_query("SET NAMES UTF8");
$sql="select * from member1 where member_user_id='$member_user_id' ";
$result=mysql_db_query($dbname,$sql);
$num=mysql_num_rows($result);
if($num>0) {
echo "<h3>ERROR : Username ซ้ำค่ะ </h3>"; exit();
}
$sql="insert into member1 values('','member_user_id','$member_password','$member_name','$member_lname','$member_nickname','$member_sex'
'$member_email','$member_tel','$member_address','$member_dateTime_apply')";
$result=mysql_db_query($dbname,$sql);
if ($result) {
echo "<h3>ข้อมูลของคุณถูกบันทึกเรียบร้อยแล้วค่ะ</h3>";
echo "<A HREF='index.html'>คลิกเพื่อเข้าระบบสมาชิก</A><BR><BR>";
} else {
echo "<h3>ไม่สามารถสมัครเป็นสมาชิกได้ค่ะ</h3>";
}
mysql_close();
?>

-------------------------------

5 ความคิดเห็น

ผลลัพธ์จากการ กรอก ข้อมูลนะคะ

 

1

1.อะไรคือผลลัพท์ที่ไม่เป็นไปตามต้องการ ครับ ช่วยขยายความหน่อย
2.combobox เพิ่มอาชีพ หรือ อะไรก็ตาม ก็เขียนได้เลยครับ ไม่รู้ว่าที่ทำไม่ได้คือ เขียน combobox ไม่ถูก หรือ รับค่าไม่ถูก

<select name="xxx">
<option value="อาชีพ 1">อาชีพ 1</option>
<option value="อาชีพ 2">อาชีพ 2</option>
</select>

PHP เวลารับค่า ก็เหมือนกับการรับค่า input ทั่วไป คือ ดูจาก name

3.มีตัวอย่างบนเว็บ ผมคงไม่ต้องเขียนซ้ำอีก

จะว่าไป ข้อ 2 และ 3 สามารถหาตัวอย่างบนเว็บได้ ถ้าจะเสียเวลาหาสักนิด
2

ผลลัพธ์จริงๆ เมื่อกรอกข้อมูลเสร็จแล้วส่ง แล้ว  จะขึ้นข้อความว่า    


                                   ข้อมูลของคุณถูกบันทึกเรียบร้อยแล้วค่ะ

                                                คลิกเพื่อเข้าสู่ระบบ

เช่นนี้ค่ะ  แต่ หนูก็ ไม่ทราบว่า โค้ดมันผิดพลาดตรงไหนหรือป่าว  ถึงบอกว่า     ...ไม่สามารถสมัครเป็นสมาชิกได้ค่ะ...

และ ต้องขอบคุณนะคะ  สำหรับ ข้อแนะนำ ทั้งข้อ 2 และ ข้อ 3

3

นี่ก้อีกปัญหาหนึ่งที่ผมบอกเสมอ คือไม่รู้ว่าผิดพลาดตรงไหน ซึ่งจริงๆแล้ว ก็ผิดพลาด จะเป็นไปตามลำดับการออกแบบ (ถ้าออกแบบเอง ไม่ใช่เอาแต่ลอกเข้ามา)

หาตรวจสอบแล้ว ทุกอย่างถูกต้อง ข้อมูลไม่ หาย ไม่ตกไม่หล่น จนกระทั้งถึง ส่วนที่จะบันทึกข้อมูล

ความผิดพลาดก็จะอยู่ที่คำสั่ง SQL ที่ใช้

การตรวจสอบความผิดพลาดของ SQL ที่แสนจะง่ายดาย มี วิธีเดียว คือ

echo คำสั่ง SQL ก็ที่จะเอาไป query จริงๆ ออกมาดู ตรวจด้วยสายตา ว่า คำสั่ง เป็นไปตามความคาดหมายหรือไม่ หลังจากนั้น ให้ลอง copy เอาคำสั่งนั้นไปทดสอบบน phpmyadmin ถ้ามีข้อผิดพลาดใดๆ phpmyadmin จะแจ้งข้อผิดพลาดออกมาให้เราทราบเอง

ให้เราแก้ไขคำสั่งให้ถูกต้องจนบันทึกได้ แล้วก็เอารูปแบบนั้นๆมาแก้ไขโค้ดของเรา

ถ้าหากเราไม่รู้วิธีแก้ไข วิธีการที่ง่ายๆ เหมือนเดิม ก็คือ ในกรณีของเธอคือ การ INSERT ให้ทดลอง เพิ่มข้อมูลที่ต้องการ ลงบนฐานข้อมูลโดยตรง โดยให้มีข้อมูลเหมือนกับที่จะเพิ่ม เมือเพิ่ม สำเร็จแล้ว phpmyadmin จะแสดงรูปแบบคำสั่งที่ใช้ที่ถูกต้อง ให้เราสามารถไปดัดแปลงต่อได้

ลองดูนะครับ  
4

ขอบคุณค่ะ  หนูได้ผลลัพธ์ตามที่ต้องการแล้วค่ะ 



5
^