PDA

View Full Version : مشکل عجیب در آپدیت کوئری !



thacker
پنج شنبه 03 مهر 1393, 23:53 عصر
سلام ...
میخوام با هر بار باز شدن صفحه نمایش مطلب ، به آمار بازدید اون مطلب یکی اضافه بشه ...
ولی هر بار که صفحه لود میشه 4 تا بازدید اضافه میشه ...!
مشکل از چیه ؟
کدها :

<?php
$id = $_GET['id'];
$Query = mysql_query ("SELECT * FROM `article` WHERE `id` = '".$id."' LIMIT 1");
$row = mysql_fetch_array($Query);

$update = mysql_query ("UPDATE `article` SET `visit` = visit+1 WHERE `id` = '".$id."' LIMIT 1");
?>

desatir7316
جمعه 04 مهر 1393, 10:13 صبح
خودت اومدی MVCرو پیاده سازی کردی؟
منم این مشکل رو تجربه کردم قبلا، ولی با توجه به نوع پیاده سازی که توMVC داشتم واسه من دوتا اضافه میشد

DR.HTML
جمعه 04 مهر 1393, 11:42 صبح
ببینید بعضی وقتها برام پیش اومده دوبار اینسرت شده یا.... بعد که خوب دهارو خوندم دیدم کشلی نیست اما توی require ها یا include دیدم باعث شده یه کد دوبار اجرا شده اگر همچین مشکل داشته باشید اون کده ارچ ندبار اجرا بشه اضافه میشه البته باید کل کد رو دید

MMSHFE
جمعه 04 مهر 1393, 13:00 عصر
بهتره عادت کنید برای حل اینجور مشکلات، همیشه از include_once و require_once استفاده کنید.

abolfazl-z
جمعه 04 مهر 1393, 15:04 عصر
سلام ...
میخوام با هر بار باز شدن صفحه نمایش مطلب ، به آمار بازدید اون مطلب یکی اضافه بشه ...
ولی هر بار که صفحه لود میشه 4 تا بازدید اضافه میشه ...!
مشکل از چیه ؟
کدها :

<?php
$id = $_GET['id'];
$Query = mysql_query ("SELECT * FROM `article` WHERE `id` = '".$id."' LIMIT 1");
$row = mysql_fetch_array($Query);

$update = mysql_query ("UPDATE `article` SET `visit` = visit+1 WHERE `id` = '".$id."' LIMIT 1");
?>

البته منم یک بار همین مشکل برای همین موضوع برایم پیش اومد بعد فهمیدم که مرورگر کروم یک درخواست برای دریافت favicon به هر آدرسی میفرسته که باعث میشه هر بار بازدید معادل دو بازدید بشود بهتر هم هست که خروجی قبل از آپدیت بگیرید و بر روی یک فایل ذخیره کنید و ببینید که وضعیت چطور هست !

MMSHFE
جمعه 04 مهر 1393, 15:26 عصر
راه مناسب اینه که وقتی کاربر سایتتون رو بازدید میکنه، براش کوکی یا سشن ست کنید و در دفعات بعد، اگه کوکی یا سشن وجود داشت، بازدید رو اضافه نکنید. مگه اینکه آمار بازدید شما بصورت Hit Count باشه نه Visit Count که در اینصورت میتونید با بررسی REQUEST_URI توی آرایه SERVER_$ چک کنید ببینید اگه فرضاً favicon درخواست شده، آمار رو اضافه نکنید.

thacker
جمعه 04 مهر 1393, 16:57 عصر
با تشکر از تمام دوستان... مشکل برطرف نشد.
این کدهای صفحه اصلی هست :


<?php
ob_start('ob_gzhandler');
require_once ('includes/library.php');

$page=$_GET['page'];

switch ($page){
case "contact":
$page_title = ' ارتباط با ما ';
$view = 'pages/contactus.php';
break;
case "articles":
$page_title = ' لیست مقالات ';
$view = 'pages/articles.php';
break;
case "article":
$page_title = 'نمایش مطلب';
$view = 'pages/article.php';
break;
default:
$page_title = ' صفحه اصلی ';
$view = 'pages/home.php';
}

include_once("header.php");
include_once($view);
include_once("footer.php");

ob_end_flush(); ?>

توی فایر فاکس هم مثل کروم 4 بار حساب میکنه ...
مشکل از کجا میتونه باشه ؟

alireza.stack
جمعه 04 مهر 1393, 17:20 عصر
برای حل مشکل بصورت زیر دیباگ کنید:

بالای REQUEST_URI رو از متغیر سراسری $_SERVER بگیرید و داخل فایل لاگ کنید فقط همراه اون __LINE__ و __FILE__ رو هم قرار بدید تا بدونید کجا و تو کدوم فایل اتفاق رخ داده و بعد داخل تمام فایلهایی که include و یا require کردید همین روال رو پیش بگیرید و اطلاعات رو لاگ کنید داخل فایل (حواستون باشه به فایل append کنید و یه موقع آخرین دستور لاگ کردن رو نبینی! ;-) )

موفق باشید