<?php


$host = "127.0.0.1";


$user = "root"; 


$passwd = "momay"; 


$dbname = "projact";


mysql_connect($host,$user,$passwd) or die("ติดต่อ Host ไม่ได้");


mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");


 


mysql_query("SET NAMES TIS620");


 


$sql = " select * ,date_formet(Qexpire, '%d-%m-%Y') as Qexpire from toppic where top_id=$top_id";


 


$sql = "select * from topic where top_id=$top_id";


$dbquery = mysql_db_query($dbname, $sql);


$result = mysql_fetch_array($dbquery);                                // ตำแหน่งเนี่ยที่ผิด


 


$top_id = $result[top_id];


$Qsender = $result[Qsender];


$Qtopic = $result[Qtopic];


$Qdetail = $result[Qdetail];


$Qemail = $result[Qemail];


$Qtype = $result[Qtype];


$Qexpire = $result[Qexpire];


$fileupload = $result[fileupload];


$view = $result[view];

?>









Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\phpmydream\webb\answer.php on line 26







แก้ยังไงดีค่ะ  เป็นหน้าที่ไว้แสดงข้อมุลในรายละเอียดคำถาม ในหน้าที่ไว้ใช้ตอบคำถามเว็บบอร์ดอ่าค่ะ

กรกฎ วิริยะ 05 Feb 2012 17:32
อาจเป็นเพราะไม่มีผลลัพท์ครับ ให้ตรวจสอบผลลัพท์ก่อนว่ามีหรือไม่ แล้วค่อย fetch ออกมาครับ

<?php

      $sql = "SELECT * FROM `table` WHERE ........";

      $query = mysql_query($sql, $connection);

      if (mysql_num_rows($query) == 0) {

          // ไม่มีผลลัพท์

      } else {

          // ผลลัพท์

          $result = mysql_fetch_array($query, MYSQL_ASSOC);

          ...................

      }

?>
Unknown 06 Feb 2012 21:12
แต่อาจารย์ค่ะ ข้อมูลมันมีอยู่แล้วอ่ะค่ะ
.::{เปรียว}::. 07 Feb 2012 02:46
ขอเสริมนิดนึงฮะ

ที่คุณอาว่าไม่มีผลลัพธ์ บางทีอาจไม่ได้หมายความว่าที่ฐานข้อมูลไม่มีข้อมูลอยู่

แต่อาจจะมีสาเหตุอื่นๆ ที่ทำให้ไม่มีผลลัพธ์ส่งมาให้ mysql_fetch_array() ทำงานต่อ



ยกตัวอย่างเช่น $dbname = "projact";

บางทีชื่อ DB มันอาจสะกดว่า project ก็ได้
กรกฎ วิริยะ 07 Feb 2012 08:00
Quotations by Comment #2แต่อาจารย์ค่ะ ข้อมูลมันมีอยู่แล้วอ่ะค่ะ


555++

โค้ดที่เขียนให้ดูเป็นตัวอย่างการ query ที่ถูกต้อง ส่วนการ query แล้วจะมีผลลัพท์หรือไม่มันอีกเรื่อง



ผมเคยเขียนบนเว็บนี้หลายครั้งแล้วว่า ถ้าพบปัญหาเกี่ยวงกับ query ให้ไปทดสอบบน phpmyadmin ด้วยการ echo เอา query ออกมา แล้วนำไปทดสอบบน phpmyadmin ถ้ามีผลลัพท์ตามต้องการ แสดงว่า ข้อผิดพลาด อยู่บน php ถ้าผลลัพท์ไม่ออกมาหรือไม่ถูกต้อง ก้ให้แก้ไขและทดสอบ query บน phpmyadmin จนกว่าจะได้ผลลัพท์ตามที่ต้องการ





Unknown 07 Feb 2012 16:59
 <?

$host = "127.0.0.1";


$user = "root"; 


$passwd = "momay"; 


$dbname = "projact";


mysql_connect($host,$user,$passwd) or die("ติดต่อ Host ไม่ได้");


mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");


 


mysql_query("SET NAMES TIS620");


 


$sql = "select *,DATE_FORMAT(Qexpire, '%d-%m-%Y') as Qexpire from topic order by top_id";


 


$sql = "select * from topic order by top_id desc";


$dbquery = mysql_db_query($dbname, $sql);


 


// หาจำนวนเรกคอร์ดข้อมูลในตาราง


$num_rows = mysql_num_rows($dbquery);


// เริ่มวนรอบแสดงข้อมูล


$i=0;


while ($i < $num_rows)


{


$result = mysql_fetch_array($dbquery);


$top_id = $result[top_id];


$Qsender = $result[Qsender]; //ชื่อผู้ตั้งกระทู


$Qtopic = $result[Qtopic]; //คำถาม


$Qdetail = $result[Qdetail];//รายละเอียด


$Qemail = $result[Qemail];


$Qtype = $result[Qtype];


$Qexpire = $result[Qexpire]; // วัน


$fileupload = $result[fileupload];


$view = $result[view];


$i++;


$strSql = "select count(*) as numreply from  reply where reply_id = '$top_id' ";


$strResult = mysql_query($strSql);


$data = mysql_fetch_array($strResult);


$numreply = $data['numreply'];


echo " <A HREF=\"answer.php?top_id=$top_id\" target=\"$top_id\">$Qtopic</A> <FONT COLOR=\"blue\">$Qexpire</FONT> $name<BR>";    


 


 


?>


<tr  bgcolor="BCEE68">


<td><a href="answer.php?top_id=$top_id" target="top_id"><?=$Qtopic;?></a></td>


<td align="center"><?=$Qsender;?></td>


<td align="center"><?=$Qexpire;?></td>


<td align="center"><?=$view;?></td>


<td align="center"><?=$numreply;?></td>


</tr>


<?php


}


