PDA

View Full Version : Update کردن یک فیلد



mahmood3d
پنج شنبه 24 بهمن 1387, 21:35 عصر
سلام دوستان
من یه صفحه php ساختم که شبیه یک لینک باکس عمل می کنه و می خوام وقتی روی لینک کلیک می شه به شماره کلیک ها یک واحد اضافه کنه . حالا این صفحه به راحتی تمامی لینک ها رو از دیتا بیس می گیره و لسیت می کنه و آدرسش رو هم به خوبی روی لینک ها اعمال می کنه ولی وقتی که روی لینک ها کلیک می کنم به شماره کلیک ها اضافه نمیشه . کدش رو زیر همین پست قرار می دم . لطفاً اشکالش رو بگین .



$id=$_GET["id"];
$cn=mysql_connect("localhost","root","");
mysql_select_db("MyProject");
$query1=mysql_query("SELECT `url` FROM `linkbox` where `id`=\"$id\" ");
$query2=mysql_query("SELECT `visit` FROM `linkbox` where `id`=\"$id\" ");
$url=mysql_result($query1,0);
$clicks=mysql_result($query2,0);
$clicks=$clicks+1;

mysql_query("UPDATE `linkbox` SET `visit`=\"$clicks\" where `id`=\"id\" ");

mysql_close($cn);

mahmood3d
پنج شنبه 24 بهمن 1387, 23:00 عصر
البته اینو هم اضافه کنم که در دستور mysql_query بعد از خود کوری از نام کانکشن هم استفاده کردم ولی جواب نداد یعنی به این صورت :


$query1=mysql_query("SELECT `url` FROM `linkbox` where `id`=\"$id\" ",$cn);

narsic
جمعه 25 بهمن 1387, 15:32 عصر
با سلام
از این کد استفاده کنید .


mysql_query("UPDATE `linkbox` SET `visit`='$clicks' where `id`='id' ");

mahmood3d
جمعه 25 بهمن 1387, 17:44 عصر
دوست عزیز ممنون از راهنمایی تون ولی جواب نداد

zamanphp
جمعه 25 بهمن 1387, 18:52 عصر
mysql_query("UPDATE `linkbox` SET `visit`=`visit+1` where `id`='$id' ", $cn);

mahmood3d
جمعه 25 بهمن 1387, 19:39 عصر
بازم جواب نداد من کل کدهای مربوط به این فایل رو اینجا قرار می دم لطفاً رو دستگاه خودتون چک کنین .



<?php
$id=$_GET["id"];
$cn=mysql_connect("localhost","root","");
mysql_select_db("MyProject");
$query1=mysql_query("SELECT `url` FROM `linkbox` where `id`='$id' ");
$query2=mysql_query("SELECT `visit` FROM `linkbox` where `id`='$id' ");
$url=mysql_result($query1,0);
$clicks=mysql_result($query2,0);
$clicks=$clicks+1;

mysql_query("UPDATE `linkbox` SET `visit`='$clicks' where `id`='id' ");

mysql_close($cn);
echo <<<script
<script language="javascript" type="text/javascript">
window.location = "$url";
</script >
script;
?>
در مورد بانک اطلاعاتی هم یک بانک اطلاعاتی با نام MyProject دارم که یک جدول به نام linkbox داره که فیلد هاش رو این زیر می نویسم :



id ---> bigint(20)
title ---> varchar(255)
url---> varchar(255)
comment---> varchar(255)
visit---> int(11)
date_of_register---> timestamp

mahmood3d
جمعه 25 بهمن 1387, 19:44 عصر
مشکل می تونه از اینکه قایل ها رو از کامپیوتر لوکال (کامپیوتر خودم) لود می کنم باشه و باید اطلاعات رو روی یک وب سرور روی اینترنت آپلود کنم ؟

narsic
جمعه 25 بهمن 1387, 23:30 عصر
اصلا یه سوآل آیا شما به بانک متصل میشید ؟؟؟

smhnaji
شنبه 26 بهمن 1387, 07:53 صبح
چه اروری میده؟
خروجی رو هم لطفا بنویس

yaqubian
شنبه 26 بهمن 1387, 08:06 صبح
دوست عزیز
اگه شما بعد از دستوراتی مثل connect و ... یه die هم بنویسید بد نیست. اون وقت با یه mysql_error بهتون می گه که اشکال از کجاست؟
موفق باشید

mahmood3d
شنبه 26 بهمن 1387, 11:56 صبح
دوستان از توجهتون ممنونم
این صفحه به بانک اطلاعاتی وصل میشه و آدرس رو هم از بانک برمی داره و همون طور که از کد برنامه پیداست بعد از واکشی آدرس مربوط به لینک بلافاصله به اون آدرس ریدایرکت می شه .
اطلاعات رو به درستی از بانک به دست می آره ولی نمی تونه آپدیت کنه .


