พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
PHP development / การแสดงข้อมูลบาง field ใน Mysql
Anan
Anan
Sun 1 Oct 2006 06:39:56

สวัสดีครับ

 

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

 

ผมเขียนโปรแกรมขึ้นมาเพื่อเก็บข้อมูลชื่อ, ที่อยู่, email, ประเทศ, กลุ่มสินค้าอาหารที่ผลิต ของบริษัทต่างๆดังนี้

<html>
<head>
<title>Add company.html</title>

</head>

<body>

<table border="0" cellspacing="1" cellpadding="1">
<tr><td><font color="#8B0000" face="verdana" size="1"><b><font color="#000000">*</font>Company Name: </b></font></td>
<td><input type="text" size="30" name="company"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b>Contact Person: </b></font></td>
<td><input type="text" size="30" name="cperson"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b>Address: </b></font></td>
<td><input type="text" size="40" name="address"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b><font color="#000000">*</font>Country: </b></font></td>
<td><select name="country">
 <option value="0">Please select</option>\n
 <option value="Albania">Albania</option>\n
 <option value="Algeria">Algeria</option>\n
       <option value="Argentina">Argentina</option>\n
       <option value="Australia">Australia</option>\n
       <option value="Austria">Austria</option>\n
       <option value="Bahrain">Bahrain</option>\n
       <option value="Bangladesh">Bangladesh</option>\n
       <option value="Belarus">Belarus</option>\n

 </select></td></tr>

<tr><td><font color="#8B0000" face="verdana" size="1"><b>Phone: </b></font></td>
<td><input type="text"  size="30" name="phone"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b>Fax: </b></font></td>
<td><input type="text" size="30" name="fax"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b><font color="#000000">*</font>Email_1: </b></font></td>
<td><input type="text" size="30" name="email1"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b>Email_2: </b></font></td>
<td><input type="text" size="30" name="email2"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b>Website: </b></font></td>
<td><input type="text" size="30" name="web"></td></tr>
<tr><td><font color="#8B0000" face="verdana" size="1"><b>Product Detail: </b></font></td>
<td><textarea cols="30" row="10" name="productd"></textarea></td></tr>
<tr><td height="30" valign="bottom"><font color="#8B0000" face="verdana" size="1"><b><font color="#000000">*</font>Product Group: </b></font></td></tr>
<tr>
<td></td>
<td><input type="checkbox" name="agri" value="1"><font color="#8B0000" face="verdana" size="1">Agricultural Products</font></td>
<td><input type="checkbox" name="alkohol" value="1"><font color="#8B0000" face="verdana" size="1">Alkoholic Beverages</font></td></tr>
<tr>
<td></td>
<td><input type="checkbox" name="nonal" value="1"><font color="#8B0000" face="verdana" size="1">Non Alkoholic Beverages</font></td>
<td><input type="checkbox" name="bakery" value="1"><font color="#8B0000" face="verdana" size="1">Bakery Products</font></td></tr>

</table>
</form>
</body>
</html>

จากนั้นผมนำข้อมูลที่เก็บได้เข้าไปเก็บไว้ในฐานข้อมูล Mysql ดังนั้น

ฐานข้อมูลชื่อว่า company      ตารางชื่อว่า company

 

Company             address               country                  email                     agri        alcohol                 nonal

A company         Bangkok              Thai                       a                             1              0                              1             

B company         Sydney                 Australia               b                             0              1                              0

C company         Rome                    Italy                        c                              1              0                              1

 

คำถามดังนี้ครับ

  1. ถ้าผมต้องการเขียนว่ามีจำนวนบริษัทเท่าไรที่อยู่ในกลุ่มผลิตอาหารประเภท nonal?

คำตอบคือ 2 บริษัทได้แก่ A company และ C company

        ซึ่งวิธีการเขียนนั้นผมคิดว่าคงจะเขียนในลักษณะว่า

        Select * from company แล้วให้เลือก filed nonal เพื่อให้มันคำนวณเพื่อแสดงผลออกมานั้น จะเขียนอย่างไรครับ

 

  1. คำตอบต่อเนื่องจากคำถามที่ 1 นั้น เมื่อมันแสดงผลออกมาเป็นจำนวน 2 บริษัทแล้วนั้น อยากจะทราบถึงรายละเอียดของแต่ละบริษัทนั้นว่ามีที่อยู่อยู่ที่ไหน ประเทศอะไร และ email อะไรครับ?

Company        address          country

A company         Bangkok              Thai

C company         Rome                    Italy

 

รบกวนช่วยแนะนำด้วยครับ

 

อนันต์

 

 

 

Administrator
Sun 1 Oct 2006 10:38:00
การหาจำนวน record ที่เลือกออกมาตาม condition ที่ระบุไว้นั้นใชั function COUNT() ในภาษา SQL ครับ
SELECT COUNT(company) AS num FROM company WHERE nonal=1
จะได้เป็นจำนวน record ที่มี field nonal เป็น 1

ส่วนการแสดงโดยการระบุ condition ก็สามารถใช้ WHERE CLUASE ได้ครับเช่นเดียวกับคำสั่งด้านบน เพียงแต่จะไม่ใช้ function count() เท่านั้นครับ เช่น
SELECT company, address, country FROM company WHERE nonal=1

คำสั่ง WHERE CLUASE นั้นใช้เพื่อระบุ conditon ในการ SELECT ข้อมูลเพื่อให้ได้เพียงข้อมูลตามที่ต้องการเท่านั้นครับ
Anan
Anan
Sun 1 Oct 2006 22:07:45

ขอบคุณครับที่กรุณาแนะนำ

