[ปัญหารอบ 3 ]ไม่มีอะไร Error แต่....ดูให้หน่อยครับ T T

เริ่มโดย lucationjj, 18 เมษายน 2011, 20:35:27

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

auzone

พอดีพึ่งอ่านหน้า 2 นะครับเลยเห็นว่าทำได้แล้ว 55+ แต่อย่างที่โพสไปตอนแรกครับ function นี้จะใช้งานไม่ได้แล้วใน version 5.3

ส่วน error อีกอันที่เกิด เกิดจากมีการ print ข้อความออกมาก่อนครับ ให้ดูว่าก่อนเปิด php มีวรรคหรือป่าวครับ หากมีลบออกครับ
แล้ว ก่อนใช้ function header มีการ echo ค่าอะไรออกมาก่อนหรือป่าวครับ

หากไม่มีให้ลองไล่ไปยังไฟล์ที่เรา include มาอีกทีครับ include "connect.php"; ว่าก่อนเปิด php และ หลังปิด php มีการ enter หรือป่าวครับ
หากมีก็ลบออกครับ
ห้ามก๊อป (copy) แบบเว็บกันนะครับ เจอทีไรใจแทบสลาย....
ใส่ลิ้งค์ได้ยังหว่า : ใครเลี้ยง [direct=http://www.hamsteronline.com]หนูแฮมสเตอร์[/direct] [direct=http://www.thaipetonline.com]เม่นแคระ[/direct] [direct=http://www.bunnyonline.com]กระต่าย[/direct] หรือ [direct=http://www.cavyonline.com]หนูแกสบี้[/direct] บ้าง [direct=http://thailovepet.com]เม่นแคระ[/direct]
รับซื้อเว็บเกี่ยวกับ สัตว์เลี้ยง | ท่องเที่ยว

asunza

อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 23:05:01
<?
$id=$_GET[id];
$goto=$_GET[goto];

include "connect.php";
$sql="select count_click from tb_url where id='$id'";
$result=mysql_db_query($dbname,$sql);
$rs=mysql_fetch_array($result);
$count_click=$rs[count_click];

$count=$count_click+1;

$sql2="update tb_url set count_click='$count' where id='$id'";
$result2=mysql_db_query($dbname,$sql2);
//header("Location: $goto"); <<<< บรรทัดนี้มันบอกผิด ก็เขียนถูกแล้ว

?>
แก้ตามที่บอกแล้วครับ มันยังขึ้นแบบนี้
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\myweb\link.php:1) in C:\AppServ\www\myweb\link.php on line 15

ผมเขียนบนเครื่องคอมครับ ยังไม่ได้อัพขึ้นโฮส

error เพราะ fonction headers ครับ บาง host จะมีปัญหากับคำสังนี้

echo"<meta http-equiv='refresh' content='0;URL=$goto'>";

ลองใช้แบบนี้ดูครับ
<?
$id=$_GET[id];
$goto=$_GET[goto];

include "connect.php";
$sql="select count_click from tb_url where id='$id'";
$result=mysql_db_query($dbname,$sql);
$rs=mysql_fetch_array($result);
$count_click=$rs[count_click];

$count=$count_click+1;

$sql2="update tb_url set count_click='$count' where id='$id'";
$result2=mysql_db_query($dbname,$sql2);
//header("Location: $goto"); [color=red]<<<< บรรทัดนี้มันบอกผิด ก็เขียนถูกแล้ว[/color]
echo"<meta http-equiv='refresh' content='0;URL=$goto'>";
?>



lucationjj

อ้างถึงจาก: bonaliza ใน 19 เมษายน 2011, 02:32:30
ถ้าโค๊ดนี้ไม่ผิด ก็ลองเชคที่ไฟลื list.php อ่ะค่ะ
โค้ด list.php

<?=$cate[$cate_id]?></b>
</br>
<ul>
<?
$sql="select * from tb_url where category='$cate_id' order by count_click desc";
$result=mysql_db_query($dbname,$sql);
while($rs=mysql_fetch_array($result)) {
   $id=$rs[id];
   $post_by=$rs[post_by];
   $url=$rs[url];
   $category=$rs[category];
   $title=$rs[title];
   $detail=$rs[detail];
   $count_click=$rs[count_click];
   
   echo "<LI>";
   echo "<b><a href='link.php?id=$id&goto=$url' target='_blank'>$title</a></b>";
   echo "Hits [$count_click]<br>";
   echo "<font size=2><b>จาก : </b> $post_by <b>URL: </b> $url </font><br>";
   echo "$detail <br><br>";
   echo "</LI>";
}
?>

