สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network
Moderator: mindphp , ผู้ดูแลกระดาน
man2531
PHP Jr. Member
โพสต์: 22 ลงทะเบียนเมื่อ: 22/11/2008 4:15 am
โพสต์ที่ยังไม่ได้อ่าน
โดย man2531 » 17/07/2009 11:58 pm
มีไฟล์ dialog.txt อยู่ 1 ไฟล์ ภายในมีรายละเอียดดังนี้ครับ
a,20,192.168.16.106,32
b,90,192.168.16.136,44
c,50,192.168.16.221,0
d,90,192.168.16.136,44
e,50,192.168.16.221,80
f,90,192.168.16.136,55
g,20,192.168.16.106,10
จากโจทย์ ให้ทำการแสดง ip และ ความถี่ของ ip โดยดึงมาจากไฟล์ text ครับ คือคำตอบก็ประมาณนี้
ip frequency
192.168.16.106 2
192.168.16.136 3
192.168.16.221 2
เป็นต้นครับ
ผมมี code ตัวอย่างประมาณนี้ครับ คือมันไม่ error แต่มันแสดงได้ผิดพลาดและจนปัญญาหาทางออกไม่ได้วานผู้รู้ช่วยชี้แนะทีครับ ขอบคุณมากครับ
โค้ด: เลือกทั้งหมด
<?
$read = fopen("log.txt","r");
echo "<table border = 1>";
echo "<tr><td>ip</td><td>frequency</td></tr>";
$i = 0;
$line = fgets($read);
$str = explode(",",$line);
$check = $str[2];
$num = 0;
while(!feof($read))
{
//$check[$i] = $str[2];
if( $check == $str[2])
{
$num++;
$line = fgets($read);
$str = explode(",",$line);
}else{
echo "<tr><td>".$check."</td><td>".$num."</td></tr>" ;
$num = 0;
$check = $str[2];
}
//$i++ ;
}
echo "</table>";
fclose($read);
?>[/color]
mindphp
ผู้ดูแลระบบ MindPHP
โพสต์: 41266 ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:
โพสต์ที่ยังไม่ได้อ่าน
โดย mindphp » 18/07/2009 12:36 am
ถ้าจะให้เขียนง่ายๆ นะครับ เอาเรื่อง array เข้ามาประยุกต์ใช้ครับ
คำตอบประมาณนี้เปล่าครับ
192.168.16.136 3
192.168.16.221 2
192.168.16.106 1
เอ๋ว่าแต่โจทย์การบ้านหรือเปล่าครับเนี่ย
man2531
PHP Jr. Member
โพสต์: 22 ลงทะเบียนเมื่อ: 22/11/2008 4:15 am
โพสต์ที่ยังไม่ได้อ่าน
โดย man2531 » 18/07/2009 11:56 am
ครับผม ใช่แล้วครับ ยังไงก็ขอบคุณมากน่ะครับ ขอลองก่อง
man2531
PHP Jr. Member
โพสต์: 22 ลงทะเบียนเมื่อ: 22/11/2008 4:15 am
โพสต์ที่ยังไม่ได้อ่าน
โดย man2531 » 18/07/2009 1:57 pm
ขอโทษนะครับคือ ผมลองรันไฟล์แล้วปรากฏว่ามันไม่ยอม echo บรรทัดสุดท้ายของ file text ให้หนะครับ งงครับ แนะนำทีครับ
man2531
PHP Jr. Member
โพสต์: 22 ลงทะเบียนเมื่อ: 22/11/2008 4:15 am
โพสต์ที่ยังไม่ได้อ่าน
โดย man2531 » 18/07/2009 2:58 pm
คือว่าผมลอง run ไฟล์ดูมันไม่ยอมอ่านบรรทัดสุดท้ายขึ้นมาอะครับ
คือปกติคำตอบมันต้องมี 3 บรรทัดแบบนี้
192.168.16.106 2
192.168.16.136 3
192.168.16.221 2
แต่พอรันได้แบบนี้
192.168.16.106 2
192.168.16.136 3
คือมันแสดงแค่ 2 บรรทัดบน แต่บรรทัดล่างไม่ยอมแสดง เหมือนลูปยังไม่หมด แต่มันดันตัดบรรทัดล่างไปครับ
พอเข้าใจที่พูดอะเป่า คือเรียบเรียงคำพูดม่ค่อยเป็น ขอบคุณครับ
192.168.16.221 2 <<< บรรทัดสุดท้ายไม่ยอมแสดงออกมา
man2531
PHP Jr. Member
โพสต์: 22 ลงทะเบียนเมื่อ: 22/11/2008 4:15 am
โพสต์ที่ยังไม่ได้อ่าน
โดย man2531 » 18/07/2009 3:28 pm
โพสไม่ติด
ตอนนี้ไฟล์ log.txt ภายในมีอักษรดังนี้
a,20,192.168.16.106,32
b,90,192.168.16.136,44
c,70,192.168.16.136,55
d,80,192.168.16.136,22
e,50,192.168.16.156,14
e,50,192.168.16.156,14
e,50,192.168.16.176,14
e,50,192.168.16.156,14
code ตามนี้ครับ
โค้ด: เลือกทั้งหมด
$read = fopen("log.txt","r");
echo "<table border = 1>";
echo "<tr><td>ip</td><td>frequency</td></tr>";
$line = fgets($read);
$str = explode(",",$line);
$check = $str[2];
$num = 0;
//echo $check;
while(feof($read) == false)
{
//$check[$i] = $str[2];
if( $check == $str[2])
{
$num++;
$line = fgets($read);
$str = explode(",",$line);
}
else{
echo "<tr><td>".$check."</td><td>".$num."</td></tr>" ;
$num = 0;
$check = $str[2];
}
//$i++ ;
}
echo "</table>";
fclose($read);
mindphp
ผู้ดูแลระบบ MindPHP
โพสต์: 41266 ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:
โพสต์ที่ยังไม่ได้อ่าน
โดย mindphp » 19/07/2009 1:31 am
โค้ดยังเหมือนเดิมเลยนี่ครับ
ยังได้เห็นอะไรใหม่เลย
ลองทำความเข้าใจ ทีละบรรทัดว่าเขียน ไปแบบนั้นมันจะทำงานจริงๆ ยังไง
แล้วนำเรื่อง array มาประยุคเข้าไปด้วยตามที่แนะนำไป
mindphp
ผู้ดูแลระบบ MindPHP
โพสต์: 41266 ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:
โพสต์ที่ยังไม่ได้อ่าน
โดย mindphp » 18/12/2019 12:40 pm
โค้ด: เลือกทั้งหมด
<?
$read = fopen("a.txt","r");
echo "<table border = 1>";
echo "<tr><td>ip</td><td>frequency</td></tr>";
$line = fgets($read);
$str = explode(",",$line);
$a = array();
while(!feof($read))
{
$line = fgets($read);
$str = explode(",",$line);
$a[$str[2]][] = $str[2];
echo $str[2].'<br/>';
}
foreach($a as $k => $v) {
echo "<tr><td>".$k."</td><td>".count($a[$k])."</td></tr>" ;
}
echo "</table>";
fclose($read);
?>
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 14