แต่หลังจากผมได้เขียนโปรแกรมตามที่แนะนำดังข้างล่างนี้แล้ว

<?
$link=mysql_connect("localhost","root","");
if (!$link)
{
 print("Error");
}
else
{
 mysql_select_db("company",$link);
 $sql="select company from company";
 $res=mysql_query($sql, $link);
 echo"<table border='1' cellspacing='1' cellpadding='1' frame='hsides'>";
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'><b><center>";
 echo mysql_num_rows($res);
 echo"<font color='#8B0000' face='verdana' size='1'>  food companies in our directory";
 echo"</b></center></font></td></tr>";

 $sql="SELECT COUNT(company) AS num FROM company WHERE agri=1";
 $res=mysql_query($sql, $link);
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'>";
 echo mysql_num_rows($res);
 echo"<font color='#8B0000' face='verdana' size='1'>  Agricultural Product Com.";
 echo"</font></td></tr>";

 $sql="SELECT COUNT(company) AS num FROM company WHERE alkohol=1";
 $res=mysql_query($sql, $link);
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'>";
 echo mysql_num_rows($res);
 echo"<font color='#8B0000' face='verdana' size='1'>  Alkoholic Beverages Com.";
 echo"</font></td></tr>";

 $sql="SELECT COUNT(company) AS num FROM company WHERE nonal=1";
 $res=mysql_query($sql, $link);
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'>";
 echo mysql_num_rows($res);
 echo"<font color='#8B0000' face='verdana' size='1'>  Non Alkoholic Beverages Com.";
 echo"</font></td></tr>";

}

?>

ปรากฎว่าค่าที่ได้จะแสดงดังนี้ครับ

55 food companies in our directory
1 Agricultural Product Com.
1 Alkoholic Beverages Com.
1 Non Alkoholic Beverages Com.

ซึ่งโปรแกรมจะโชว์แค่ 1 ออกมาเท่านั้น ซึ่งในความเป็นจริงแล้วที่ถูกต้องจะต้องเป็นอย่างนี้ครับ

55 food companies in our directory
20  Agricultural Product Com.
15  Alkoholic Beverages Com.
30  Non Alkoholic Beverages Com.

ขอคำแนะนำด้วยครับ

อนันต์

Administrator
Sun 1 Oct 2006 23:51:59
คุณไม่ต้องใช้ mysql_num_rows() เพื่อหาจำนวน record แล้วครับ การใช้งาน COUNT() นั้นจะคืนค่ามาเป็นตัวเลขของจำนวน record ครับ นั่นคือคุณเพียงแต่ทำการ fetch ข้อมูลที่อยู่ใน result resource ด้วย mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc() เพื่อเข้าถึงข้อมูลภายในเท่านั้นครับจะได้ตัวเลขของจำนวน record ครับ

อาจจะต้องเขียนโตณดเพิ่มประมาณ 2 บรรทัด แต่ดีกว่าการใช้งาน mysql_num_rows() เพื่อนับ record ทั้งหมดที่ได้เลือกมาครับ เนื่องจากการนำ record ทั้งหมดเพื่อมานับนั้นจำต้องใช้ทรัพยากรของระบบเพื่อ handle ข้อมูลเหล่านั้น ซึ่งทั้งที่เราต้องการเพียงเค่ตัวเลขเท่านั้น เป็นการประหยัดทรัพยากรของระบบครับ

mysql_select_db("company",$link);
 $sql="select COUNT(company) AS num from company";
 $res=mysql_query($sql, $link);
 $row = mysql_fetch_array($res, MYSQL_ASSOC);
 echo"<table border='1' cellspacing='1' cellpadding='1' frame='hsides'>";
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'><b><center>";
 echo $row["num"];
 echo"<font color='#8B0000' face='verdana' size='1'>  food companies in our directory";
 echo"</b></center></font></td></tr>";

 $sql="SELECT COUNT(company) AS num FROM company WHERE agri=1";
 $res=mysql_query($sql, $link);
 $row = mysql_fetch_array($res, MYSQL_ASSOC);
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'>";
 echo $row["num"];
 echo"<font color='#8B0000' face='verdana' size='1'>  Agricultural Product Com.";
 echo"</font></td></tr>";

 $sql="SELECT COUNT(company) AS num FROM company WHERE alkohol=1";
 $res=mysql_query($sql, $link);
 $row = mysql_fetch_array($res, MYSQL_ASSOC);
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'>";
 echo $row["num"];
 echo"<font color='#8B0000' face='verdana' size='1'>  Alkoholic Beverages Com.";
 echo"</font></td></tr>";

 $sql="SELECT COUNT(company) AS num FROM company WHERE nonal=1";
 $res=mysql_query($sql, $link);
 $row = mysql_fetch_array($res, MYSQL_ASSOC);
 echo"<tr>";
 echo"<td><font color='#0000CD' face='verdana' size='1'>";
 echo $row["num"];
 echo"<font color='#8B0000' face='verdana' size='1'>  Non Alkoholic Beverages Com.";
 echo"</font></td></tr>";

ผมได้ทำการ hilight ส่วนที่แก้ไขไว้ให้แล้วนะครับ
Anan
Anan
Mon 2 Oct 2006 07:03:47

ขอบคุณครับ

ใช้ได้แล้วครับ

อนันต์

mootoo
mootoo
Thu 22 Nov 2007 15:20:46

หากต้องการจะ Select ข้อมูลจากฐานข้อมูล ด้วย Checkbox คือว่า Show ข้อมูลที่เราคลิกเท่านั้นนะค่ะ ทำไงฮะ?

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