اگه شما بعد از دستوراتی مثل connect و ... یه die هم بنویسید بد نیست. اون وقت با یه mysql_error بهتون می گه که اشکال از کجاست؟
اگه من از die استفاده کنم یا نکنم هیچ فرقی نمی کنه چون صفحه بلافاصله ریدایرکت می شه و اگه اشکالی در برنامه هم وجود داشته باشه دیده نمی شه .

mahmood3d
شنبه 26 بهمن 1387, 12:09 عصر
کد قسمتی که صفحه رو ریدایرکت می کرد رو برداشتم و به جای


mysql_query("UPDATE `linkbox` SET `visit`='$clicks' where `id`='id' ",$cn);

اینو قرار دادم


$qupdate="UPDATE `linkbox` SET `visit`='$clicks' where `id`='id' ";
mysql_query($qupdate,$cn)or die("Enter at line".__LINE__." : ".mysql_error($cn).$qupdate);

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

narsic
شنبه 26 بهمن 1387, 13:30 عصر
با سلام
برای نمایش خطا از این کد استفاده کنید


mysql_query($qupdate,$cn)or die("Enter at line".__LINE__." : ".mysql_error());

موفق باشید

zamanphp
شنبه 26 بهمن 1387, 16:51 عصر
دوست عزيز اول سعي كن تميز تر كد بزني .
من برات كد رو اصلاح كردم و الان هم روي سيستم خودم داره مث گربه كار مي كنه!:لبخند:

<?php
if (isset($_GET['id'])) {
$conn = mysql_connect('localhost', 'root', 'root') or mysql_error();
mysql_select_db('MyProject', $conn) or die(mysql_error());

$result = mysql_query('SELECT url FROM linkbox WHERE id = "' . (int)$_GET['id'] . '" ') or die(mysql_error());

if (mysql_num_rows($result) == 1) {
$row = mysql_fetch_object($result) or die(mysql_error());
mysql_query('UPDATE linkbox SET visit=visit+1 WHERE id = "' . (int)$_GET['id'] . '" ') or die(mysql_error());

header('location:' . $row->url);
} else {
die("not found");
}
}
?>

mahmood3d
شنبه 26 بهمن 1387, 21:20 عصر
سلام دوستان مشکلمو پیدا کردم :خجالت:
امروز دانشگاه کلاس داشتمو مشکلمو با استاد برنامه نویسی تحت وب مطرح کردم . اونم اول به کد نگاه کرد و چیزی نفهمید و بعد از اینکه از خود کوری echo گرفت فهمیدم که به جای $id نوشتم id یعنی به جای اینکه مقدار متغیر id رو بفرستم خود id رو می فرستادم .

نتیجه اخلاقی این بحث (که برای خودم خیلی مفید بود) اینکه وقتی دیدید کد یا کوری ای کار نمی کنه از اون یک echo بگیرید و ببینید آیا کدی که نوشتین خروجی ای رو که شما می خواین رو می ده یا نه ؟

zamanphp
شنبه 26 بهمن 1387, 21:45 عصر
دوست عزيز من تو صفحه اولي كه بهتپاسخ دادم كد صحيح رو برات نوشتم اگه نيگاه كني اين بود :

mysql_query("UPDATE `linkbox` SET `visit`=`visit+1` where `id`='$id' ", $cn);
اما متاسفانه شما حتي زحمت نگاه كردن به اون رو به خودتون نداديد
واقعا كه خيلي گيج هستيد:لبخند:

mahmood3d
یک شنبه 27 بهمن 1387, 22:50 عصر
دوست عزيز من تو صفحه اولي كه بهتپاسخ دادم كد صحيح رو برات نوشتم اگه نيگاه كني اين بود :

mysql_query("UPDATE `linkbox` SET `visit`=`visit+1` where `id`='$id' ", $cn); اما متاسفانه شما حتي زحمت نگاه كردن به اون رو به خودتون نداديد


دوست عزیز توی کد بالا بیشترین تفاوتی که با کد من داشت `visit`=`visit+1` بود و من فکر کردم تنها نفاوتی که با کد من داشت این بود .


واقعا كه خيلي گيج هستيد:لبخند:
خواهش می کنم گیجی از خودتونه .:لبخند::گیج:

mahmood3d
یک شنبه 27 بهمن 1387, 22:53 عصر
در ضمن کار تابع isset چیه ؟ :متفکر: