PDA

View Full Version : سوال: مشکل در صفحه ادامه مطلب



Louai_M
سه شنبه 24 دی 1392, 15:54 عصر
با سلام

دوستان من دو تا صفحه دارم یکی مطالب اصلی از جدول فراخوانی میشه داخلش که ادامه مطالب را در صفحه دوم نشان می دهد
کد صفحه اول برای انتقال به صفحه نمایش ادامه مطلب :


echo '<a href="pr?id='. $row['id'] .'">more </a>';

و کد صفحه میزبان


if(isset($_GET['id']))
{
$id = $_GET['id'];
$table = new table(); // از داخل کلاس
$result=$table->selectrow($id);
$row=mysql_fetch_assoc($result)
echo $row['fulltext'];
}



اگر مقدار $id را بجای $_GET['id'] دستی یک عددی وارد کنم نشان میده مشکلی نداره ولی اگر از $_GET بخوام هیچ چیزی را نمایش نمیده

Louai_M
سه شنبه 24 دی 1392, 16:03 عصر
ضمنا در آدرس بارهم id را میاره و می نویسه pr?id=360

danial.saeedi
سه شنبه 24 دی 1392, 16:27 عصر
یک سوال داخل if اجرا میشه؟

Louai_M
سه شنبه 24 دی 1392, 17:57 عصر
چطور ؟ منظورت کجا

کد کلاس بانک


public function SelectRowID($id)
{
$this->connect();
$result=mysql_query("SELECT * FROM `tblnews` WHERE (`id`='{$id}') ORDER BY `id` LIMIT 1")or die(mysql_error());
return $result;
}


کد کلاس view


public function fullcontent($id)
{
$news=new news();
$result=$news->SelectRowID($id);
$row = mysql_fetch_assoc($result) or die(mysql_error());
echo '<div class="v-hed">'. "\n";
echo '<table>' . '<tr>' . "\n";
echo '<td>کد خبر: '. $row['id'] .'</td>'. "\n" ;
echo '<td>گروه : '. $row['typen'].'</td>'. "\n";
echo '<td>تاریخ انتشار: '.$row['date'].'</td>'. "\n";
echo '</tr>' . '</table>'.'</div>' . "\n";
echo '<div class="v-title">'. "\n";
echo '<table>' . '<tr>' . "\n";
echo '<td class="td-title">' . "\n";
echo $row['stitr']. '<br /><br />'. "\n";
echo '<a href="http://shadeganrasad.ir">'.$row['titr'].'</a></td>'. "\n";
echo '<td class="td-img"><img src="pic-news/'.$row['pic'].'" width="250px" height="150px" alt="." border="1px #909090 solid" />' . "\n";
echo '</td></tr></table></div>'. "\n";
echo '<div class="v-content"><span>'. $row['content'].'</span></div>'. "\n";
echo '<div class="v-fullcontent"><span>'. $row['fullcontent'].'</span><p>انتهای پیام/</p></div>'. "\n";
echo '<div class="v-about"><p>منبع: <span>'.$row['about'].'</span></p>'. "\n";
echo '<p>برچسب ها: <span>' .$row['keytage'].'</span></p></div>';
}


کد صفحه نمایش تمام مطلب


<?php
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
include_once("app/view/news_result.php");
$newsresult=new newsresult();
$result=$newsresult->fullcontent($id);
}
?>


کد لینک ادامه مطلب


<a href="<?php echo 'pr?id='.$row_news['id']; ?>"><?php echo $row_news['titr']; ?> </a>

Louai_M
سه شنبه 24 دی 1392, 18:32 عصر
دوستان کسی نیست جواب بده

