PDA

View Full Version : پاك كردن يك ركورد



ravand
پنج شنبه 28 مهر 1390, 10:04 صبح
سلام نميدونم چرا تازگي اين كدم كار نميكنه در صورتي كه قبلاً كار ميكرد نميدونم كجاي كارم اشتباهه.

<?php

require_once ('connect.php');

$id = $_GET['ID'];

$delete = mysql_query("DELETE FROM `form` WHERE `id`='$id'");

if($delete) {
echo ("Your request has been done. <a href=\"javascript:history.go(-2)\">Back</a>");
}

else {
echo ("There is some problems. <a href=\"javascript:history.go(-1)\">Back</a>");
}

?>
من id رو توي mysql مقدار int بهش ميدم و primary و auto_increment
ولي كار نميكنه. خواستم توي اين سايت جستجو كنم ولي نميدونم چرا هر چي توي قسمت انجمن php جستجو ميكنم به جاش مطالب asp جستجو ميشه :لبخند:
البته اينم بگم كه پيام Your request has been done بهم ميده ولي توي بانك اطلاعاتي پاك نميشه.

afee1990
پنج شنبه 28 مهر 1390, 20:17 عصر
خط پنجم رو به این تغییر بده:


$id = $_GET['id'];

Arthas1990
پنج شنبه 28 مهر 1390, 20:39 عصر
سلام نميدونم چرا تازگي اين كدم كار نميكنه در صورتي كه قبلاً كار ميكرد نميدونم كجاي كارم اشتباهه.

<?php

require_once ('connect.php');

$id = $_GET['ID'];

$delete = mysql_query("DELETE FROM `form` WHERE `id`='$id'");

if($delete) {
echo ("Your request has been done. <a href=\"javascript:history.go(-2)\">Back</a>");
}

else {
echo ("There is some problems. <a href=\"javascript:history.go(-1)\">Back</a>");
}

?>
من id رو توي mysql مقدار int بهش ميدم و primary و auto_increment
ولي كار نميكنه. خواستم توي اين سايت جستجو كنم ولي نميدونم چرا هر چي توي قسمت انجمن php جستجو ميكنم به جاش مطالب asp جستجو ميشه :لبخند:
البته اينم بگم كه پيام Your request has been done بهم ميده ولي توي بانك اطلاعاتي پاك نميشه.

سلام دوست عزیر .
این کد را بذار امیدوارم درس شه


$delete = mysql_query("DELETE FROM `form` WHERE `id`='".$id."'");


و
قسمت $_get رو هم با کد آقای AFEE1990 عوض کن .
امیدوارم کمکی کرده باشم:لبخند:

Sadbar7
پنج شنبه 28 مهر 1390, 21:40 عصر
اینو جایگزین کن احتمالا باید درست بشه...

$delete = mysql_query("DELETE FROM `form` WHERE `id`='".$id."'");

ravand
پنج شنبه 28 مهر 1390, 22:19 عصر
كد هاي شما رو امتحان كردم . ولي كار نكرد. همونطوري كه گفتم كدهاي منم كار مي كنه و پيغام ميده كه مثلا پاك شد ولي مشكل اينجاست كه وقتي وارد بانك اطلاعاتي ميشم مي بينم كه پاك نشده!

<?php

$mysql_host = "localhost";
$mysql_username = "root";
$mysql_password = "";
$mysql_name = "database";

$connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
mysql_select_db($mysql_name);

if(!$connect) {
die(mysql_error());
}
$id = $_GET['ID'];

$delete =mysql_query("DELETE FROM `ali` WHERE `ID`='$id'");

if($delete) {
echo ("Your request has been done. <a href=\"javascript:history.go(-2)\">Back</a>");
}

else {
echo ("There is some problems. <a href=\"javascript:history.go(-1)\">Back</a>");
}

?>

Arthas1990
جمعه 29 مهر 1390, 01:32 صبح
كد هاي شما رو امتحان كردم . ولي كار نكرد. همونطوري كه گفتم كدهاي منم كار مي كنه و پيغام ميده كه مثلا پاك شد ولي مشكل اينجاست كه وقتي وارد بانك اطلاعاتي ميشم مي بينم كه پاك نشده!

<?php

$mysql_host = "localhost";
$mysql_username = "root";
$mysql_password = "";
$mysql_name = "database";

$connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
mysql_select_db($mysql_name);

if(!$connect) {
die(mysql_error());
}
$id = $_GET['ID'];

$delete =mysql_query("DELETE FROM `ali` WHERE `ID`='$id'");

