PDA

View Full Version : مشکل با متد GET در php



rezajooni
پنج شنبه 25 اردیبهشت 1393, 00:12 صبح
من تو صفحه بندی مطالب از کد زیر استفاده میکنم :


<?php
$p="select * from news order by date desc limit ".$_GET['at'].",2";
$r=mysql_query($p);
while ($rows= mysql_fetch_assoc($r)){

echo '<p><a href="page.php?news_id='.$rows['newsid'].'">'.$rows['title'].'</a></p><br />
<p><img src ="adminpanel/news/pic.php?id='.$rows['newsid'].'" width=50 height=50/></p>
<br />';

}
$p="select * from news";
$r=mysql_query($p);
$n= mysql_num_rows($r);
$k=2;
for ($i = 0; $i < ceil($n / $k); $i++) {
echo '<a href=?at=' . $i * $k . '>' . ($i + 1) . '</a> | ';
}
?>
و صفحات رو به خوبی میاره ولی وقتی به صفحه اصلی بر میگردم ارور میده:


Notice: Undefined index: at in C:\wamp\www\sabalanhospital\index.php on line 98


Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\sabalanhospital\index.php on line 100

لطفا راهنمایی کنید

qartalonline
پنج شنبه 25 اردیبهشت 1393, 00:25 صبح
ابتدا توصیه ام اینه که ورودی ها رو بصورت مستقیم استفاده نکنید ابتدا اعتبارسنجی و فیلتر کنید.
مشکل اینه که وقتی به صفحه اصلی میرید متغییر $_GET['at'] رو پیدا نمیکنه شما باید قبلا چک کنید که متغییر $_GET['at'] هست یا نه اگه نبود یه مقدار پیشفرض بدید. بصورت زیر:

if (!isset($_GET['at']))
$_GET['at'] = 1;


البته بازم میگم قبلش اعتبار سنجی کنید کدی که من نوشتم رو میشه بهتر هم نوشت ولی من ساده ترین حالتش رو نوشتم.

کامروا
پنج شنبه 25 اردیبهشت 1393, 00:25 صبح
سلام

این هایی که شما گذاشتین Error نیستن. اولی که Notice دومی هم Warning!

اولی واسه این رخ میده که از تابع isset نکردی!
دومی هم واسه اینکه اگر نتیجه SQL Query == False بود متن خطا رو بهت نشون نمیده!
اگر اینطوری بنویسی این هشدار رو دیگه بهت نمیده!


$r=mysql_query($p);
if ($r === FALSE) {
echo mysql_error();
} else {
...
}

اگر میخوایی Notice رو غیرفعال کنی که دیگه هیچ وقت Notice رو بهت نشون نده : (توصیه نمیکنم)

error_reporting(E_ALL ^ E_NOTICE);
اگر میخوایی Warning رو غیرفعال کنی که دیگه هیچ وقت Warning رو بهت نشون نده : (توصیه نمیکنم)

error_reporting(E_ALL ^ E_WARNING);

rezajooni
پنج شنبه 25 اردیبهشت 1393, 00:30 صبح
ممنون که پاسخ دادید با isset مشکل حل شد