ยังเหมือนเดิมครับ แก้ไม่หาย พอกด Submit เลือกหมวดหมู่อื่นมันก็ไปโผล่ หมวดหมู่การศึกษาอย่างเดียว  :wanwan031:
[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

lucationjj

ตารางฐานข้อมูล db_url 7 ฟิลด์

Create table 'tb_url'{
'id' INT(11) NOT NULL AUTO_INCREMENT,
'post_by' VARCHAR(50) NOT NULL,
'url' VARCHAR(200) NOT NULL,
'category' INT(2) NOT NULL, <<<<< มันเก็บลำดับหมวดหมู่
'title' VARCHAR(100) NOT NULL,
'detail' TEXT NOT NULL,
'count_click' INT(5) NOT NULL,
Primary key ('id')
};

[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

mSkyline

ผมงงว่าทำไรกันครับ

แล้วก็จับจุดปัญหาไม่ถูกเลย

เอาเป็นว่า ลองต่อท้ายคำสั่งนี้น่ะ
มันผิดตรงไหน เด๋วบอกเองครับ

mysql_db_query($dbname,$sql) or die (mysql_error());
AnyWhereToThai รับขนสินค้าจาก US UK JP KR CN กลับไทย
https://www.facebook.com/AnyWhereToThai

lucationjj

อ้างถึงจาก: mSkyline ใน 19 เมษายน 2011, 12:36:21
ผมงงว่าทำไรกันครับ

แล้วก็จับจุดปัญหาไม่ถูกเลย

เอาเป็นว่า ลองต่อท้ายคำสั่งนี้น่ะ
มันผิดตรงไหน เด๋วบอกเองครับ

mysql_db_query($dbname,$sql) or die (mysql_error());
ปัญหาที่ 3 มันไม่อะไร Error ครับเดียวผมรวมให้ดูนะครับ

อ้างถึงจาก: lucationjj ใน 19 เมษายน 2011, 00:11:50
<?
$cate[]="การศึกษา";
$cate_detail[]="โรงเรียน, สถาบันการศึกษา, กวดวิชาและสอนพิเศษ";

$cate[]="กิจกรรมและ เหตุการณ์สำคัญ";
$cate_detail[]="ข่าวและเหตุการณ์สำคัญ, นิทรรศการและงานแสดงสินค้า";

$cate[]="ข่าว และสื่อ";
$cate_detail[]="หนังสือพิมพ์, วารสาร, นิตยสาร, สถานีวิทยุ";

$cate[]="คอมพิวเตอร์";
$cate_detail[]="เกมส์, ความรู้เกี่ยวกับคอมพิวเตอร์, การเขียนโปรแกรม";

$cate[]="ท่องเที่ยว";
$cate_detail[]="ข้อมูลและสถานที่ท่องเที่ยว, โรงแรมและรัสอร์ท";

$cate[]="ธุรกิจ";
$cate_detail[]="สมัครและจัดหางาน, สตูดิโอถ่ายภาพและแต่งงาน";

$cate[]="สังคม วัฒนธรรม";
$cate_detail[]="ครอบครัวและเด็ก, ประเพณีวัฒนธรรม, ศาสนา";

$cate[]="หน่วยงานราชการ";
$cate_detail[]="กระทรวง, สถาทูต";

$cate[]="อินเตอร์เน็ต";
$cate_detail[]="Web hosting, ผู้ให้บริการจัดทำเว็บไซต์";

$cate[]="การแพทย์และสุขภาพ";
$cate_detail[]="โรคและการดูแลสุขภาพ, โรงพยาบาล, สายตา";
?>


นี้คือโค้ดด้านบนครับ
ผมลองกรอกแบบฟอร์ม ตอนเลือก หมวดหมู่ ผมกดเลือก หมวดหมู่คอมพิวเตอร์ พอกด submit ไปดูหน้าแสดงผลของหมวดหมู่
มันไปโผ่ลที่หมวดหมู่ การศึกษา อย่างเดียวเลยครับ เลือกหมวดหมู่ไหนมันก็ไปโผล่ใน หมวดการศึกษา  :P
โค้ดมันผิดตรงไหน
include "category.php"; <<< category.php เพื่อกำหนดตัวแปร Array ของหมวดหมู่โค้ดดานบน ^
for ($i=0;$i<count($cate);$i++) {
   $sql="select id from tb_url where category='$i'";
   $result=mysql_db_query($dbname,$sql);
   $num=mysql_num_rows($result);
แล้ววนรอบด้วยคำสั่ง for เริ่มต้นจาก 0 ไปยังตำแหน่งสุดท้ายของตัวแปร์ array $cate โดยการวนแต่ละรอบ หรือแต่ละหมวดหมู่ต้องเข้าไปดึงข้อมูลตาราง tb_url เพื่อหาจำนวนเว็บไซต์ที่มีอยู่ในแต่ละหมวดหมู่

   
   echo "<LI>";
   echo "<B><a href='list.php?cate_id=$i'>$cate[$i]</a></b>[$num]<br>";
   echo "$cate_detail[$i] <br><br>";
   echo "</LI>";
   }
แล้วค่อยนำออกมาแสดงรายชื่อ รายละเอียดของหมวดหมู่ และจำนวนเว็บไซต์ที่มีอยู่แต่ละหมวดหมู่ พร้อมลิงก์ไปยังสคริปต์ list.php แล้วส่งตำแหน่งอาร์เรย์ของหมวดหมู่ไปกับตัวแปร์ cate_id เพื่อใช้อ้างอิงแสดงเว็บไซต์ของแต่ละหมวดหมู่ออกมา


เหนื่อย วันนี้ทั้งวันแต่ยังไม่ท้อ ช่วยดูหน่อยครับ สรุปปัญหาคือพอกด Submit เลือกหมวดหมู่ไหนมันก็ไปโผล่ หมวดการศึกษา  :P

โค้ด list.php
<?
$cate_id=$_GET[cate_id];
include "connect.php";
include "category.php";
?>

<?=$cate[$cate_id]?></b>
</br>
<ul>
<?
$sql="select * from tb_url where category='$cate_id' order by count_click desc";
$result=mysql_db_query($dbname,$sql);
while($rs=mysql_fetch_array($result)) {
   $id=$rs[id];
   $post_by=$rs[post_by];
   $url=$rs[url];
   $category=$rs[category];
   $title=$rs[title];
   $detail=$rs[detail];
   $count_click=$rs[count_click];
   
   echo "<LI>";
   echo "<b><a href='link.php?id=$id&goto=$url' target='_blank'>$title</a></b>";
   echo "Hits [$count_click]<br>";
   echo "<font size=2><b>จาก : </b> $post_by <b>URL: </b> $url </font><br>";
   echo "$detail <br><br>";
   echo "</LI>";
}
?>
ตารางฐานข้อมูล db_url 7 ฟิลด์

Create table 'tb_url'{
'id' INT(11) NOT NULL AUTO_INCREMENT,
'post_by' VARCHAR(50) NOT NULL,
'url' VARCHAR(200) NOT NULL,
'category' INT(2) NOT NULL, <<<<< มันเก็บลำดับหมวดหมู่
'title' VARCHAR(100) NOT NULL,
'detail' TEXT NOT NULL,
'count_click' INT(5) NOT NULL,
Primary key ('id')
};


คือว่า ผมกรอกแบบฟอร์มแล้วกดเลือกหมวดหมู่คอมพิวเตอร์ แต่พอกด Submit แบบฟอร์ม แล้วไปดูหน้าแสดงผลมันไปอยู่หมวดหมู่การศึกษาครับ เลือกหมวดหมู่ไหนมันก็ไป อยู่หมวดหมู่การศึกษาหมดครับ :wanwan031:
[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

mSkyline

จะเอา id ของ catgory ใช่ปะครับ


แต่ไอนี่มันนับจำนวนมานี่ครับ ไม่ใช่ค่าที่เรียกมาดู ซึ่งมันก็มีค่า แค่ 0 กับ 1
$sql="select id from tb_url where category='$i'";
  $result=mysql_db_query($dbname,$sql);
  $num=mysql_num_rows($result);


หรือผมเข้าใจอะไรผิดหรือเปล่าครับ
AnyWhereToThai รับขนสินค้าจาก US UK JP KR CN กลับไทย
https://www.facebook.com/AnyWhereToThai

lucationjj

อ้างถึงจาก: mSkyline ใน 19 เมษายน 2011, 13:04:05
จะเอา id ของ catgory ใช่ปะครับ


แต่ไอนี่มันดึงจำนวนมานี่ครับ
$sql="select id from tb_url where category='$i'";
   $result=mysql_db_query($dbname,$sql);
   $num=mysql_num_rows($result);


หรือผมเข้าใจอะไรผิดหรือเปล่าครับ
ถ้าจะให้ถูกต้องใช้ mysql_data_result อะไรพวกนั้นไม่ใช่เหรอครับ
ใช่ครับ
เดียวขอลองที่ท่านให้มาดู
[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

lucationjj

[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

mSkyline

ลองอะไรหว่า

ลองเปลี่ยนฟังชั่นเป็น mysq_result ซิครับ

อ้างถึง$sql="select id from tb_url where category='$i'";
   $result=mysql_db_query($dbname,$sql);
   $num=mysql_result($result);
AnyWhereToThai รับขนสินค้าจาก US UK JP KR CN กลับไทย
https://www.facebook.com/AnyWhereToThai

amazegu

ทำอะไรผิดตรงไหนหรือเปล่าคับ หน้าที่มีปัญหา น่าจะเป็นหน้า index.php ของคุณเองมากกว่า หน้า list.php อย่าเพิ่งไปดูมัน

โค้ดหน้า index.php น่าจะประมาณนี้

<HTML>
<HEAD><TITLE>Web Directory</TITLE></HEAD>
<BODY>
<H1>:: Web Directory ::</H1>
<P>
[ <A HREF="index.php">หน้าแรก</A> ]
[ <A HREF="add_url.php">เพิ่มเว็บไซต์ (URL)</A> ]
[ <A HREF="search_url.php">ค้นหาเว็บไซต์</A> ]
[ <A HREF="top10.php">Top 10 URL</A> ]
<BR>
<P><B> หมวดหมู่ >> </B></P>
<UL>
<?
include "connect.php";
include "category.php";
for ($i=0;$i<count($cate);$i++) {

$sql="select id from tb_url where category='$i' ";
$result=mysql_db_query($dbname,$sql);
$num=mysql_num_rows($result);

echo "<LI>";
echo "<B><A HREF='list.php?cate_id=$i'>$cate[$i]</A></B> [$num]<BR>";
echo "$cate_detail[$i] <BR><BR>";
echo "</LI>";
}
?>
</UL>
</BODY>
</HTML>


แบบว่าเคยเอาสคริปตัวนี้มาศึกษา จำได้ว่าแรกๆที่เริ่มจับ php+myslq เลย สคริปและฐานข้อมูลก็ยังอยู่ในเครื่อง เลยเอามารันดู มันก็ปกติดี

amazegu


lucationjj

อ้างถึงจาก: amazegu ใน 19 เมษายน 2011, 13:15:15
ทำอะไรผิดตรงไหนหรือเปล่าคับ หน้าที่มีปัญหา น่าจะเป็นหน้า index.php ของคุณเองมากกว่า หน้า list.php อย่าเพิ่งไปดูมัน

โค้ดหน้า index.php น่าจะประมาณนี้

<HTML>
<HEAD><TITLE>Web Directory</TITLE></HEAD>
<BODY>
<H1>:: Web Directory ::</H1>
<P>
[ <A HREF="index.php">หน้าแรก</A> ]
[ <A HREF="add_url.php">เพิ่มเว็บไซต์ (URL)</A> ]
[ <A HREF="search_url.php">ค้นหาเว็บไซต์</A> ]
[ <A HREF="top10.php">Top 10 URL</A> ]
<BR>
<P><B> หมวดหมู่ >> </B></P>
<UL>
<?
include "connect.php";
include "category.php";
for ($i=0;$i<count($cate);$i++) {

$sql="select id from tb_url where category='$i' ";
$result=mysql_db_query($dbname,$sql);
$num=mysql_num_rows($result);

echo "<LI>";
echo "<B><A HREF='list.php?cate_id=$i'>$cate[$i]</A></B> [$num]<BR>";
echo "$cate_detail[$i] <BR><BR>";
echo "</LI>";
}
?>
</UL>
</BODY>
</HTML>


แบบว่าเคยเอาสคริปตัวนี้มาศึกษา จำได้ว่าแรกๆที่เริ่มจับ php+myslq เลย สคริปและฐานข้อมูลก็ยังอยู่ในเครื่อง เลยเอามารันดู มันก็ปกติดี
ใช่ครับ ผมยกมาแค่ บางส่วน
[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

lucationjj

Add_Url.php
โค้ด ยกมาแค่ตรงที่สำคัญ

<td>หมวดหมู่</td>
<td>
   <select name="category.php">
   <?
      include "category.php";
      for ($i=0;$i<count($cate);$i++) {
         echo "<option value='$i'>$cate[$i]</option>";
      }
   ?>
   </select>
มันผิดตรงไหน  :wanwan031:
[direct=][/direct]
วันนี้มี ไม่มีบล็อก index แล้ว

npbook

คิดว่าเกิดจากหน้า list.php อย่างที่คุณ bonaliza บอกครับ
เพียงแต่ปัญหามันซับซ้อนซ่อนเงื่อนเพื่อนทรยศนิดหน่อย
ผมเดาว่า php ที่คุณใช้ตั้ง register_global เป็น off (เป็นค่า default แต่ถ้า php version เก่าๆจะเป็น on)
ทำให้ตัวแปร $cate_id ไม่ถูก register
และเมื่อคุณนำไปใช้กับ query string ก็จะกลายเป็น
select * from tb_url where category='' order by count_click desc
ลองสังเกตุตรงตัวแดง เงื่อนไขจะกลายเป็นเปรียบเทียบว่า column category มีค่าเท่ากับ empty string หรือไม่
แต่เคราะห์หามยามร้าย column category มี type เป็น int
mysql จึงตีความว่า category = 0 ครับ

NPBook

mSkyline

ขอโทษครับ ช่วยสรุปให้ผมทุกทีได้มั้ย

code ใส่มาทุไฟล์ที่เกี่ยวของ เฉพาะส่วนที่เกี่ยวข้อง
ปัญหา มันคืออะไร กำลังจะทำอะไร ที่หน้าไหน

ถ้าไม่ได้ก็ไม่เป็นไรครับ จะคอยดูช่วยเป้นกำลังใจครับ
AnyWhereToThai รับขนสินค้าจาก US UK JP KR CN กลับไทย
https://www.facebook.com/AnyWhereToThai

npbook

ผมแนะนำว่าตอน develope ตั้งค่าใน php.ini ให้แสดง warning ทั้งหมด อย่าได้กั๊กครับ จะเป็นผลดีนักแล
NPBook

O.o!!

อย่างแรกช่วยไปบอกตรง post แรกหน่อยครับ ว่า ปัญหาอันใหนแก้ได้แล้ว อันใหนยังไม่ได้  คนเข้ามาแล้วงงครับ

ผมว่ามันผิดที่ส่วนนี้น่ะครับ  ลอง view source ดูหรือยังครับว่ามันเป็นตัวเลขที่ต่างกันหรือเปล่า

echo "<option value='$i'>$cate[$i]</option>";

มันน่าจะมีการใช้ผิดพลาดของ พวกเครื่องหมาย "" หรือ '' ครับ


สมมุติว่า

$i=2;
$cate[1]="one";
$cate[2]="two";

echo $cate[$1];

แล้วคุณ จะเจอ error น่ะครับ  มันจะไม่เห็น เป็น $cate[2] น่ะครับ

ลองปรับเปลี่ยนดูครับ


amazegu

http://condoclicks.co.cc/webdir/index.php

อัปโหลดขึ้นเว็บให้ทดสอบเลย โค้ดเกือบเดิมๆ แก้ connect.php ให้มันรับภาษาไทย(โค้ดเดิมอ่านไทยแล้วกะยึกกะยือ)
หน้าอื่นๆก็ใล่เปลี่ยนเป็น utf-8 จขกท ถ้าอยากได้เด๋วซิปขึ้นโฮสต์ให้คับ(ถ้าต้องการ)

bonaliza

อ้างถึงยังเหมือนเดิมครับ แก้ไม่หาย พอกด Submit เลือกหมวดหมู่อื่นมันก็ไปโผล่ หมวดหมู่การศึกษาอย่างเดียว

ขอดูโค๊ด หน้า add_url2.php หน่อยค่ะ อยากรู้ว่า จับใส่ db ไปยังไง
------0_0-----