if($delete) {
echo ("Your request has been done. <a href=\"javascript:history.go(-2)\">Back</a>");
}

else {
echo ("There is some problems. <a href=\"javascript:history.go(-1)\">Back</a>");
}

?>
نام این جدولت چیه ؟؟؟ یک بار نوشتی form اینجا هم که نوشتی ali.
ثانیا نام فیلدت رو چک کن ببین چیه ؟

ravand
جمعه 29 مهر 1390, 07:24 صبح
نه مشكل از ديتابيس و جدول نيست چون اگه بود به خاطر عبارات شرطي كه گذاشتم حتما اخطار ميداد. فيلد ID هم مشكلي نداره و همينطور كه توي كدها با حروف بزرگ نوشتم توي mysql هم با حروف بزرگ نوشتم.

ali zi zeperto
جمعه 29 مهر 1390, 14:48 عصر
$delete = mysql_query("DELETE FROM form WHERE id=$id");

faravaghi
جمعه 29 مهر 1390, 16:55 عصر
سلام گرامی،
خوب یک بار برو تو PHPMyAdmin یکی از رکورد ها رو حذف کن بعد دستور SQL ای که بهت نشون میده رو کپی کن فقط یادت باشه بجای شماره ID کد خودت رو بذاری.

ravand
جمعه 29 مهر 1390, 20:44 عصر
ببخشيد ولي اين كارا رو هم كردم فايده اي نداشت! برام سوال شده كه يعني كسي تا حالا همچين كدي رو ننوشته؟! چجوريه همه ي شما كدهايي كه ميذاريد با هم فرق داره؟ و قبلش تست نميكنيد؟

faravaghi
جمعه 29 مهر 1390, 20:57 عصر
سلام،

$mysql_host = "localhost";
$mysql_username = "root";
$mysql_password = "";
$mysql_name = "database";

$connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
mysql_select_db($mysql_name);

if(!$connect) {
die(mysql_error());
}
$id = $_GET['ID'];

$delete = mysql_query("DELETE FROM `ali` WHERE `ID`='".$id."'") or die(mysql_error());

if($delete) {
echo ("Your request has been done. <a href=\"javascript<b></b>:history.go(-2)\">Back</a>");
}

else {
echo ("There is some problems. <a href=\"javascript<b></b>:history.go(-1)\">Back</a>");
}

ravand
شنبه 30 مهر 1390, 07:22 صبح
ببخشيد شما كدهايي رو كه اينجا گذاشتي قبلاً امتحان كردي و كار ميكرده؟
چون اصلاً اين كدها كار نميكنند .اينم كه گذاشتيد كار نميكنه و مثل قبلي هاست.:متفکر:

faravaghi
شنبه 30 مهر 1390, 09:47 صبح
سلام،
بله تست کردم. فقط اسم بانک و نام جدول رو عوض کردم. بقیه همونه

ravand
شنبه 30 مهر 1390, 10:56 صبح
براي من اين كدهاي پيام ميده كه ركورد پاك شد ولي نميدونم چرا وقتي وارد mysql ميشم مي بينم پاك نشده.
ميشه گفت دليلش اينه كه من مقدار فيلد رو از خود phpMyAdmin و در قسمت درج وارد ميكنم؟ و بايد حتما با كدهاي php وارد كنم؟:متفکر:

tux-world
شنبه 30 مهر 1390, 11:50 صبح
وب سروی که استفاده میکنید چیه؟ رو اپاچی که تست کردم درست جواب داد.مشکلی نداشت کدتون. اگه از ویندوز استفاده میکنید نمیدونم چیکار باید بکنید اگه از لینوکس استفاده میکنید آپاچی رو یه بار فورس ریلود بزنید

ravand
شنبه 30 مهر 1390, 16:59 عصر
من از xampp استفاده ميكنم به نظر شما بهتره كه دوباره نصب كنم؟

ravand
یک شنبه 01 آبان 1390, 16:02 عصر
من برنامه ي xampp نسخه ي جديدش رو نصب كردم و اين پيغام رو بهم داد:

Notice: Undefined index: ID in F:\xampp\htdocs\test.php on line 13

خط 13 اين خط هست :

$id = $_GET['ID'];

tux-world
یک شنبه 01 آبان 1390, 16:39 عصر
والا من از ویندوز و سرور لمپ سر در نمیارم چون هیچ وقت بهش اعتماد نداشتم. حتی حرفه‌ای ترین دوستانی هم که دارم همیشه ازش برحذر بودن اگه بتونی رو وب سرور آپاچی تست کنی و درست جواب بده یعنی ۱۰۰ درصد کارت اوکی هستش ولی رو لمپ واقعا سخته نظر بدم