مهرداد سیف زاده
سه شنبه 24 دی 1392, 19:01 عصر
شما چه نوع عددی رو ارسال میکنید؟ امکان داره در لحظه فرستادن از طریق متد GET فضای خالی یا حتی ٪ هم فرستاده بشه.
شما چند راه رو استفاده کنید شاید برطرف شد:
۱. کدهای شما نسبت به عدد و رشته حساس شده(هر چند در php این خطاها رخ نمیده) برای حل مشکل از تابع intval (http://ir1.php.net/intval) برای تبدیل رشته دریافت شده به عدد خالص استفاده کنید
۲. در هنگام ارسال مقادیر امکان داره فضای خالی و یا % هم ارسال شده باشه که برای این کار از تابع urldecode (http://ir1.php.net/manual/en/function.urldecode.php) استفاده کنید. و برای حذف فضای خالی از تابع trim (http://ir1.php.net/manual/en/function.trim.php) استفاده کنید.

در کل وقتی دستی عدد وارد میکنید کار میکنه ولی با ارسال مقادیر از طریق get مشکل پیش میاد، برای حلش باید مقادیر ارسال شده رو خوب بررسی کنی.

Louai_M
سه شنبه 24 دی 1392, 19:42 عصر
مشکلم حل نشد قبلا هم گفتم تو آدرس بار شماره آی دی میاد pr?id=360 فکر کنم تا اونجا مشکلی نداره


if(isset($_GET['id']))
echo $_GET['id'];

وقتی ازش بخوام فقط مقدار بده جواب را 0 بر می گردونه
راه دیگه ای نیست

// راستی من از htaccess استفاده می کنم و کد صفحه اصلیم اینه ربطی که بهم ندارن چون تمام دستوراتم در اصل از صفحه اصلی خونده میشن



if(isset($_GET['url']) AND !empty($_GET['url']))
{
$url = $_GET['url'];
$url = rtrim($url , '/');
$url = explode('/news/',$_GET['url']);
$file = 'pages/'. $url[0] .'.php';
if(file_exists($file))
{
require $file;
}
else
{
require_once("404.php");
}
}
else
{
require_once("pages/index.php");
}

Louai_M
سه شنبه 24 دی 1392, 20:28 عصر
در قسمت هدر نوشتمش


if(isset($_GET['id']))
{
echo '<title>'.intval($_GET['id']).'</title>';
}
?>


جواب این دراومد


htt://localhost/project/pr?id=630

Louai_M
سه شنبه 24 دی 1392, 20:48 عصر
دوستان تو اینترنت جسجو کردم جواب پیدا نکردم شما همه اساتیدید می دونم وقت ندارید ولی فکر نکم برای شما این مشکلی باشه



if(!isset($_GET['id']))
{
echo 'Not Found';
}
else
{
echo 'ID: 1';
}



کد بالا را هم که تو صفحه مقصد می زنم جواب Not Found ظاهر میشه یعنی متد GET ای دی را نخواند در حالی که آی دی در آدرس بار خونده شده

danial.saeedi
سه شنبه 24 دی 1392, 21:59 عصر
سلام دوست عزیز من تا حالا چنین مشکلی بر نخوردم مقدار رو 0 بر نمی گردونه.

Louai_M
سه شنبه 24 دی 1392, 22:17 عصر
سلام دوست عزیز من تا حالا چنین مشکلی بر نخوردم مقدار رو 0 بر نمی گردونه.

یه چیزی فهمیدم
من تو فایل htaccess اینو دارم


Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1

خوب و وقتی تو همون صفحه مقد به جای GET['id'] از $_GET['url'] جواب میده مشکلی نداره نام صفحه رو نشون میده احتمالاً اشکال از فایل htaccess و متد جت یک بار بخاطر اون فراخوانی شده

foreach
سه شنبه 24 دی 1392, 22:23 عصر
یه چیزی فهمیدم
من تو فایل htaccess اینو دارم


Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1

خوب و وقتی تو همون صفحه مقد به جای GET['id'] از $_GET['url'] جواب میده مشکلی نداره نام صفحه رو نشون میده احتمالاً اشکال از فایل htaccess و متد جت یک بار بخاطر اون فراخوانی شده

بجای example.com?id=1 از example.com&id=1 استفاده کنید , شاید درست شه تست نکردم

Louai_M
چهارشنبه 25 دی 1392, 13:01 عصر
دوستان کسی نیست کمک کنه نیاز فوری دارم

\/
\/
\/
||

* یک سؤال دیگه دارم من جدول مطالبم چند دسته بندی شده خوب حالا مثلا ما سه دسته داریم (شبکه ، نرم افزار ، سخت افزار ) نمایش کامل یا تکی را میدونم ولی میخوام اطلاعاتی که فیلد دسته بندی شودن نرم افزار و سخت افزار هست رو برام نشون بده یعنی دوتا دسته را باهم نشون بده

Louai_M
چهارشنبه 25 دی 1392, 17:26 عصر
نیاز فوری دارم یعنی از اساتید کسی نیست کمک کنه . مشکل از کجاست از htaccess یا از دستورات (در مورد سؤال قبلی ) اطلاعات هرچی بخواهید هم در اختیارتون گذاشتم

Louai_M
چهارشنبه 25 دی 1392, 21:04 عصر
اساتید کسی نیست

danial.saeedi
چهارشنبه 25 دی 1392, 22:00 عصر
دوست عزیز جوابتون رو توی پیام دادم(پیامی که فرستادید.)اگه هم حل نشد بگید.

Louai_M
پنج شنبه 26 دی 1392, 09:23 صبح
دوستان مشکل حل شد باتشکر از همگی شما



RewriteRule ^(.+)$ index.php?url=$1 [NC,QSA,L]

mojgan.dashti71
پنج شنبه 26 دی 1392, 09:24 صبح
دوست عزیز از دستور print_r استفاده کن ببین اصلا توی متغیر ها چی هست

print_r($_GET);
print_r($_POST);

MMSHFE
پنج شنبه 26 دی 1392, 13:53 عصر
خوب خدا رو شکر که مشکلتون با تغییری که گفتم توی htaccess. بگذارین حل شد. اما جهت افزایش اطلاعات عرض میکنم که توی کدی که گفتم بگذارین، NC یعنی Not Case-sensitive (به بزرگی و کوچکی حروف حساس نباشه) و QSA یعنی Query String Also (اگه چیزی با روش Get برای صفحه موردنظر ارسال شده باشه، اونها رو هم برای index.php بفرسته) و L هم یعنی Last (بعضی وقتها ممکنه بیش از یک Rule با آدرس واردشده توسط کاربر مطابقت کنه که در اینجا اگه توی یک Rule از L استفاده کرده باشین، Ruleهای بعدی اجرا نمیشه).