سؤال

لدي الجزء التالي من اياكس التطبيق الذي يعطي أية أخطاء ، ولكن أيضا لا يتم عرض أي شيء على الشاشة ، لذلك أنا غير متأكد أين تكمن المشكلة.تدعو هذه الصفحة مباشرة من المتصفح ؟ cmd&id=1 يجب أن تعود ، أو حتى تسميتها بدون ؟ cmd يجب أن تعود cmd رسالة الخطأ.

تحرير:وأضاف حالات الاختبار:أنا لا تحصل على cmd رسالة الخطأ ، ولكن عندما تمر &id=1 (1 بطاقة هوية سارية المفعول) ، أي html عادت على الإطلاق, عرض المصدر فارغة تماما.وقد اعتدت صدى بشكل غير صحيح أو شيئا من هذا القبيل ؟

edit2:وأضاف صدى الصف الأول:أول صدى لا ينظر على الإطلاق

edit3:بعد العودة إلى نسخة قديمة و إجراء جميع التغييرات مرة أخرى, أنا الآن الحصول على اختبار charset الناتج عند الاتصال مع صالح cmd و معرف paramters.مدونة أنا باستخدام مطابقة ما يتم لصق أدناه.

رمز:

<?php
echo "hello world";    
error_reporting(E_ALL);

if (isset($_GET["cmd"]))
  $cmd = $_GET["cmd"];
else
  die("You should have a 'cmd' parameter in your URL");

$id = $_GET["id"];

$con = mysqli_connect("localhost", "user", "password", "db");
echo "test con";

if(!$con)
{
  die('Connection failed because of' .mysqli_connect_error());
  echo "test error";
}

//$con->query("SET NAMES 'utf8'"); 
$con->set_charset("utf8"));
echo "test charset";

if($cmd=="GetSALEData")
{
  echo "test cmdifloop";

  if ($getRecords = $con->prepare("SELECT * FROM SALES WHERE PRODUCT_NO = ?"))
  {
    echo "test recordifloop";

    $getHtml = $con->prepare("SELECT PRODUCT_DESC FROM SALES WHERE PRODUCT_NO = ?");
    $getHtml->bind_param("s", $id);
    $getHtml->execute();
    $getHtml->bind_result($PRODUCT_DESC);

    $getRecords->bind_param("s", $id);
    $getRecords->execute(); 
    $getRecords->bind_result($PRODUCT_NO, $PRODUCT_NAME, $SUBTITLE, $CURRENT_PRICE, $START_PRICE,
                             $PRICE_COUNT, $QUANT_TOTAL, $QUANT_SOLD, $ACCESSSTARTS, $ACCESSENDS,
                             $ACCESSORIGIN_END, $USERNAME, $BEST_PRICEDER_ID, $FINISHED, $WATCH,
                             $BUYITNOW_PRICE, $PIC_URL, $PRIVATE_SALE, $SALE_TYPE, $ACCESSINSERT_DATE,
                             $ACCESSUPDATE_DATE, $CAT_DESC, $CAT_PATH, $COUNTRYCODE, $LOCATION,
                             $CONDITIONS, $REVISED, $PAYPAL_ACCEPT, $PRE_TERMINATED, $SHIPPING_TO,
                             $FEE_INSERTION, $FEE_FINAL, $FEE_LISTING, $PIC_XXL, $PIC_DIASHOW,
                             $PIC_COUNT, $ITEM_SITE_ID
                            ); 
    while ($getRecords->fetch()) 
    {
      $ccodes = array(  "1" => "USA",
                       "77" => "Germany",
                       "16" => "Austria",
                      "122" => "Luxemburg",
                      "193" => "Switzerland",
                     );

      $conditions = array( "0" => "USA",
                          "77" => "Germany",
                          "16" => "Austria",
                         );

      $country = $ccodes[$COUNTRYCODE];
      if ( $country == "" ) $country = "Not applicable";

      $columns = array('FINISHED', 'WATCH', 'PRIVATE_SALE', 'REVISED', 'PAYPAL_ACCEPT', 'PRE_TERMINATED', 'PIC_XXL', 'PIC_DIASHOW');

      foreach($columns as $column) {
        $$column = $row[$column] ? 'YES' : 'NO';
      }

      imageResize($PIC_URL, 250, 300);
      file_put_contents($id, file_get_contents($PIC_URL));

      $html = htmlentities(json_encode($PRODUCT_DESC));
      $shortDate = strftime("%d %m %Y", strtotime($ACCESSSTARTS));

      echo "<h1>".$PRODUCT_NAME."</h1>
<div id='leftlayer' class='leftlayer'>
<p><strong>Username: </strong>".$USERNAME."
<p><strong>PRODUCT Number: </strong>".$PRODUCT_NO."
<p><strong>Subtitle: </strong>".$SUBTITLE."
<p><strong>SALE Start: </strong>".$ACCESSSTARTS." 
<p><strong>SALE End: </strong>".$ACCESSENDS."
<p><strong>SALE Type: </strong>".$SALE_TYPE."
<p><strong>Category: </strong>".$CAT_DESC."
</div>
<div class='leftlayer2'>
  <p><strong>Condition: </strong> ".$CURRENT_PRICE."
  <p><strong>Total Items: </strong> ".$QUANT_TOTAL."
  <p><strong>Total Sales: </strong> ".$QUANT_SOLD."
  <p><strong>Start Price: &#8364</strong> ".$START_PRICE."
  <p><strong>Buyitnow Price: &#8364</strong> ".$BUYITNOW_PRICE."
  <p><strong>PRICEs: </strong> ".$PRICE_COUNT." 
  <p><strong>Revised: </strong> ".$REVISED."
</div>
<div class='leftlayer2'>
  <p><strong>Private: </strong> ".$PRIVATE_SALE."
  <p><strong>Finished: </strong> ".$FINISHED."
  <p><strong>Cancelled: </strong> ".$PRE_TERMINATED."
  <p><strong>Paypal: </strong> ".$PAYPAL_ACCEPT."
  <p><strong>Country: </strong> ". $country ."
  <p><strong>Location: </strong> ".$LOCATION."
  <p><strong>Shipping to: </strong> ". $country ."
</div>
<div id='rightlayer'>
 <img src='".$PIC_URL."' width='".$imageSize["width"]."' height='".$imageSize["height"]."'>
 <p><a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>
</div>
</div>
</div>";

    } 
  }

  function imageResize($imageURL, $maxWidth, $maxHeight)
  {
    $imageSize["width"] = 0;
    $imageSize["height"] = 0;

    $size = getimagesize($imageURL);
    if ($size) {
      $imageWidth  = $size[0];

      $imageHeight = $size[1];
      $wRatio = $imageWidth / $maxWidth;
      $hRatio = $imageHeight / $maxHeight;
      $maxRatio = max($wRatio, $hRatio);

      if ($maxRatio > 1) {
        $imageSize["width"] = $imageWidth / $maxRatio;
        $imageSize["height"] = $imageHeight / $maxRatio;
        return $imageSize;
      } else {
        $imageSize["width"] = $imageWidth;
        $imageSize["height"] = $imageHeight;
        return $imageSize;
      }
    } else {
      die(print_r(error_get_last()));
    }
  }

}