ravand
یک شنبه 01 آبان 1390, 17:45 عصر
مشكل من اينه كه اين كدهاي من قبلا كار ميكرده ولي الان نميكنه.:ناراحت:
فكر كنم دارم يه اشتباهي ميكنم ببينيد من براي ساخت IDهمين نام رو داخل قسمت ستون مي نويسم و مقدار int بهش ميدم و طول/ مقدار رو هم نمي نويسم حتي قبلا نوشتم بازم كار نكرده. primary رو هم انتخاب ميكنم AUTO_INCREMENT رو هم تيك مي زنم ديگه هيچي.:متفکر:

tux-world
یک شنبه 01 آبان 1390, 23:06 عصر
کدتون رو اگه میتونین پ ام کنید برام رو سرور اپاچی تستش کنم

tux-world
دوشنبه 02 آبان 1390, 16:33 عصر
قبل خط

$id = $_GET['ID'];
بنویس:

echo $_GET['ID'];
ببین اصلا اون چیزی که میاد بهش درسته یا نه اصلا محتویات اون آی دی چیه؟ همونی باید باشه که فرستاده شده

ravand
دوشنبه 02 آبان 1390, 19:14 عصر
من اين كاري كه شما گفتي كردم اين پيغام رو داد:

Notice: Undefined index: ID in F:\xampp\htdocs\test.php on line 13

Notice: Undefined index: ID in F:\xampp\htdocs\test.php on line 14
Your request has been done. Back
البته براي حذف اين پيغام ها من از اين كد استفاده كردم ديگه اين پيغام ها نيومد:

error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
و فقط نوشت:

Your request has been done. Back
اين يعني ركورد حذف شد.
ولي وقتي وارد mysql ميشم مي بينم حذف نشده!
اينم بگم كه من يه كد ديگه رو كه كارش اين بود كه ركورد رو حذف ميكنه امتحان كردم و تونست ركورد رو حذف كنه.
الان شما هم اگه بياي و اين خط رو به اين شكل در بياري كل ركورد ها رو حذف ميكنه :

$delete = mysql_query("DELETE FROM `ali` WHERE `ID`") or die(mysql_error());
ولي من ميخوام فقط يه ركورد رو حذف كنه.

tux-world
سه شنبه 03 آبان 1390, 07:18 صبح
خوب حالا اون خط ۱۳و ۱۴ چیه؟ معلومه که چیز درست و حسابی فرستاده نمیشه باید اون جا هر چیزی رو که فرستاده بودی چاپ میکرد اگه فایل ارسالیت درست بود. نمیکنه خطا میده پس این فایل مشکل نداره فرمی که داری میفرستی مشکل داره

ravand
سه شنبه 03 آبان 1390, 10:56 صبح
خط 13 و 14 همين دو تا خط هست :

echo $_GET['ID'];
$id = $_GET['ID'];

ببخشيد اين فرمي كه گفتيد ميفرسته چيه؟ منظرتون همون فرمي هست كه اطلاعات بانك اطلاعاتي رو براي فيلد ها ارسال ميكنه؟
اگه منظورتون همين هست كه من همون اول گفتم من فرمي ندارم من اطلاعات رو در قسمت mysql و به صورت دستي در قسمت درج وارد جدول ميكنم.
و از فرمي براي ارسال اطلاعات ارسال نميكنم.

ravand
چهارشنبه 04 آبان 1390, 15:05 عصر
همونطوري كه خواسته بوديد من برنامه ي xampp رو پاك كردم و به جاش برنامه ي wamp رو نصب كردم ولي بازم مشكل من حل نشد.:ناراحت:

mamali-mohammad
چهارشنبه 04 آبان 1390, 16:15 عصر
شما اگه کد زیر رو بزنی ، باید شماره ID رو براتون چاپ کنه :

echo $_GET['ID'];
این کار انجام میشه ؟

MMSHFE
چهارشنبه 04 آبان 1390, 17:57 عصر
با سلام، دوست عزيز لطفاً كد زير رو امتحان كنيد:


<?php
$mysql_host = 'localhost';
$mysql_username = 'root';
$mysql_password = '';
$mysql_name = 'database';

mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Connection error');
mysql_select_db($mysql_name) or die('Database does not exist');

if(!isset($_GET['id'])) {
die('ID is not set');
}