?>


 </table>


 <?php


 mysql_close();


 ?>



ไฟล์ที่แสดงกระทู้ แล้วส่งลิ้งไปหาไฟล์ด้านบน

จะได้ภาพประมรมาณนี้

Unknown 07 Feb 2012 17:05
echo " <A HREF=\"answer.php?top_id=$top_id\" target=\"$top_id\">$Qtopic</A> <FONT COLOR=\"blue\">$Qexpire</FONT> $name<BR>"; 





ส่วน echo นี้ ทำให้เราลิ้งไปหน้าที่แสดงคำตอบของกระทู้ได้  แบบไม่มีอะไร eroro
Unknown 07 Feb 2012 17:18
Quotations by Comment #3ขอเสริมนิดนึงฮะ

ที่คุณอาว่าไม่มีผลลัพธ์ บางทีอาจไม่ได้หมายความว่าที่ฐานข้อมูลไม่มีข้อมูลอยู่

แต่อาจจะมีสาเหตุอื่นๆ ที่ทำให้ไม่มีผลลัพธ์ส่งมาให้ mysql_fetch_array() ทำงานต่อ



ยกตัวอย่างเช่น $dbname = "projact";

บางทีชื่อ DB มันอาจสะกดว่า project ก็ได้




ไม่หรอกค่ะ ถูกแล้วละ
กรกฎ วิริยะ 07 Feb 2012 17:43
ถ้าขึ้นแบบนี้แสดงว่าที่ผิด น่าจะอยู่ที่ query แล้วละครับ



ทำอย่างที่ผมบอก คือทดสอบ query บน phpmyadmin ใฟ้ใช้งานได้ก่อนเลยละครับ
Unknown 07 Feb 2012 19:27
วิธีการทดสอบอ่ะ อาจารย์ ไม่รู้จริงๆ
กรกฎ วิริยะ 07 Feb 2012 21:59
Quotations by Comment #9วิธีการทดสอบอ่ะ อาจารย์ ไม่รู้จริงๆ


เวรกรรม....



อย่างแรกเลย ให้ echo เอาคำสั่ง sql ที่ใช้งานบนเว็บออกมา



$sql = "select * from topic order by top_id desc";

echo $sql;

$dbquery = mysql_db_query($dbname, $sql);



อย่างที่สอง เอาคำสั่งที่ได้ไปรันบน phpMyAdmin ซึ่งถ้ามีข้อผิดพลาด มันจะบอกถึงความผิดพลาดได้ละเอียดว่า ให้เราแก้ไขและทกดสอบ query จนกระทั่งมันได้ผลลัพท์ถูกต้องตามที่ต้องการ แล้วค่อนำกลับมาใส่ยัง PHP ตามเดิม

Unknown 07 Feb 2012 22:17
ขอบคุณมากค่ะจารย์ 



ที่จริงก็ผิดอยู่ตรงนี้
Quotations by Comment #10
Quotations by Comment #9วิธีการทดสอบอ่ะ อาจารย์ ไม่รู้จริงๆ


เวรกรรม....



อย่างแรกเลย ให้ echo เอาคำสั่ง sql ที่ใช้งานบนเว็บออกมา



$sql = "select * from topic order by top_id desc";

echo $sql;

$dbquery = mysql_db_query($dbname, $sql);



อย่างที่สอง เอาคำสั่งที่ได้ไปรันบน phpMyAdmin ซึ่งถ้ามีข้อผิดพลาด มันจะบอกถึงความผิดพลาดได้ละเอียดว่า ให้เราแก้ไขและทกดสอบ query จนกระทั่งมันได้ผลลัพท์ถูกต้องตามที่ต้องการ แล้วค่อนำกลับมาใส่ยัง PHP ตามเดิม









ขอบคุณมากค่ะ อาจารย์ 



มันผิดอยุ่ตรง   $sql = "select * from topic where top_id=$top_id";  





เปลี่ยนเป็น  
$sql = "select * from topic order by top_id desc";
Unknown 08 Feb 2012 23:22
อาจารย์ค่ะ ถ้าใส่ $sql = "select * from topic order by top_id desc";



มันะแสดงแค่กระทู้แรกเท่านั้นอ่ะค่ะ



ไม่ว่าจะมีกี่กระทู้ในฐานข้อมูล แล้วลิ้งมันไปที่กระทู้เดียว ก็คือกระทู้แรกล่าสุด
.::{เปรียว}::. 09 Feb 2012 00:36
ในโค้ดเห็นสั่งให้แสดงผลออกมาเพียงครั้งเดียวฮะ

ลองโค้ดแบบนี้ดู




while(result = mysql_fetch_array($dbquery))


{



 


echo $result[top_id];


echo $result[Qsender];


echo $result[Qtopic];


echo $result[Qdetail];


echo $result[Qemail];


echo $result[Qtype];


echo $result[Qexpire];


echo $result[fileupload];


echo $result[view];



}