พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
PHP development / PHP development
Anan
Anan
Mon 11 Sep 2006 23:05:02

สวัสดีครับ

 

ขอขอบคุณมากสำหรับคำแนะนำ ในเรื่องของ การเรียกข้อมูลจากฐานข้อมูล Mysql ออกมาในรูปของ check box และ radio box

 

ด้านล่างเป็น code program ที่เขียนบันทึกลงใน Mysql

 

ข้อมูลที่เป็น check box

 

<form action="add.php" method="post">

<b>Food products group</b>

<input type="checkbox" name="agri" value="1" >Agricultural Products<br>

<input type="checkbox" name="alkohol" value="2">Alkoholic Beverages<br>

<input type="checkbox" name="nonal" value="3">Non Alkoholic Beverages<br>

<input type="checkbox" name="bakery" value="4">Bakery Products<br>

</form>

 

 

ข้อมูลที่เป็น radio box

<b>Would you like to receive food news and post buy and sell information?</b>

<input type="radio" name="mail" value="receive" checked>Receive

<="input type="radio" name="mail" value="nreceive">Not receive<br>

 

********* ที่คุณแนะนำมาให้เขียนเพื่อดึงข้อมูลจาก mysql ขึ้นมาโชว์เป็น check box และ radio box ข้างล่างนี้

 

<input type="checkbox" name="chk[]" value="1"<? echo (($row["field_name"] == 1)?" selected":""); ?>>

<input type="radio" name="rad" value="1"<? echo (($row["field_name"]==1)?" selected":""); ?>>

<input type="radio" name="rad" value="2"<? echo (($row["field_name"]==2)?" selected":""); ?>>

 

********* ไม่ทราบว่าเมื่อผมนำมาประยุกต์แล้วผมเขียนถูกหรือเปล่า

 

<input type="checkbox" name="agri" value="1"<? echo (($row["agri"] == 1)?" selected":""); ?>>

<input type="checkbox" name="alkohol" value="2"<? echo (($row["alkohol"] == 2)?" selected":""); ?>>

<input type="checkbox" name="nonal" value="3"<? echo (($row["nonal"] == 3)?" selected":""); ?>>

<input type="checkbox" name="bakery" value="4"<? echo (($row["bakery"] == 4)?" selected":""); ?>>

 

 

<input type="radio" name="mail" value="receive"<? echo (($row["mail"]==receive)?" selected":""); ?>>

<input type="radio" name="mail" value="nreceive"<? echo (($row["mail"]==nreceive)?" selected":""); ?>>

 

********* ถ้าผมเขียนถูก ปรากฎว่าพอรันออกมาแล้ว มันไม่โชว์ในสิ่งที่เลือกนะครับ ช่วยแนะนำให้อีกครั้งครับ

 

อนันต์

 

 

 

 

Administrator
Tue 12 Sep 2006 00:50:06
ขึ้นอยู่กับ field ที่ออกแบบไว้ครับ เช่นในส่วนของ checkbox นั้น
<input type="checkbox" name="agri" value="1"<? echo (($row["agri"] == 1)?" selected":""); ?>>
<input type="checkbox" name="alkohol" value="1"<? echo (($row["alkohol"] == 1)?" selected":""); ?>>
<input type="checkbox" name="nonal" value="1"<? echo (($row["nonal"] == 1)?" selected":""); ?>>
<input type="checkbox" name="bakery" value="1"<? echo (($row["bakery"] == 1)?" selected":""); ?>>

ในส่วนของ checkbox คุณต้องแบ่ง field เพื่อที่จะเก็บค่าทั้งหมดเนื่องจาก checkbox ออกแบบมาเพื่อให้ส่งค่าได้หลายค่าครับ ฉะนั้นในแต่ละ field บนฐานข้อมูลก็เก็บเพียง 0 หรือ 1 ก็เพียงพอครับ จากโค๊ดข้างบนในฐานข้อมูลคุณจึงต้องมี field ชือ agri, alkohol, nonal, bakery เพื่อให้เก็บค่าที่ เป็น 0 หรือ 1 ครับ

ส่วน radio นั้นออกแบบมาให้สามารถเลือกได้เพียงค่าเดียวครับดังนั้น
<input type="radio" name="mail" value="receive"<? echo (($row["mail"]==receive)?" selected":""); ?>>
<input type="radio" name="mail" value="nreceive"<? echo (($row["mail"]==nreceive)?" selected":""); ?>>

ผิดตรงที่ค่าที่ควรจะได้นั้นถ้าคุณส่งเป็น string ตอนได้มาจาก database ก็จะเป็น string ครับโค๊ดควรจะเป็น

<input type="radio" name="mail" value="receive"<? echo (($row["mail"]=="receive")?" selected":""); ?>>
<input type="radio" name="mail" value="nreceive"<? echo (($row["mail"]=="nreceive")?" selected":""); ?>>

ทั้งหมดนี้คุณลองทำการเปรียบเทียบข้อมูลในฐานข้อมูลดูครับว่าแต่ละ field มีค่าที่บันทึกเป็นอะไรครับ ตรงตามแต่ละ condition ที่ตรวจสอบไว้หรือไม่ครับ
Anan
Anan
Tue 12 Sep 2006 22:36:42

สวัสดีครับ

ขอขอบคุณมากสำหรับคำตอบ แต่พอไปเขียนแล้ว ปรากฎว่ายังคงมีปัญหาเหมือนเดิมครับ คือ มันไม่โชว์คลิ๊กที่ลูกค้าเลือกไว้ ผมได้ส่งโค้ดโปรแกรมมาให้ทางคุณช่วยเหลือข้างล่างนี้ครับ รบกวนอีกครั้งนะครับ