أعتذر عن تباعد ولكن هذا يحدث تلقائيا عند الضغط على زر كود.

هل كانت مفيدة؟

المحلول

لديك قوس اضافية على خط 22

وهذا

$con->set_charset("utf8"));

ويحتاج إلى أن يكون هذا

$con->set_charset("utf8");

ونصائح اثنين التصحيح للمستقبل. للمرة الأولى، ستحتاج قذيفة الحصول على استضافة الويب الخاص بك، أو سوف تحتاج إلى تثبيت PHP محليا على الجهاز التطوير. إذا كنت تقوم بتشغيل يونكس، قد يكون لديك بالفعل. فتح محطة واكتب

php -v

إذا كان لديك، يمكنك التحقق من بناء جملة ملف PHP عن طريق القيام

//on *nix
php yourfile.php

//or on windows
c:\path\to\php.exe yourfile.php

وهذا سينقذ على أخطاء في بناء الجملة الإجمالية. أيضا، جوجل / بحث هذا الموقع ل "بى الإعداد محليا التعليمي" أو شيئا من هذا القبيل لمعرفة كيفية الحصول على نسخة كاملة من A خادم الويب، قاعدة بيانات MySQL و PHP يعمل على الجهاز الخاص بك.

والاقتراح الثاني، الذي سيكون أسهل إذا قمت بتثبيت نسخة محلية، للتحقق سجلات الخطأ الخاصة بك. حتى عندما PHP لا تظهر رسائل الخطأ، سوف لا يزال يتم تسجيل الأخطاء إلى ملف في مكان ما. في الحالة الخاصة بك، وكنت قد رأيت شيئا من هذا القبيل في ملف السجل

PHP Parse error:  syntax error, unexpected ')' in foo.php on line 22

نصائح أخرى

وهذا يساعدك على رؤية الأخطاء الخاصة بك:

ini_set('display_errors', '1');

ولديك قوس إغلاق إضافي هنا:

$con->set_charset("utf8"));