$delete = mysql_query("DELETE FROM `ali` WHERE (`id`='{$_GET['id']}')");

if($delete !== false && mysql_affected_rows() > 0) {
echo 'Your request has been done. <a href="javascript:history.go(-2)">Back</a>';
}
else {
echo 'There is some problems. <a href="javascript:history.go(-1)">Back</a>';
}
?>

و نكات زير رو هم درنظر بگيرين:
1- توي فرمتون بايد اسامي عناصر رو با حروف كوچك درنظر بگيرين (خاصيت name تگهاي input) - منظورم اينه كه اگه اونجا "name="ID گذاشته باشين، اينجا هم بايد ['GET['ID_$ بهش بدين يا اينكه اگه اينجا از id با حروف كوچك استفاده كردين، توي آدرس صفحه هم بايد بنويسيد id=5& نه ID=5&
2- اسامي فيلدهاي جدول رو هم در ديتابيس با حروف كوچك درنظر بگيرين (اسم فيلد id باشه نه ID)
توضيح: علت اينكه به شما پيغام ميده كه حذف شد اينه كه شرطي كه گذاشته بودين فقط چك ميكنه ببينه دستور MySQL شما خطاي گرامري نداشته باشه اما شرط دومي كه من گذاشتم (mysql_affected_rows) بررسي ميكنه ببينه چندتا ركورد تحت تأثير اين دستور قرار گرفتن. ممكنه دستور خطا نداشته باشه ولي كاري هم انجام نده (مثلاً ركوردي با اون id پيدا نشه). توي بررسي شرطها هم دقت كنيد. موفق باشيد.

ravand
چهارشنبه 04 آبان 1390, 19:23 عصر
اين كارهايي كه شما گفتيد من انجام دادم كار نكرد.
من قبلا توي همين تاپيك نوشته بودم كه من با استفاده از كد زير ميتونم تمام ركورد ها رو پاك كنم ولي نميشه كه يه ركورد رو پاك كرد.

$delete = mysql_query("DELETE FROM `ali` WHERE `id`") or die(mysql_error());
ضمنا من چند ماه پيش يه قسمت مديريت براي فرم ثبت نام ساخته بودم كه توش يه دكمه ي حذف داشت كه با كليك روي اون يك ركورد حذف ميشه . و الانم كار ميكنم وقتي روش كليك ميكنم به همين فايل ديليتي كه توي همين تاپيك گذاشتم متصل ميشه و ركورد رو پاك ميكنه ولي وقتي همين فايل رو جداگانه استفاده ميكنم كار نميكنه.

MMSHFE
پنج شنبه 05 آبان 1390, 16:08 عصر
با سلام، اگه ميشه ساختار جدول رو (شامل اسامي فيلدها و نام جدول با رعايت حروف كوچك و بزرگ) بنويسيد و بفرماييد چطور صفحه رو فراخواني ميكنيد (توي قسمت آدرس مرورگر چي مينويسيد) تا ببينيم مشكل از كجاست. موفق باشيد.

ravand
پنج شنبه 05 آبان 1390, 17:50 عصر
خيلي ممنون از تمام دوستاني كه تا اينجا منو راهنمايي كردن ، بالاخره از دوست گرامي آقاي مهدي يقوبي كه عضو اين سايت هم هستن پرسيدم و جواب رو گرفتم . اين كدي كه گذاشتم همون كدي هست كه من مي خواستم . اين كد يكي يكي ركورد ها رو با هر بار رفرش يا اجراي فايل پاك ميكنه.


<?php
$mysql_host = "localhost";
$mysql_username = "root";
$mysql_password = "";
$mysql_name = "database";

$connect = mysql_connect($mysql_host, $mysql_username, $mysql_password);
mysql_select_db($mysql_name);

if(!$connect) {
die(mysql_error());
}
$id = $_GET['ID'];

$delete = mysql_query("delete from ali limit 1") or die(mysql_error());
echo mysql_error();
if($delete) {
echo ("Your request has been done. <a href=\"javascript<b></b>:history.go(-2)\">Back</a>");
}

else {
echo ("There is some problems. <a href=\"javascript<b></b>:history.go(-1)\">Back</a>");
}
?>

MMSHFE
پنج شنبه 05 آبان 1390, 18:52 عصر
دوست عزيز، كد فوق به خوبي هربار يك ركورد رو پاك ميكنه ولي اگه بخواين دقيقاً بگين كدوم ركورد پاك بشه، بايد دستور mysql_query رو اينطور بنويسيد:


<?php
$mysql_host = 'localhost';
$mysql_username = 'root';
$mysql_password = '';
$mysql_name = 'database';

mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Connection error');
mysql_select_db($mysql_name) or die('Database does not exist');

if(!isset($_GET['id'])) {
die('ID is not set');
}

$delete = mysql_query("DELETE FROM `ali` WHERE (`id`='{$_GET['id']}')");

if($delete !== false && mysql_affected_rows() > 0) {
echo 'Your request has been done. <a href="javascript<b></b>:history.go(-2)">Back</a>';
}
else {
echo 'There is some problems. <a href="javascript<b></b>:history.go(-1)">Back</a>';
}
?>

موقع فراخواني صفحه هم توي مرورگر بايد به انتهاي آدرس صفحه، id=5? رو اضافه كنيد و به جاي 5 شماره رديف موردنظر رو بنويسيد. براي مثال، اگه آدرس صفحه شما اينطوريه:
http://localhost/delete.php
بايد اينطوري فراخوانيش كنيد:
http://localhost/delete.php?id=5
موفق باشيد.

ravand
پنج شنبه 05 آبان 1390, 20:28 عصر
داداش نميدونم مشكل منه يا كدها مشكل داره ولي باور كنيد اون كدهايي كه خودم گذاشتم كار ميكنه ولي كدهاي شما كار نميكنه. و اين خطا رو ميده.

ID is not set
بهتره روي سيستم خودتون هم امتحان كنيد.

MMSHFE
جمعه 06 آبان 1390, 12:13 عصر
آدرس صفحه كه توي مرورگر نوشتين و صفحه باز شد و اين پيغام ظاهر شد چي هست؟ ميشه دقيقاً اينجا بنويسيد كه توي قسمت آدرس پنجره مرورگر چي نوشتين؟

ravand
جمعه 06 آبان 1390, 14:37 عصر
من همين نام فايل رو به همراه آدرس لوكال هاست نوشتم.
منظورتون اينه كه من بايد اينطوري مينوشتم؟

http://localhost/test.php?ID=12
خوب اين روش فقط يه ركورد رو پاك ميكنه و وقتي صفحه رفرش بشه ديگه اين ركورد وجود نداره كه پاكش كنه. روشي كه من پيش گرفتم بهتره. با هر بار رفرش يه ركوردي رو پاك ميكنه.

MMSHFE
شنبه 07 آبان 1390, 16:53 عصر
دقيقاً! بايد اينطوري بنويسيد:


http://localhost/test.php?id=5

و به جاي 5 شماره موردنظر خودتون رو بنويسيد تا همون ركورد رو حذف كنه. من نگفتم روش شما اشكال داره منتها در اون روش دقيقاً مشخص نيست هربار كدوم ركورد حذف ميشه و در بهترين حالت، هربار اولين ركورد رو حذف ميكنه و اولين ركورد هم بستگي به اين داره كه جدول براساس كدوم فيلد مرتب شده باشه. در كل نميتونم درك كنم چرا ميخواين هربار يك ركورد رو بدون مشخص كردن id اون حذف كنيد. روشي هم كه من گفتم اين مزيت رو داره كه اگه يك ركورد حذف شد، با اجراي دوباره صفحه (Refresh يا تايپ مجدد آدرس يا كليك دوباره روي لينك مربوطه)، ركوردهاي ديگه رو حذف نميكنه. درواقع هيچ ركوردي رو درصورت پيدا نكردن ركورد موردنظر، حذف نميكنه. موفق باشيد.

ravand
یک شنبه 08 آبان 1390, 21:54 عصر
ببخشيد يعني من هر بار كه بخوام يه ركورد رو پاك كنم بايد وارد سورس كدهام بشم و شماره ي آي دي رو عوض كنم؟ :لبخند:

MMSHFE
دوشنبه 09 آبان 1390, 11:08 صبح
برادر من، شما لازم نیست توی سورس کد وارد بشین و شماره آی دی رو عوض کنید. اگه میخواین رکورد 5 پاک بشه توی مرورگر بنویسید:
localhost/test.php?id=5
و اگه میخواین رکورد 7 رو حذف کنید، بنویسید:
localhost/test.php?id=7
به همین شکل، میتونید برای هر مطلب لینک حذف رو ایجاد کنید:


<?php
$result = mysql_query('SELECT * FROM `ali`);
if($result !== false && mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)) {
echo '<a href="test.php?id='.$row['id'].'">حذف مطلب شماره '.$row['id'].'</a><br/>'."\n";
}
mysql_free_result($result);
}
?>
موفق باشید.