Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
นี้โค้ดที่เขียน ผมว่า ผมเขียนถูกนะ :wanwan006:
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); <<<< มันผิดบรรทัดนี้ ผมยกมาแค่นี้ครับมันผิด บรรทัดที่ 21
ก็เขียนถูกแล้ว ช่วยดูหน่อยครับ เผื่อผมจะหลง ขอบคุณครับ :wanwan017:
สเตปแรก
ลองดูที่ตัวแปร $num, $result มันมีการเรียกใช้ซ้ำกันหรือป่าว
อ้างถึงจาก: bouy22 ใน 18 เมษายน 2011, 20:39:45
สเตปแรก
ลองดูที่ตัวแปร $num, $result มันมีการเรียกใช้ซ้ำกันหรือป่าว
ไม่ซ่ำครับ
$num=mysql_num_rows($result) or die(mysql_error());
มันจะได้รายละเอียดเยอะขึ้นครับ
:wanwan017:
อ้างถึงจาก: ganginwpop ใน 18 เมษายน 2011, 20:43:34
$num=mysql_num_rows($result) or die(mysql_error());
มันจะได้รายละเอียดเยอะขึ้นครับ
:wanwan017:
อ่าตามนั้นครับ หรือ
$num=mysql_num_rows($result);
echo mysql_error();
ต่อไปแล้วลองดูว่าผิดตรงไหน
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 20:35:27
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
นี้โค้ดที่เขียน ผมว่า ผมเขียนถูกนะ :wanwan006:
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); <<<< มันผิดบรรทัดนี้ ผมยกมาแค่นี้ครับมันผิด บรรทัดที่ 21
ก็เขียนถูกแล้ว ช่วยดูหน่อยครับ เผื่อผมจะหลง ขอบคุณครับ :wanwan017:
แน่ใจว่าใช้ function นี้ถูกนะครับ mysql_db_query($dbname,$sql) ดูเหมือนกันค่าที่ออกมาจะไม่ใช่ข้อมูลที่จะส่งเข้า mysql_num_rows ได้นะ
อ้างถึงจาก: hero-nana ใน 18 เมษายน 2011, 20:48:42
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 20:35:27
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
นี้โค้ดที่เขียน ผมว่า ผมเขียนถูกนะ :wanwan006:
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); <<<< มันผิดบรรทัดนี้ ผมยกมาแค่นี้ครับมันผิด บรรทัดที่ 21
ก็เขียนถูกแล้ว ช่วยดูหน่อยครับ เผื่อผมจะหลง ขอบคุณครับ :wanwan017:
แน่ใจว่าใช้ function นี้ถูกนะครับ mysql_db_query($dbname,$sql) ดูเหมือนกันค่าที่ออกมาจะไม่ใช่ข้อมูลที่จะส่งเข้า mysql_num_rows ได้นะ
ใช้ครับผมให้มันดึงข้อมูลมาจาก connect.php
dbname='db_submit'
อ้างถึงจาก: bouy22 ใน 18 เมษายน 2011, 20:46:18
อ้างถึงจาก: ganginwpop ใน 18 เมษายน 2011, 20:43:34
$num=mysql_num_rows($result) or die(mysql_error());
มันจะได้รายละเอียดเยอะขึ้นครับ
:wanwan017:
อ่าตามนั้นครับ หรือ
$num=mysql_num_rows($result);
echo mysql_error();
ต่อไปแล้วลองดูว่าผิดตรงไหน
อ้างถึงจาก: ganginwpop ใน 18 เมษายน 2011, 20:43:34
$num=mysql_num_rows($result) or die(mysql_error());
มันจะได้รายละเอียดเยอะขึ้นครับ
:wanwan017:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
Access denied for user ''@'localhost' to database 'db_submit'
ก็ถูกแล้วนี้ครับ Database db_submit งง
ลองดู $result=mysql_db_query($dbname,$sql);
ว่ามันได้ค่าอะไรออกมา
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 20:52:03
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
Access denied for user ''@'localhost' to database 'db_submit'
ก็ถูกแล้วนี้ครับ Database db_submit งง
ลืมเปลี่ยน รหัส หรือ user-pass อะไรผิดหรือป่าวครับ หรือ ชื่อ db ผิดหรือป่าว
งงอะคับ ต้องเรียกหลายdatabaseเลยหรอ ปกติทำกันเค้าใช้databaseเดียว เปลี่ยนแค่ database table นะครับ
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);
ดูย้อนขึ้นไป จากตัวแปรที่ตั้งไว้ครับ ว่าข้อมูลมันผิดตรงไหน
เมื่อมันผิดจากไลน์ 21 ก็แสงดว่า $num , $result มันเรียกไม่ถูก
ก็ต้องไปดูว่าตัวแปรของ 2 ตัวนี้คืออะไร แล้ววิเคราะห์ไปเรื่อยๆครับ
รอเรปล่างตอบ :wanwan004: :wanwan004:
ผมว่า sql ไปตั้งค่าอะไร รึป่าว แบบวาตั้งค่าห้าม include ข้ามไฟล์ หรือข้อมูล ดาต้าเบส ไม่มี
อ้างถึงจาก: bouy22 ใน 18 เมษายน 2011, 20:53:48
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 20:52:03
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
Access denied for user ''@'localhost' to database 'db_submit'
ก็ถูกแล้วนี้ครับ Database db_submit งง
ลืมเปลี่ยน รหัส หรือ user-pass อะไรผิดหรือป่าวครับ หรือ ชื่อ db ผิดหรือป่าว
ได้แล้วครับ ขอบคุณครับ
มันผิดที่ connect.php ผมลืมใส่ User='' pw='' ขอบคุณทุกคนครับ + 1
เกี่ยวกับ user/pass ครับ
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 20:35:27
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\myweb\index.php on line 21
นี้โค้ดที่เขียน ผมว่า ผมเขียนถูกนะ :wanwan006:
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); <<<< มันผิดบรรทัดนี้ ผมยกมาแค่นี้ครับมันผิด บรรทัดที่ 21
ก็เขียนถูกแล้ว ช่วยดูหน่อยครับ เผื่อผมจะหลง ขอบคุณครับ :wanwan017:
ปัญหานี้ผมเคยเจอครับลองเปลี่ยนเป็น
$sql="select id from tb_url where category='$i' ";
$result=mysql_query($sql);
$num=mysql_num_rows($result);
ดูครับ
ปัญหารอบ 2 มาอีกแล้วครับ :wanwan031:
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
มันบอกผิดบรรทัดนี้
header("Location $goto");
งมอีกแล้ว เขียนถูกแล้วนิ
header ห้ามเขียนหลังจากมีการแสดงผล คือห้ามไว้บรรทัดล่าง echo หรือ คุณเว้นบรรทัด ก็มีผลครับ
ลองก๊อบโค้ดก่อนบรรทัดนี้มาดูก็ดีครับ
เอา
<?
ob_start();
ไปไว้บนสุด
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 22:49:59
ปัญหารอบ 2 มาอีกแล้วครับ :wanwan031:
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
มันบอกผิดบรรทัดนี้
header("Location $goto");
งมอีกแล้ว เขียนถูกแล้วนิ
ที่ใช้อยู่ header("Location
ที่ถูก header("Location:
":" หาย
ยัง Error ครับ
นี้โค้ดเต็มๆ
<?
$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");
?>
อ๋อ ระวังปัญหาเรื่อง BOM ด้วยนะครับ แก้แบบง่ายๆก็ไปที่ htaccess
php_value output_buffering 1
อ้างถึงจาก: NightClub ใน 18 เมษายน 2011, 22:57:20
อ๋อ ระวังปัญหาเรื่อง BOM ด้วยนะครับ แก้แบบง่ายๆก็ไปที่ htaccess
php_value output_buffering 1
htaccess ไอไฟล์นี้ผมยังไม่ได้เขียนครับ ต้องเขียนก่อนหรอครับ
header("Location:$goto");
เว้นหน่อย
header("Location: $goto");
ถ้ามีปัญหา ลบออกหมดเหลือแค่
$goto=$_GET[goto];
header("Location: $goto");
่แล้วดูว่า error อีกมั้ย ถ้ามี กอปมาด้วยครับ จะได้ดูว่าติดอะไร
เชื่อมต่อ db หรือยัง เพราะบางทีใน connect.php อาจจะมีแต่ตัวแปรเฉยๆ
อ้างถึง
$link = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$link);
อ้างถึงจาก: lucationjj ใน 18 เมษายน 2011, 22:58:25
อ้างถึงจาก: NightClub ใน 18 เมษายน 2011, 22:57:20
อ๋อ ระวังปัญหาเรื่อง BOM ด้วยนะครับ แก้แบบง่ายๆก็ไปที่ htaccess
php_value output_buffering 1
htaccess ไอไฟล์นี้ผมยังไม่ได้เขียนครับ ต้องเขียนก่อนหรอครับ
มันเป็นผลมาจาก ไฟล์เราเข้ารหัสไรไว้ข้างหน้า คนทำเวปบ่อย จะรู้ว่า อยู่ดีๆ ทำไม ส่ง header ไม่ไป ทั้งที่ไม่ได้มีการ แสดงผล (echo) อะไรออกมาก่อนหน้านี้ ซึ่ง แก้ได้คือ ลบไฟล์ทิ้ง แล้ว เขียนใหม่ แต่อยู่ดีๆมันก็จะเป้นอีก
ถ้าเซตในดรีมไว้ว่า no bom มันก็ช่วยได้ แต่ถ้ากลัวไม่ชัวร์ ก็ทำ htaccess ตั้งค่าแบบนี้ชัวร์สุด
(แต่บางโฮสท์จะฟ้องเออเร่อ ถ้ามีเออเร่อก็เอาออก เพราะระบบมันเซตไว้อยู่แล้ว)
<?
$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
ผมเขียนบนเครื่องคอมครับ ยังไม่ได้อัพขึ้นโฮส
output started at C:\AppServ\www\myweb\link.php:1
มันเิกิดการส่ง output ไปก่อน header อะไรเนี้ยแล่ะ
เอา
ob_start(); ไปใส่ไว้หัวไฟล์ด้านบนสุดก็หายครับ
ให้เป็นเก็บบัฟเฟอร์ไว้ก่อน
<?
ob_start();
$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"); <<<< บรรทัดนี้มันบอกผิด ก็เขียนถูกแล้ว
?>
อ้างถึงจาก: 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
ลองรันตามสคริปข้างล่างนี้ อย่างอื่นลบทิ้งไปให้หมด
<?
$goto=$_GET[goto];
header("Location: $goto");
?>
ปล. ลงกดbackspace ตรงก่อนหน้า <? ด้วยครับอาจจะมีอะไรติดอยู่
ถ้าทำตามนี้คงสรุปอาการได้
แต่บอกไว้ก่อนว่า ถ้าติด BOM ใช้ ob_start(); แก้ไม่หายนะ
ถ้า
<?
ob_start();
ไม่หาย
ก็จัดการเซฟไฟล์เป็น ANSI ก่อน แล้วก็เซฟ เป็น UTF-8 อีกรอบ
มันมีปัญหามาจาก query ก่อนหน้านี้ที่มี error ครับ
ลอง echo ผลลัพท์ของ qeury มาดูก็ได้
อ้างถึงจาก: NightClub ใน 18 เมษายน 2011, 23:09:14
อ้างถึงจาก: 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
ลองรันตามสคริปข้างล่างนี้ อย่างอื่นลบทิ้งไปให้หมด
<?
$goto=$_GET[goto];
header("Location: $goto");
?>
ปล. ลงกดbackspace ตรงก่อนหน้า <? ด้วยครับอาจจะมีอะไรติดอยู่
ถ้าทำตามนี้คงสรุปอาการได้
แต่บอกไว้ก่อนว่า ถ้าติด BOM ใช้ ob_start(); แก้ไม่หายนะ
รันตามสคริปนี้แล้วครับ
<?
$goto=$_GET[goto];
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 4
^
ใช่ ก็ว่างั้นละ
:)
อ้างถึงจาก: ossytong ใน 18 เมษายน 2011, 23:10:36
ถ้า
<?
ob_start();
ไม่หาย
ก็จัดการเซฟไฟล์เป็น ANSI ก่อน แล้วก็เซฟ เป็น UTF-8 อีกรอบ
ผมไป save ไฟล์แบบ UTF-8 เลยลองเปลี่ยนเป็น Ansi ดูมันหายเลยครับ
ขอบคุณทุกคนมากครับ :wanwan017: :wanwan017: :wanwan017:
ทำ htaccess ตั้งค่าแบบนี้ชัวร์สุดนี้เขียนยังไงครับ อยากทราบเหมือนกัน
เซพไฟล์ชื่อ .htaccess
เขียนข้อมูลว่า
php_value output_buffering 1
แค่นี้ครับ
แต่อยู่ดีๆมันอาจจะเป็นขึ้นมาเฉยๆถ้าไม่ทำแบบนี้ แต่ก่อนผมแก้ไม่เป็นลบไป ลบมาหลายรอบ
อ้างถึงจาก: NightClub ใน 18 เมษายน 2011, 23:42:36
เซพไฟล์ชื่อ .htaccess
เขียนข้อมูลว่า
php_value output_buffering 1
แค่นี้ครับ
แต่อยู่ดีๆมันอาจจะเป็นขึ้นมาเฉยๆถ้าไม่ทำแบบนี้ แต่ก่อนผมแก้ไม่เป็นลบไป ลบมาหลายรอบ
ขอบคุณครับ :wanwan017:
<?
$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
ยังหาเหตุผลไม่ได้มันผิดตรงไหน :P
ถ้าโค๊ดนี้ไม่ผิด ก็ลองเชคที่ไฟลื list.php อ่ะค่ะ
mysql_db_query
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
ลองเปลี่ยนเป็ฯ mysql_query ครับแล้วตอน connect ก็ select db ด้วย
พอดีพึ่งอ่านหน้า 2 นะครับเลยเห็นว่าทำได้แล้ว 55+ แต่อย่างที่โพสไปตอนแรกครับ function นี้จะใช้งานไม่ได้แล้วใน version 5.3
ส่วน error อีกอันที่เกิด เกิดจากมีการ print ข้อความออกมาก่อนครับ ให้ดูว่าก่อนเปิด php มีวรรคหรือป่าวครับ หากมีลบออกครับ
แล้ว ก่อนใช้ function header มีการ echo ค่าอะไรออกมาก่อนหรือป่าวครับ
หากไม่มีให้ลองไล่ไปยังไฟล์ที่เรา include มาอีกทีครับ include "connect.php"; ว่าก่อนเปิด php และ หลังปิด php มีการ enter หรือป่าวครับ
หากมีก็ลบออกครับ
อ้างถึงจาก: 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'>";
?>
อ้างถึงจาก: 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:
ตารางฐานข้อมูล 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')
};
ผมงงว่าทำไรกันครับ
แล้วก็จับจุดปัญหาไม่ถูกเลย
เอาเป็นว่า ลองต่อท้ายคำสั่งนี้น่ะ
มันผิดตรงไหน เด๋วบอกเองครับ
mysql_db_query($dbname,$sql) or die (mysql_error());
อ้างถึงจาก: 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:
จะเอา id ของ catgory ใช่ปะครับ
แต่ไอนี่มันนับจำนวนมานี่ครับ ไม่ใช่ค่าที่เรียกมาดู ซึ่งมันก็มีค่า แค่ 0 กับ 1
$sql="select id from tb_url where category='$i'";
$result=mysql_db_query($dbname,$sql);
$num=mysql_num_rows($result);
หรือผมเข้าใจอะไรผิดหรือเปล่าครับ
อ้างถึงจาก: 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 อะไรพวกนั้นไม่ใช่เหรอครับ
ใช่ครับ
เดียวขอลองที่ท่านให้มาดู
ไม่ได้ครับ :wanwan031:
ลองอะไรหว่า
ลองเปลี่ยนฟังชั่นเป็น mysq_result ซิครับ
อ้างถึง$sql="select id from tb_url where category='$i'";
$result=mysql_db_query($dbname,$sql);
$num=mysql_result($result);
ทำอะไรผิดตรงไหนหรือเปล่าคับ หน้าที่มีปัญหา น่าจะเป็นหน้า 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 เลย สคริปและฐานข้อมูลก็ยังอยู่ในเครื่อง เลยเอามารันดู มันก็ปกติดี
หรือไม่ก็หน้า add ข้อมูลแหละที่ผิด
อ้างถึงจาก: 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 เลย สคริปและฐานข้อมูลก็ยังอยู่ในเครื่อง เลยเอามารันดู มันก็ปกติดี
ใช่ครับ ผมยกมาแค่ บางส่วน
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:
คิดว่าเกิดจากหน้า 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 ครับ
ขอโทษครับ ช่วยสรุปให้ผมทุกทีได้มั้ย
code ใส่มาทุไฟล์ที่เกี่ยวของ เฉพาะส่วนที่เกี่ยวข้อง
ปัญหา มันคืออะไร กำลังจะทำอะไร ที่หน้าไหน
ถ้าไม่ได้ก็ไม่เป็นไรครับ จะคอยดูช่วยเป้นกำลังใจครับ
ผมแนะนำว่าตอน develope ตั้งค่าใน php.ini ให้แสดง warning ทั้งหมด อย่าได้กั๊กครับ จะเป็นผลดีนักแล
อย่างแรกช่วยไปบอกตรง post แรกหน่อยครับ ว่า ปัญหาอันใหนแก้ได้แล้ว อันใหนยังไม่ได้ คนเข้ามาแล้วงงครับ
ผมว่ามันผิดที่ส่วนนี้น่ะครับ ลอง view source ดูหรือยังครับว่ามันเป็นตัวเลขที่ต่างกันหรือเปล่า
echo "<option value='$i'>$cate[$i]</option>";
มันน่าจะมีการใช้ผิดพลาดของ พวกเครื่องหมาย "" หรือ '' ครับ
สมมุติว่า
$i=2;
$cate[1]="one";
$cate[2]="two";
echo $cate[$1];
แล้วคุณ จะเจอ error น่ะครับ มันจะไม่เห็น เป็น $cate[2] น่ะครับ
ลองปรับเปลี่ยนดูครับ
http://condoclicks.co.cc/webdir/index.php
อัปโหลดขึ้นเว็บให้ทดสอบเลย โค้ดเกือบเดิมๆ แก้ connect.php ให้มันรับภาษาไทย(โค้ดเดิมอ่านไทยแล้วกะยึกกะยือ)
หน้าอื่นๆก็ใล่เปลี่ยนเป็น utf-8 จขกท ถ้าอยากได้เด๋วซิปขึ้นโฮสต์ให้คับ(ถ้าต้องการ)
อ้างถึงยังเหมือนเดิมครับ แก้ไม่หาย พอกด Submit เลือกหมวดหมู่อื่นมันก็ไปโผล่ หมวดหมู่การศึกษาอย่างเดียว
ขอดูโค๊ด หน้า add_url2.php หน่อยค่ะ อยากรู้ว่า จับใส่ db ไปยังไง
header( 'Location: http://yourdomain.com/' . $goto );
อ้างถึงจาก: bonaliza ใน 19 เมษายน 2011, 14:10:10
อ้างถึงยังเหมือนเดิมครับ แก้ไม่หาย พอกด Submit เลือกหมวดหมู่อื่นมันก็ไปโผล่ หมวดหมู่การศึกษาอย่างเดียว
ขอดูโค๊ด หน้า add_url2.php หน่อยค่ะ อยากรู้ว่า จับใส่ db ไปยังไง
Add_url2.php
<?
$name=$_POST[name];
$url=$_POST[url];
$category=$_POST[category];
$title=$_POST[title];
$detail=$_POST[detail];
if ($name=="" or $url=="" or $title=="" or $detail=="") {
echo "<h3>ERROR:กรุณากรอกรายละเอียดของการเพิ่มเว็บไซต์ให้ครบ</h3>";
exit();
}
$url="http://".$url;
$count_url=0;
include "connect.php";
$sql="insert into tb_url values('','$name','$url','$category','$title','$detail','$count_url')";
$result=mysql_db_query($dbname,$sql);
if($result){
echo "<h3>เพิ่มเว็บไซต์ (url) เรียบร้อย</h3>";
echo "[<a href='index.php'>กลับสู่หน้าแรก</a>]";
}else{
echo "Error: ไม่สามรถเพิ่มเว็บไซต์ได้";
}
mysql_close();
?>
:wanwan031: :wanwan031:
เปลี่ยนอันนี้
อ้างถึง<select name="category.php">
เป็นแบบนี้
อ้างถึง<select name="category">
ดีกว่าไหม
เพิ่มเติม
แก้ที่ add_url.php นะคะ
อ้างถึงจาก: bonaliza ใน 19 เมษายน 2011, 17:11:47
เปลี่ยนอันนี้
อ้างถึง<select name="category.php">
เป็นแบบนี้
อ้างถึง<select name="category">
ดีกว่าไหม
เพิ่มเติม
แก้ที่ add_url.php นะคะ
เส้นผมบังภูเขาแท้ๆ เลย
ขอบคุณครับ และเพื่อนๆทุกคนที่สละเวลามาช่วยแนะนำ :wanwan017: เหนื่อย!!!! :P
:wanwan019:
เขียนโปรแกรม ถ้าเขียนคนเดียวไม่มีคนให้ปรึกษาหรือถามตอบ คงนั่งมึนแบบนี้ งานไม่เดิน :P
ขอบคุณอีกครั้งครับทุกคน :wanwan017: :wanwan017: :wanwan017:
เป็นผม จะหยุดไว้แค่นั้น
แล้วไปหาไรทำอย่างอื่น ซักพัก แล้วมาเริ่มต้นไล่ใหม่
บางทีมันจมอยู่กับปัญหาเกินไป
ผมเรียก รีเซ็ทสมอง
ผมเคยจมอยู๋กับไม่ถึงสิบบรรทัด เป็นเดือน
ไปดูหนัง กลับบ้านมาสองวัน กลับมา ทำงานไม่ถึงชั่วโมง ออกเลย