PDA

View Full Version : چطور میشه کل و فقط تعدادی از رکورد های موجود در دیتابیس رو پاک کرد



hamidhassas
پنج شنبه 03 فروردین 1391, 20:13 عصر
من میخوام این اختیار رو به کاربر بدم که بتونه کل و یا تعدادی از رکورد هایی رو که در داخل دیتابیس وجود داره رو حذف کنه اون هم بدین صورت که در یک صحفه که فهرستی از رکورد ها وجود داره با زدن تیک کنار هر رکورد عمل انتخاب انجام بشه و بعد با کلیک روی یک دکمه به یک صفحه منتقل بشه که به اون گفته بشه این رکورد ها که با این موضوع هستند انتخاب شده اند حالا اگر مایل به حذف هستید بر روی دکمه زیر کلیک کنید و بعد تمام اون رکورد ها با هم پاک شوند.

لطفا از اول به صورت کامل توضیح جزء به جزء بدین تا دقیقا بفهمم که داره چه اتفاقی می افته بعد لطفا کدی را که قرار میدید در باره اون کد و کارهایی که انجام میده و قسمت های مختلفش توضیح بدین تا من هم یاد بگیرم

پیشاپیش ممنون

MMSHFE
جمعه 04 فروردین 1391, 10:34 صبح
دوست گرامی، موقع خوندن رکوردها از دیتابیس و درج اونها توی صفحه، یک چک باکس هم توی فرمتون بگذارین و اون رو بصورت آرایه ای قرار بدین و اندیسش رو id اون رکورد بگذارین. توی صفحه مقصد هم هر رکوردی که انتخاب شده بود رو حذف کنید. مثال:
ساخت فرم نمایش اطلاعات (delete.php) :


<!doctype html>
<html>
<head>
<title>Multiple Delete DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$users = mysql_query('SELECT * FROM `users` ORDER BY `id`');
if($users && mysql_num_rows($users) > 0) {
echo '<form action="delete_action.php" method="post">'.PHP_EOL;
echo '<table>'.PHP_EOL;
echo '<tr align="center" valign="middle"><th>Delete?</th><th>Name</th></tr>'.PHP_EOL;
while($user = mysql_fetch_assoc($users)) {
echo '<tr align="center" valign="middle">';
echo '<td><input name="id['.$user['id'].']" type="checkbox" value="true"/></td>';
echo '<td align="left">'.$user['name'].'</td>';
echo '</tr>'.PHP_EOL;
}
echo '</table>'.PHP_EOL;
echo '<input name="action" type="submit" value="Delete"/>'.PHP_EOL;
echo '<input name="action" type="submit" value="Delete All"/>'.PHP_EOL;
echo '</form>'.PHP_EOL;
}
?>
</body>
</html>

کد صفحه پردازش اطلاعات و حذف رکوردهای انتخاب شده (delete_action.php) :


<?php
if(isset($_POST['action'])) {
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
if($_POST['action'] == 'Delete All') {
mysql_query('TRUNCATE TABLE `users`');
}
elseif($_POST['action'] == 'Delete') {
if(isset($_POST['id']) && is_array($_POST['id'])) {
$ids = &$_POST['id'];
foreach($ids as $id => $value) {
if(is_numeric($id) && $value) {
$row_id = (int) $id;
mysql_query("DELETE FROM `users` WHERE (`id`='{$row_id}') ORDER BY `id` LIMIT 1");
}
}
}
}
}
header('Location: delete.php');
exit();
?>

برای کارهایی مثل قراردادن یک Check Box کلی که توسط اون، همه رکوردها انتخاب بشن یا از انتخاب خارج بشن هم باید از Javascript یا jQuery استفاده کنید.
موفق باشید.

MMSHFE
جمعه 04 فروردین 1391, 10:40 صبح
البته کد فوق در ساده ترین حالت نوشته شده و کنترلهای امنیتی مثل چک کردن Session مدیر و... توی اون انجام نشده و باید این کد رو امن کنید. موفق باشید.

hamidhassas
یک شنبه 06 فروردین 1391, 00:14 صبح
البته کد فوق در ساده ترین حالت نوشته شده و کنترلهای امنیتی مثل چک کردن Session مدیر و... توی اون انجام نشده و باید این کد رو امن کنید. موفق باشید.
برای کارهایی مثل قراردادن یک Check Box کلی که توسط اون، همه رکوردها انتخاب بشن یا از انتخاب خارج بشن هم باید از Javascript یا jQuery استفاده کنید.
موفق باشید.


ممنون واقعا لطف کردید.
اگه ممکنه ، میشه این دو توضیح بالا رو برام توضیح بدین و اگه شد برای هرکدام مثل پست های قبل نمونه کد رو برام بگزارید