<?
 if($email=="")
 {
  print("Error no email");
 }
 else
 {
  $link=mysql_connect("localhost","root","");
  if (!$link)
  {
   print("Error");
  }
  else
  {
   mysql_select_db("test",$link);
   $sql="select*from test where email=$email";
   $res=mysql_query($sql,$link);
   $n=mysql_num_rows($res);
   if($n==0)
    print("Error entry not found");
   else
   {
    $row=mysql_fetch_row($res);

?>
<p><form method="post" action="update.php">
Email:<?=$row[1]?><br>
<input type="hidden" name="email" value="<?=$row[1]?>">
Company:<input type="text" name="company" value="<?=$row[0]?>"><br>
Country:<input type="text" name="country" value="<?=$row[2]?>"><br>

Product group:<br>
<input type="checkbox" name="agri" value="1"<?echo(($row["agri"]==1)?"selected":"");?>>Agricultural Products<br>
<input type="checkbox" name="alkohol" value="1"<?echo(($row["alkohol"]==1)?"selected":"");?>>Alkoholic Beverages<br>
<input type="checkbox" name="bakery"value="1"<?echo(($row["bakery"]==1)?"selected":"");?>>Bakery Products<br>

Would you like to receive food news?<br>
<input type="radio" name="mail" value="receive"<? echo (($row["mail"]=="receive")?" selected":""); ?>>Receive<br>
<input type="radio" name="mail" value="nreceive"<? echo (($row["mail"]=="nreceive")?" selected":""); ?>>Not receive

<p><input type="submit" value="Add data">
</form>
<?
   }
  }
 }
?>

Administrator
Tue 12 Sep 2006 22:58:14
คุณใช้ mysql_fetch_row() ซึ่งจะคืนค่ามาเป็น Array ครับ แต่ในโค๊ดที่ให้ไปนั้นจะใช้แบบ Associative array ทางแก้มีสองทางคือ
1. เปลี่ยน index ของ $row เป็น index ของ field นั้นๆครับ
2. เปลี่ยนไปใช้ mysql_fetch_array() เพื่อจะได้คืนค่ามาเป็น Associative array ครับ

คุณอาจจะใช้ mysql_fetch_array() ก็ได้โดยไม่ต้องระบุ parameter ที่สอง จะมีผลทำให้คุณสามารถอ้างได้ทั้งแบบ array และ associative array ครับ
Anan
Anan
Wed 13 Sep 2006 20:23:24

สวัสดีครับ

ขอขอบคุณมากครับสำหรับคำแนะนำ ผมสมารถแก้ปัญหานี้ได้แล้วครับ

ผมเริ่มหัดเขียน PHP and Mysql และคิดว่าคงจะมีปัญหาค่อนข้างมาก ซึ่งถ้าหาทางแก้เองคิดว่าต้องใช้เวลานานแล้วก็ไม่รู้ว่าจะแก้ได้ไหม เพราะว่าไม่ได้เรียนมา ซึ่งคำแนะนำของคุณเป็นประโยชน์อย่างมาก

อย่างไรก็ตามคิดว่าคงจะมีคำถามอีกมากที่จะต้องรบกวนถามคุณ เป็นไปได้ไหมครับที่จะเป็นที่ปรึกษาในการเขียนโปรแกรมสำหรับเว็บที่ผมเขียนอยู่นี้ เว็บนี้เป็นเว็บของบริษัทผมเอง ไม่ได้เขียนให้ใคร และเหตุผลที่ต้องการเขียนเองเพราะว่าถูกใจมากกว่าให้โปรแกรมเมอร์คนอื่นเขียนและแก้ไขเองได้ด้วย

ระยะเวลาในการเขียนเว็บไซค์ตัวนี้คิดว่าคงจะใช้เวลาประมาณ 15 วัน จากวันนี้ 13 กันยายน 2549 ถึงวันที่ 28 กันยายน 2549 และอีก 15 วันหลัง สำหรับการขึ้นเว็บและแก้ไขปัญหาต่างๆ ซึ่งรวมทั้งหมด 30 วัน โดยมีข้อแม้ว่าคุณเป็นที่ปรึกษาให้คำแนะนำในการเขียน โดยผมเสนอค่าตอบแทน 3,000 บาท สำหรับเวลา 30 วัน ตั้งแต่วันที่ 13 กันยายน - 12 ตุลาคม 2549 ถ้า OK ขอให้แจ้งเลขที่บัญชีมาด้วยครับ

ขอขอบคุณเป็นอย่างสูงอีกครั้ง

อนันต์

Administrator
Wed 13 Sep 2006 20:56:05
ขอบคุณมากครับสำหรับข้อเสนอและความไว้วางใจ แต่ในทางปฏิบัติแล้วคุณสามารถเข้ามาถามที่ได้ตลอกเวลาโดยไม่ต้องจ่ายค่าบริการใดๆครับ ซึ่งปกติแล้วผมจะอยู่หน้าจอแทบทั้งวัน ผมจะเข้ามาวันละหลายๆครั้ง ซึ่งจะเห็นว่าผมจะตอบหลังจากเวลาที่มีการ post ไม่นาน และอีกอย่างการ debug นั้นก็คงต้องใช้ board นี้ในการขอดูโค๊ดครับ

ขอบคุณอีกครั้งครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login