• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
{حل شد}عدم نمايش اخبار؟به نظرتون مشكل كد كجاست
#1
سلام
من اين كد هارو براي نمايش اخبار توسايت نوشتم اما مشكلي مه داره وقتي روي ادامه مطلب كليك مي كنم هيچي نشون نميده فقط ميره به پيج بعدي خواهش مي كنم كمكم كنيد ممنون ميشم
كد صفحه اصلي
کد پی‌اچ‌پی:
<?PHP

    mysql_connect
('localhost','root','') or die('Could not connect.');
    
mysql_select_db('my_db') or die('Database does not exist.');
    
mysql_query('SET NAMES utf8');
    if(isset(
$_GET['news_id']) && $_GET['news_id']!='' && is_numeric($_GET['news_id']))
    {
       
$news mysql_query("SELECT * FROM `news` WHERE `id`='".$_GET['news_id']."' LIMIT 1");  
        if(
mysql_num_rows($news)>0)
        {
            
$news_i=mysql_fetch_assoc($news);
        }
        echo 
'<DIV class="bg-red">'."\n";
        echo 
$news_i['tittle'];
        echo 
'</DIV>'."\n";
        echo 
$news_i['content'].'<BR/>'."\n";
    }
    else
    {
        
$news mysql_query('SELECT * FROM `news` ORDER BY `news_id` DESC');
        if(
mysql_num_rows($news)>0)
        {
            while (
$news_i mysql_fetch_assoc($news))
            {
                echo 
'<DIV class="bg-red">'."\n";
                echo 
$news_i['tittle'];
                echo 
'</DIV>'."\n";
                echo 
substr($news_i['content'],0,1000).'<BR/>'."\n";
                              echo 
"<li><a href='page2.php?news_id=".$news[`id`]."' >'".$news[`tittle`]."ادامه مطلب...</a></li>";
            }
        }
    }
?>
كد صفحه نمايش كل خبر
کد پی‌اچ‌پی:
<?php 
  mysql_connect
('localhost','root','') or die('Could not connect.');
    
mysql_select_db('my_db') or die('Database does not exist.');
    
mysql_query('SET NAMES  utf8');
if(isset(
$_GET['news_id']) && $_GET['news_id']!='' && is_numeric($_GET['news_id']))
    {
     
$news mysql_query("SELECT * FROM `news` WHERE `news_id`='".$_GET['news_id']."' LIMIT 1");  

        while(
$row=mysql_fetch_array($news)){
        echo 
'<DIV class="bg-red">'."\n";
        echo 
$row['tittle'];
        echo 
'</DIV>'."\n";
        echo 
$row['fullcontent'].'<BR/>'."\n";
  } 



  پاسخ
تشکر شده توسط :
#2
بسم الله الرحمن الرحیم
سلام
احتمالا مشکلت بخاطر این تکه کد هست:
کد پی‌اچ‌پی:
is_numeric($_GET['news_id']) 
چون اینجا چک می کنه که نوع مقدار عدد باشه / ولی مقداری که دریافت می کنی درسته که عدد است ولی بصورت string هست و واسه همین از این شرطت عبور نمی کنه

این کدو تست کنی متوجه می شه:
کد پی‌اچ‌پی:
var_dump($_GET['n']); 
(تو کوئری استیرینک هم یه مقدار عدد بده)

-----
واسه تغییر نوع مقدار می تونی از دستور زیر در ابتدای دستوری که مقدار رو می گیری استفاده کنی:
کد پی‌اچ‌پی:
(int) 
اینطوری مثلا:
کد پی‌اچ‌پی:
var_dump((int)$_GET['n']);
(int)
$_GET['n'
  پاسخ
تشکر شده توسط : amenedeljoo
#3
(۱۳۹۰ خرداد ۱۸, ۰۴:۱۰ ب.ظ)hosseintdk775 نوشته: بسم الله الرحمن الرحیم
سلام
احتمالا مشکلت بخاطر این تکه کد هست:
کد پی‌اچ‌پی:
is_numeric($_GET['news_id']) 
چون اینجا چک می کنه که نوع مقدار عدد باشه / ولی مقداری که دریافت می کنی درسته که عدد است ولی بصورت string هست و واسه همین از این شرطت عبور نمی کنه

این کدو تست کنی متوجه می شه:
کد پی‌اچ‌پی:
var_dump($_GET['n']); 
(تو کوئری استیرینک هم یه مقدار عدد بده)

-----
واسه تغییر نوع مقدار می تونی از دستور زیر در ابتدای دستوری که مقدار رو می گیری استفاده کنی:
کد پی‌اچ‌پی:
(int) 
اینطوری مثلا:
کد پی‌اچ‌پی:
var_dump((int)$_GET['n']);
(int)
$_GET['n'

ممنون بابت جواب ممكنه يكم بيشتر توضيح بدين نقش n همون news_id است؟من اينجوري تست كردم نشد
کد پی‌اچ‌پی:
if(isset($_GET['news_id']) && $_GET['news_id']!='' && var_dump((int)$_GET['news_id'])) 
  پاسخ
تشکر شده توسط :
#4
بله - فرقی نمی کنه n بزارید یا چیز دیگه /
var_dump رو تو شرطتون نزارید / اون کدو فقط گفتم اجرا کنید که خروجیش رو ببینید /

می تونید اینطوریش کنید:
کد پی‌اچ‌پی:
(int)$_GET['news_id'
بجای
کد پی‌اچ‌پی:
var_dump((int)$_GET['news_id']) 

و اینکه بجای این کد:
کد پی‌اچ‌پی:
!='' 
که واسه خالی بودن گذاشتید می تونید از تابع empty استفاده کنید

----
یه نکته اینکه نیازی نیست
کد پی‌اچ‌پی:
(int)$_GET['news_id'
رو تو شرطتون چکش کنید / بجاش قبل از وارد کردن مقدار در کوئری٬ اول از (int) استفاده کنید که هر چی باشه تبدیل به عدد بشه و سپس واسه یکم امنیت بیشتر حتما از تابع mysql_real_escape_string استفاده کنید (قبل از وارد کردن هر مقداری که از طرف کاربر هست از این تابع استفاده کنید)

مثلا کد فوق رو اینطوری کنید:
کد پی‌اچ‌پی:
if(isset($_GET['news_id']) && !empty($_GET['news_id']))
    {
    
$newsId = (int)$_GET['news_id'];
    
$newsId mysql_real_escape_string($newsId);
    
    
$news mysql_query("SELECT * FROM `news` WHERE `news_id`='".$newsId."' LIMIT 1");  

        while(
$row=mysql_fetch_array($news)){
        echo 
'<DIV class="bg-red">'."\n";
        echo 
$row['tittle'];
        echo 
'</DIV>'."\n";
        echo 
$row['fullcontent'].'<BR/>'."\n";
  } 

  پاسخ
تشکر شده توسط : paull


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان