PDA

View Full Version : سوال: مشکل در عملیات حدف رکورد توسط دکمه در جدول



پیام حیاتی
دوشنبه 09 فروردین 1395, 13:53 عصر
سلام عزیزان
این جدول من هست :

139758
با کلیک بر روی دکمه عملیات حذف انجام نمی گیرد خطایی هم ندارم،در آدرس بار مرورگر id شناسایی می شود ولی حذف نمی شود:


http://localhost/personal/del.php?id=2

این کدهای جدول من:


<table width="600" border="1" cellpadding="1" cellspacing="1">
<tr>
<th>شماره</th>
<th>نام و نام خانوداگی</th>
<th>ایمیل</th>
<th>موضوع</th>
<th>توضیحات</th>
<th>عملیات</th>
</tr>

<?php
while($user=mysql_fetch_assoc($records))
{
echo "<tr>";
echo "<td>".$user['c_id']."</td>";
echo "<td>".$user['c_fullname']."</td>";
echo "<td>".$user['c_email']."</td>";
echo "<td>".$user['c_subject']."</td>";
echo "<td>".$user['c_descrip']."</td>";
echo '<td><a href="del.php?id='.$user['c_id'].'"> حذف </a></td>';
echo "</tr>";
}


?>


</table>


این کدهای پردازش :


if(isset($_GET['c_id']))
{
$id = mysql_real_escape_string($_GET['c_id']);
$con=mysql_connect("localhost","root","");
if(!$con)
{
die("Colud Not Connect: ".mysql_error());
}
mysql_select_db("db_payam",$con);
$Query="DELETE FROM contact WHERE c_id=$id";
if(!mysql_query($Query,$con))
{
die("Error: ".mysql_error());
}

mysql_close($con);
echo "Success Delete Record Please Refresh!";




تشکر

Farshid007
دوشنبه 09 فروردین 1395, 15:37 عصر
خب خروجی چیه؟
درضمن احتیاجی به نوشتن if نداری
میتونی خلاصه تر بنویسی:

mysql_query($Query,$con) or Die("Error: ".mysql_error());

پیام حیاتی
دوشنبه 09 فروردین 1395, 15:56 عصر
خروجی یا باید خطای کانکشن mysql باشه یا پیام Success Delete Record Please Refresh! که هیچکدام نیست.
صفحه سفید.

مهرداد سیف زاده
دوشنبه 09 فروردین 1395, 16:26 عصر
log رو برای mysql فعال کنید تا ببینید اصلا query به mysql رسیده و اگر query رفته چی بوده که اجرا نمیشه
اگر روی ویندوز هستید از راهنمای زیر استفاده کنید
http://stackoverflow.com/questions/32821517/enable-mysql-query-log
و اگر لینوکس
http://dba.stackexchange.com/questions/62129/how-to-log-all-mysql-queries-into-log-file

Farshid007
دوشنبه 09 فروردین 1395, 17:18 عصر
کل دستوراتت تو یه عبارت شرطی شده
بره این هم else بزار و ی پیغامی رو بده ببین چی میشه
شاید اصن داخل بلاک if اجرا نمیشه یعنی شرط false

Farshid007
سه شنبه 10 فروردین 1395, 03:55 صبح
الان که به کد های قبلیت دقت کردم فهمیدم مشکلت چیه
تو کد های html به این دقت کن

echo '<td><a href="del.php?id='.$user['c_id'].'"> حذف </a></td>';

نام اندیسی رو که بهGET داری میفرستی id هستش
بعد به کد دومی دقت کن:

if(isset($_GET['c_id']))

داری از GET اندیس c_id رو بررسی میکنی که وجود داره یا ن
خب معلومه که وجود نداره
یعنی اصن داخل بلاک if اجرا نمیشه چون شرط برقرار نیست

پیام حیاتی
سه شنبه 10 فروردین 1395, 07:10 صبح
الان که به کد های قبلیت دقت کردم فهمیدم مشکلت چیه
تو کد های html به این دقت کن

echo '<td><a href="del.php?id='.$user['c_id'].'"> حذف </a></td>';

نام اندیسی رو که بهGET داری میفرستی id هستش
بعد به کد دومی دقت کن:

if(isset($_GET['c_id']))

داری از GET اندیس c_id رو بررسی میکنی که وجود داره یا ن
خب معلومه که وجود نداره
یعنی اصن داخل بلاک if اجرا نمیشه چون شرط برقرار نیست
درسته ، الآن چکار باید کرد درست بشه ؟ جای id هم c_id قرار دادم اوکی نشد :ناراحت:

Farshid007
سه شنبه 10 فروردین 1395, 11:50 صبح
دیگه باید درست کار کنه
همه چی رو یکبار تست کنید

پیام حیاتی
سه شنبه 10 فروردین 1395, 11:56 صبح
این خطا :


Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\personal\del.php on line 13


Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\personal\del.php on line 13
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


خط 13 فایل del.php :


$id = mysql_real_escape_string($_GET['c_id']);

مهرداد سیف زاده
سه شنبه 10 فروردین 1395, 12:46 عصر
خطای دسترسی به mysql هست
نام کاربری و پسورد درست ست نشده

پیام حیاتی
سه شنبه 10 فروردین 1395, 18:20 عصر
خطای دسترسی به mysql هست
نام کاربری و پسورد درست ست نشده
روی لوکال :


mysql_connect('localhost','root','');

برای insert اطلاعات فرم مشکلی نیست ، چرا برای حذف خطا میگیره؟
راهکار چیه؟

مهرداد سیف زاده
چهارشنبه 11 فروردین 1395, 01:57 صبح
البته ایراد اولی که هست استفاده از تابع mysql هست. خانواده این توابع منسوخ شده و در حالت عادی warning میده
بهتره بجاش از mysqli یا pdo استفاده کنید
احتمالا یه ناهماهنگی بین لاگین و ارسال دستور هست. مثلا در صفحه delete قبل از لاگین دستور ارسال میشه.
اگر هنوز مشکل دارید یه تیم ویور بدید نگاه بندازم

Farshid007
چهارشنبه 11 فروردین 1395, 05:24 صبح
روی لوکال :


mysql_connect('localhost','root','');

برای insert اطلاعات فرم مشکلی نیست ، چرا برای حذف خطا میگیره؟
راهکار چیه؟

با کلاس MySQLi کار کنید
سعی کنید شی گرایی پیش برید
هم راحت تره
هم کد ها خوانا ترن
به این نمونه کد توجه کنید:

$db=new MySQLi();
$db->connect('localhost','root','','mydb');
$query='Select * from table1';
$result=$db->query($query);
while($row=$result->fetch_assoc())
{
echo $row['0'];
}

بهترین IDE برای شی گرایی از نظر بنده adobe DreamWeaver CC هستش:لبخندساده:

پیام حیاتی
چهارشنبه 11 فروردین 1395, 12:35 عصر
با کلاس MySQLi کار کنید
سعی کنید شی گرایی پیش برید
هم راحت تره
هم کد ها خوانا ترن
به این نمونه کد توجه کنید:

$db=new MySQLi();
$db->connect('localhost','root','','mydb');
$query='Select * from table1';
$result=$db->query($query);
while($row=$result->fetch_assoc())
{
echo $row['0'];
}

بهترین IDE برای شی گرایی از نظر بنده adobe DreamWeaver CC هستش:لبخندساده:
اینها درمان نیستن مسکن دردن ، برای مشکل من تفاوتی نکرد :قلب:

پیام حیاتی
چهارشنبه 11 فروردین 1395, 18:28 عصر
کد را به شکل زیر تغغیر دادم درست شد:




<?php
if(isset($_GET['c_id']))
{
$idc = $_GET['c_id'];
$con= mysql_connect("localhost","root","");
$id = mysql_real_escape_string($idc);
if(!$con)
{
die("Colud Not Connect: ".mysql_error());
}
mysql_select_db("db_payam",$con);
$Query="DELETE FROM contact WHERE c_id=$id";
if(!mysql_query($Query,$con))
{
die("Error: ".mysql_error());
}


mysql_close($con);
echo "Success Delete Record Please Refresh!";
}


else
{
echo "Error";
}


?>
باید
$con
رو قبل از
$id
میزاشتم.به همین سادگی :اشتباه:

Farshid007
پنج شنبه 12 فروردین 1395, 05:01 صبح
اینها درمان نیستن مسکن دردن ، برای مشکل من تفاوتی نکرد :قلب:
من اینهارو برای مشکل شما نگفتم که این روش بهتر از اون روشیه که شما پیش گرفتی
اینو هم امتحان کنید
:)

پیام حیاتی
شنبه 14 فروردین 1395, 08:45 صبح
اگر بخوام قبل از عملیات حذف رکورد پیغامی به کاربر با محتوای "آیا از انجام عملیات حذف مطمئن هستید" نمایش دهم باید چه کاری انجام بدم؟
باز زدن دکمه بله در پنجره رکورد حذف بشه و با کلیک بر روی خیر عملیات متوقف شود.

aaaaaaaa1
شنبه 14 فروردین 1395, 10:02 صبح
دوست عزیز
شما در تارگتتون گذاشتید del.php?id=2
شما شرطی رو قرار میدید که در اون GET به کار رفته. باید تارگت رو چک کنید مثلا
http://example.com/index.php?page=1&state=1
خب الان اینجا گت page و state است که مقرادشون روبروشون قرار داده شده بعد از مساوی & هم اون ها رو از هم جدا کرده شما کدتون رو اصلاح کنید بصورت کلی :
http://localhost/personal/del.php?id=2 (http://localhost/personal/del.php?id=2)
if(isset($_GET['id']))

{
$id = mysql_real_escape_string($_GET['id']);

$con=mysql_connect("localhost","root","");
if(!$con)
{
die("Colud Not Connect: ".mysql_error());
}
mysql_select_db("db_payam",$con);
$Query="DELETE FROM contact WHERE c_id=$id";
if(!mysql_query($Query,$con))
{
die("Error: ".mysql_error());
}

mysql_close($con);
echo "Success Delete Record Please Refresh!";



امیدوارم مشکلتون حل بشه. موفق باشید.

mysql_real_escape_string() برای این خطا میگرفت که شما اصلا هیچ GET وجود نداشته.