هل حاولت اختبار الأساسي من وضع أو طباعة البيان صدى مباشرة في الجزء العلوي من البرنامج النصي لاختبار الانتاج؟

<?php

  print "Test";

?>

وأود أن أقترح أيضا باستخدام الصيد or die($msg) بعد محاولة اتصال بك.

هل يكون على ما يرام لقضيتك. فقط كنقطة انطلاق. أفعل هذا من وقت لآخر عند الحاجة. بدلا من افتراض القضية هو بعض المشاكل المعقدة واسع، فإنه في كثير من الأحيان تتحول إلى أن تكون حالة غير متوقعة في متغيرات الطلب، والوصول إلى صفحة الخطأ، والوصول إلى الصفحة الصحيحة في الوقت الخطأ، وما إلى ذلك.

قد تساعد:

  1. مراقبة سجل خادم الويب (مثل tail -f /var/log/apache2/error.log)

  2. استخدام الحرائق في وحدة التحكم AJAX رد القادمة من البرنامج النصي الخاص بك.خطأ قد تظهر هناك

إذا تم التوصل إلى أي من لصدى التصحيح، ثم نقطة الفشل ويبدو أن يكون حول اتصال قاعدة البيانات، إلا إذا أنا شيء مفقود.

والتحقق من تفاصيل الاتصال، وتحقق لديك تمكين تمديد mysqli.

ولقد واجهت مشكلة مشابهة حيث كنت لسبب غير مفهوم على صفحة فارغة، وعادة في IE6 لكن في بعض الأحيان في المتصفحات الأخرى. واتضح وجود مشكلة ترميز الأحرف. كنت إخراج بعض شخصيات غريبة، والمتصفحات والتخمين ما كان الترميز على أساس المحتوى. I ثابتة من خلال وضع صراحة هذا الرأس:

header('Content-type: text/html; charset=utf-8');
$getHtml->bind_param("s", $id);

وأنا لا أعرف إذا كان هذا من شأنه أن يسبب الخطأ، ولكن لا ينبغي أن وgetRecords bind_param يكون "أنا" كمعلمة الأولى؟

<اقتباس فقرة>   

واستدعاء هذه الصفحة مباشرة من   المتصفح مع ?cmd&id=1 يجب أن تعود

وماذا تقصد ب "العودة"؟ من ما أستطيع أن أرى من التعليمات البرمجية الخاصة بك، تحتاج ?cmd= على GetSALEData أو آخر صفحة فارغة سوف تعاد، ليتم تغليف كل شيء داخل بيان if($cmd=="GetSALEData").

<القوي> تصحيح : لسترى "test contest charset" إذا سلسلة الاستعلام لديه cmd المقرر أن شيئا آخر غير "GetSALEData". (أضيفت هذه اختبارين إلى رمز في وقت لاحق).

وهناك العديد من الاقتراحات الجيدة هنا للمحاولة. تلك التي لا أرى حتى الآن هو التأكد من وجود ذاكرة كافية المخصصة لPHP. الناس أكثر من drupal.org يكون استراحة جيدة أسفل في طرق لزيادة PHP في تخصيص الذاكرة .

ووضع أقواس حول إذا كان بين آخر    صياغات. لقد شعور الشخص الذي    تحرير التعليمات البرمجية قد "ثابتة" ل    مشكلة محتملة هناك.

والسبب هذا يحدث هو بسبب تعيين التكوين الملقم الخاص بك ليتم عرض الأخطاء، لذلك السيناريو الخاص بك ويعتمدون على تنفيذ هذا error_reporting(E_ALL); - وهذا يجب أن تعمل بشكل جيد ما دام يحصل على تنفيذها وظيفة error_reporting(). ومع ذلك، على إذا كان هناك خطأ في تحليل وerror_reporting(E_ALL) لن تحصل على تنفيذه ، أو وسيكون هناك foreyou لا ترى خطأ كما الإعدادات التقرير عن الخطأ PHP.INI لم تحصل على الكتابة فوقها.

والحل الوحيد لك هو وضع error_reporting في الأماكن المرتفعة مثل هتكس أو ملف php.ini. ولكن الآن على الأقل كنت تعرف أن blankpage = خطأ تحليل!

إذا كنت متأكدا من أن يكون لديك أي خطأ والحفاظ على الحصول على صفحة فارغة، أود أن أقترح عليك تثبيت فب العملية.

yum -y install php-process

في حالات أخرى، يمكنك الحصول على مثل هذا الخطأ إذا لم يكن لديك الكمثرى تثبيت.

وyum -y install php-pear php-pear-DB أو لمجرد تثبيت pear install DB ديسيبل

وآمل أن يساعد هذا شخص مع القضية صفحة فارغة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top