เราจะนับจำนวนเรคคอร์ดที่ซ้ำยังไงคับ ถ้าสมมุติว่ามันมี catid ซ้ำกันอะคับเราจะนับจำนวนที่มันซ้ำกันยังไงอะคับ
select จาก table ที่ มี id ซ้ำกัน ครับ
แล้วให้มัน row ออกมา ได้เท่าไร
เอาwhile ไปครอบไว้
แล้ว num++
จนจบ
กรณี ของผม มีการ เพิ่ม ชื่อ นักเรียน ซ้ำกันเข้ามา
แน่นอน เราจะเช็ค
จาก รหัสนักเรียน หรือ Name ของเค้าก้อได้ ว่า ถ้า select ออกมา Name = Name
หรือ id = id
ให้แสดง ออกมาก่อนแล้ว num++ ใน while
Date :
5 มี.ค. 2550 18:07:13
By :
ฟูจัง
ขอดูตัวอย่างหน่อยได้รึป่าวคับ จะได้เข้าใจยิ่งขึ้น ขอบคุณคับ
Date :
5 มี.ค. 2550 20:36:16
By :
ธีระ
<?
$connect = mysql_connect("localhost","","") or die ("Can not connect MySQL !!");
$db = mysql_select_db("ชื่อdb",$connect) or die("Can not connect Database !!");
//3บรรทัดข้างล่างจะเป็นการตัด fieldที่ซ้ำกันออกไป(โดยกรุ้ป)และนับว่ามี record ที่ไม่ซ้ำกันทั้งหมดกี่อัน
$sql="select * from ชื่อtable group by fieldที่จะตรวจว่าซ้ำกัน";
$exec = mysql_query($sql,$connect) or die("Can not run Query !!2");
$max = mysql_num_rows($exec); //อันนี้แหละนับ
//html ธรรมดา
echo"<CENTER>";
echo"<table>";
echo"<tr align = center>";
echo"<td bgcolor = #FFFFCC>login</td><td bgcolor =#FFFFCC>จำนวนที่มี</td></tr>";
for($i=0;$i<$max;$i++) //เอาตัวแปร max มาลูป
{
$data = mysql_fetch_array($exec); //ตัวนี้ fetch มาจาก sql อันบนนู่น
//บรรทัดต่อไปเป็นการนับเร็คคอดโดยเทียบข้อมูลมที่อยู่ในตัวแปรdata
$nub = "select count(login) from score where login ='$data[0]'";
//$data เป็นข้อมูลแบบ อะเร ฉะนั้นเลขในวงเล็บจริงๆคือเลขแถวของ field ที่จะตรวจว่ามันซ้ำ(แถวแรกเป็นเลข 0)
$nubter = mysql_query($nub,$connect) or die("count error");
$shnub=mysql_fetch_array($nubter);//นับว่ามี field ที่ตรงกับ $data (ซ้ำ)อยู่กี่อัน
echo"<tr align = center><td bgcolor = #CCFFFF>$data[0]</td><td bgcolor =#CCFFFF>$shnub[0]</td></tr>";//อันนี้ใช้$shnub[0]ได้เลยงับ
}
สรุป วิธีที่ผมคิดก็คือ เริ่มจากนับจำนวน record โดยตัดตัวที่ซ้ำออกไปก่อน จากนั้น เช็คที่ละ record เลยว่ามีการซ้ำหรือไม่โดยการเทียบ ส่วนที่เลือกวิธีนี้ เพราะมันจะทำเพิ่มได้ง่าย
ปล.ผมลองคอมไพล์(กับDB) โค้ดที่เขียนให้แล้วนะคับว่าใช้งานได้
ปล2.ถ้ามีรูปแบบ DB มาให้ดูจะง่ายขึ้นงับ
ปล3.ถ้ายังงงอยู่ก็มาโพสเพิ่มละกาน
Date :
6 มี.ค. 2550 13:27:03
By :
หนมปุยฝ้าย
cat_form.php
<?
require_once("../include/connect_db.php");
require_once("../include/function.php");
$count=0;
$result= show_data("categories");
?>
<br>
<table align="center" width="404">
<form action="../admin/deletecat_many.php" method="post">
<tr bgcolor="#CCAAFF">
<td width="110" align="center"><font size="2" face="MS Sans Serif, Tahoma, sans-serif"><b>รหัส</b></font></td>
<td width="129" align="center"><font size="2" face="MS Sans Serif, Tahoma, sans-serif"><b>หมวดหมู่</b></font></td>
<td width="149" align="center"><font size="2" face="MS Sans Serif, Tahoma, sans-serif">จำนวนสินค้าในหมวดหมู่</font></td>
</tr>
<?
while($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
if($count==0)
{
?>
<tr bgcolor=#EEEEFF>
<td align=center><input type=checkbox name="checkbox[]" value=<?=$row["catid"]?>></td>
<td><font face="Ms Sans serif"> <a href="../admin/editcat_form.php?catid=<?=$row["catid"]?>">
<?=$row["catname"]?> <?=$row["catid"]?>
</a></font></td>
</tr>
<?
$count=1;
}
else
{
?>
<tr bgcolor="#CCCCFF">
<td align=center><input type=checkbox name="checkbox[]" value=<?=$row["catid"]?>></td>
<td><font face="Ms Sans serif"> <a href="../admin/editcat_form.php?catid=<?=$row["catid"]?>">
<?=$row["catname"]?>
</a></font></td>
</tr>
<?
$count=0;
}
}
?>
<tr>
<td align="center"><input type="submit" name="delete" value="ลบหมวดหมู่"></td>
</form>
<form action="../admin/insertcat_form.php" method="post">
<td><input type="submit" name="insert" value="เพิ่มหมวดหมู่"></td>
</form></tr>
</table>
นี่โค้ดที่ผมมี คืออยากเพิ่มในส่วน จำนวนสินค้าในหมวดหมู่ คืออยากรู้ว่าในหมวดหมู่นี้มีสินค้ากี่อันคับ
นี่database ของ product ประกอบด้วย
isbn title price description picture catid
นี่database ของ categories ประกอบด้วย
catid catname
ยังไงช่วยดูให้อีกทีนะคับ
Date :
7 มี.ค. 2550 15:28:03
By :
ขออีกรอบคับ
งืมๆ ฟิลไหนที่มันจะซ้ำ(บอกหมวดหมู่)ละคับ เดาว่า catid นะ งั้นรูปแบบ db คงเป็น
isbn title price description picture catid
001 กก 100 .................. ...... A
002 กข 100 .................. ...... B
003 กค 100 .................. ...... C
004 ขก 100 .................. ...... B
005 ขข 100 .................. ...... A
006 คก 100 .................. ...... A
007 คข 100 .................. ...... C
008 คง 100 .................. ...... C
009 คจ 100 .................. ...... D
010 จก 100 .................. ...... A
011 จข 100 .................. ...... B
012 ฉก 100 .................. ...... A
ปล.priceผมขี้เกียวจพิมนะ แฮะๆ
ในที่นี้ catid จะมี 4 แบบ A B C D
วิธีคิดนะคับ ถ้ามีดินสอหลายๆสีอยู่ในกล่องเดียวกัน ถ้าอยากรู้ว่าซ้ำกันกี่แทง ก่อนอื่นก้ต้องรู้ก่อนว่าสีที่มีทั้งหมดมีกี่สี
แล้วจึงแยกนับว่าแต่ละสีมีกี่แท่ง
เริ่มทำด้วยการนับว่าข้อมูลใน catid มีกี่แบบ
$connect = mysql_connect("ชื่อโฮส","","") or die ("Can not connect MySQL !!");
$db = mysql_select_db("ชื่อdb",$connect) or die("Can not connect Database !!");
$sql="select * from product group by catid";
$exec = mysql_query($sql,$connect) or die("Can not run Query !!2");
$max = mysql_num_rows($exec);
ที่ทำ 5 บรรทัดบนนี่ จะทำการนับคับ ว่ามี ประเภทของ catid อยู่กี่แบบ โดยรวบแบบโดย group by catid
$max จะเป็นตัวแปรที่นับ type ของ catid และจะได้ค่าเป็น 4(จากตัวอย่างข้างบนนะ)
ต่อไป
for($i=0;$i<$max;$i++) //เอาตัวแปร max มาลูปได้ 4 รอบ เพราะมี type 4 แบบ
//ต่อไปนี้เราจะทำการนับว่าแต่ละ type ของ catid จะมีข้อมูลอยู่กี่ตัว
{
$data = mysql_fetch_array($exec); //ตัวนี้ fetch มาจาก sql อันบนนู่น
$nub = "select count(isbn) from product where catid ='$data[0]'";
//ตัวนี้เป็นการนับ isbn (จริงๆนับฟิลไหนก็ได้) โดยเทียบกับ $data[0] โดย $data[0] จะเป็นค่าของ catid ในแต่ละรอบ
และ ทำทั้งหมด $max รอบ(จากลูป for ข้างบน) ก็คือ 4 รอบ โดยรอบแรกที่นับ จะนับตัวที่มี catid หรือ $data[0] เป็น A รอบ2,3,4 เป็น BCD
//$data เป็นข้อมูลแบบ อะเร ฉะนั้นเลขในวงเล็บจริงๆคือเลขแถวของ field ที่จะตรวจว่ามันซ้ำ(แถวแรกเป็นเลข 0)
$nubter = mysql_query($nub,$connect) or die("count error");
$shnub=mysql_fetch_array($nubter);//นับว่ามี field ที่ตรงกับ $data (ซ้ำ)อยู่กี่อัน
//ผลลัพ(จำนวนเร็คคอดที่ซ้ำ)ก็จะถูกเก็บไว้ใน $shnub[0]
}
เสร็จและคับส่วน ดีไซน์ HTML ยังไงก็ตามสบายส่วนตัวแปรที่จะเอาออกมาใช้ในการ report คือ $data[0] และ $shnub[0]
โดย $data[0] คือประเภทของ catid และ $shnub[0] เป็นจำนวนที่ซ้ำในแต่ละ catid
ปล.ทั้ง 2 ตัวแปรต้องใช้ใน ลูป for นะคับ
Date :
13 มี.ค. 2550 00:45:41
By :
หนมปุยฝ้าย
Date :
2009-10-07 18:41:48
By :
webmaster
Load balance : Server 05