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
C company
คำถามดังนี้ครับ
- ถ้าผมต้องการเขียนว่ามีจำนวนบริษัทเท่าไรที่อยู่ในกลุ่มผลิตอาหารประเภท nonal?
คำตอบคือ 2 บริษัทได้แก่ A company และ C company
ซึ่งวิธีการเขียนนั้นผมคิดว่าคงจะเขียนในลักษณะว่า
Select * from company แล้วให้เลือก filed nonal เพื่อให้มันคำนวณเพื่อแสดงผลออกมานั้น จะเขียนอย่างไรครับ
- คำตอบต่อเนื่องจากคำถามที่ 1 นั้น เมื่อมันแสดงผลออกมาเป็นจำนวน 2 บริษัทแล้วนั้น อยากจะทราบถึงรายละเอียดของแต่ละบริษัทนั้นว่ามีที่อยู่อยู่ที่ไหน ประเทศอะไร และ email อะไรครับ?
Company address country
A company Bangkok Thai
C company
รบกวนช่วยแนะนำด้วยครับ
อนันต์
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 ข้อมูลเพื่อให้ได้เพียงข้อมูลตามที่ต้องการเท่านั้นครับ
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>";
}
?>
ปรากฎว่าค่าที่ได้จะแสดงดังนี้ครับ
1 Agricultural Product Com.
1 Alkoholic Beverages Com.
1 Non Alkoholic Beverages Com.
ซึ่งโปรแกรมจะโชว์แค่ 1 ออกมาเท่านั้น ซึ่งในความเป็นจริงแล้วที่ถูกต้องจะต้องเป็นอย่างนี้ครับ
| 20 Agricultural Product Com. |
| 15 Alkoholic Beverages Com. |
| 30 Non Alkoholic Beverages Com. |
ขอคำแนะนำด้วยครับ
อนันต์
อาจจะต้องเขียนโตณดเพิ่มประมาณ 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>";
Mon 2 Oct 2006 07:03:47
ขอบคุณครับ
ใช้ได้แล้วครับ
อนันต์
Thu 22 Nov 2007 15:20:46
หากต้องการจะ Select ข้อมูลจากฐานข้อมูล ด้วย Checkbox คือว่า Show ข้อมูลที่เราคลิกเท่านั้นนะค่ะ ทำไงฮะ?

















