حذف یک به یک هر یک از سطرهای جداول دیتابیس بسیار زمان بر است . حذف گروهی سطر های MySql در php را می توانیم با یک کلیک انجام دهیم و شدیدا پینهاد می شود برا هر قسمت مدیریت که نیاز به تغییرات است این مورد را برای راحتی کار پیاده سازی کنید . در این آموزش قصد داریم به شما نحوه حذف گروهی سطر های MySql را با استفاده از چک باکس ها نشان بدیم .
در این آموزش می خواهیم سطر (record) های موجود در جدول users را با استفاده از mysqli و php نمایش بدیم . همچنین برای هر سطر یک چک باکس قرار می دهیم . چک باکس ها برای انتخاب چندین رکورد از لیست یوزر ها استفاده خواهند شد . همچنین یک چک باکس برای انتخاب همه سطرها با یک کلیک را قرار خواهیم داد. همین که دکمه delete کلیک شد , یک پیام از نوع alert را برای دریافت تاییدیه نهایی از کاربر , نمایش می دهیم . بعد از تایید , موارد انتخاب شده از دیتابیس حذف خواهند شد.
حذف گروهی سطر های MySql در php
جدول users :
در جدول users ما فیلدهای first_name , last_name , email و phone را داریم .
1 2 3 4 5 6 7 8 9 10 11 |
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `last_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `phone` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Active, 0=Deactive', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
برای پیاده سازی اسکریپت حذف گروهی سطر های MySql در php باید ۳ فایل برای داشتن یک ساختار منظم داشته باشیم . فایل ها در زیر لیست شده اند .
فایل dbConfig.php :
این فایل برای اتصال به دیتابیس mysql توسط php استفاده شده است.
1 2 3 4 5 6 7 8 9 10 |
<?php $dbHost = 'localhost'; //database host name $dbUser = 'root'; //database username $dbPass = ''; //database password $dbName = 'netparadis'; //database name $conn = mysqli_connect($dbHost,$dbUser,$dbPass,$dbName); if(!$conn){ die("Database connection failed: " . mysqli_connect_error()); } ?> |
فایل index.php :
در اول خط ما کتابخانه jQuery را فراخوانی کردیم . تابع delete_confirm() جاواسکریپت برای نمایش پاپ آپ تاییدیه حذف استفاده شده است .
در بخش $(document).ready(function(){}); چند خط کد برای پیاده سازی بخش انتخاب همه چک باکس ها با یک کلیک نوشتیم .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<script src="jquery.min.js"></script> <script type="text/javascript"> function deleteConfirm(){ var result = confirm("Are you sure to delete users?"); if(result){ return true; }else{ return false; } } $(document).ready(function(){ $('#select_all').on('click',function(){ if(this.checked){ $('.checkbox').each(function(){ this.checked = true; }); }else{ $('.checkbox').each(function(){ this.checked = false; }); } }); $('.checkbox').on('click',function(){ if($('.checkbox:checked').length == $('.checkbox').length){ $('#select_all').prop('checked',true); }else{ $('#select_all').prop('checked',false); } }); }); </script> |
برای دسترسی به دیتابیس mysql و انجام عملیات حذف گروهی سطر های MySql در php فایل dbConfig.php را فراخوانی (include) کردیم . با استفاده از MySQL تمام اطلاعات کاربران را از جدول users خوانده و در هر سطر از جدول توسط php نمایش می دهیم .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php include_once('dbConfig.php'); $query = mysqli_query($conn,"SELECT * FROM users"); ?> <form name="bulk_action_form" action="action.php" method="post" onsubmit="return deleteConfirm();"/> <table class="bordered"> <thead> <tr> <th><input type="checkbox" name="select_all" id="select_all" value=""/></th> <th>First Name</th> <th>Last Name</th> <th>Email</th> <th>Phone</th> </tr> </thead> <?php if(mysqli_num_rows($query) > 0){ while($row = mysqli_fetch_assoc($query)){ ?> <tr> <td align="center"><input type="checkbox" name="checked_id[]" class="checkbox" value="<?php echo $row['id']; ?>"/></td> <td><?php echo $row['first_name']; ?></td> <td><?php echo $row['last_name']; ?></td> <td><?php echo $row['email']; ?></td> <td><?php echo $row['phone']; ?></td> </tr> <?php } }else{ ?> <tr><td colspan="5">No records found.</td></tr> <?php } ?> </table> <input type="submit" class="btn btn-danger" name="bulk_delete_submit" value="Delete"/> </form> |
صفحه action.php :
همین که دکمه حذف کلیک شد و اطلاعات فرم به فایل action.php ارسال می شود . در این فایل ما تمام id سطر های انتخاب شده را به صورت آرایه ای دریافت و آن را با یک حلقه foreach بر اساس ID های آنها از دیتابیس mysql حذف می کنیم .زمانی که عملیات حذف گروهی سطر های MySql توسط php تمام شد , ما پیام موفقیت را در یک SESSION ذخیره و کاربر را به صفحه index.php هدایت می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php session_start(); include_once('dbConfig.php'); if(isset($_POST['bulk_delete_submit'])){ $idArr = $_POST['checked_id']; foreach($idArr as $id){ mysqli_query($conn,"DELETE FROM users WHERE id=".$id); } $_SESSION['success_msg'] = 'Users have been deleted successfully.'; header("Location:index.php"); } ?> |
همانطور که دیدید به چه سادگی قابلیت حذف گروهی سطر های MySql در php را با یک حلقه پیاده سازی کردیم . راه دیگر برای حذف سطر ها با استفاده فقط کویری SQL به اینصورت است :
1 2 3 4 5 6 7 8 |
DELETE FROM tablename WHERE id IN ( 1, 2, 3, 4, 5, 6 ); |
امیدوارم از آموزش حذف گروهی سطر های MySql با دو روش استفاده از کویری sql و حلقه php لذت برده باشید.
هر گونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .
دانلود سورس کد حذف گروهی سطر های MySql در php
موفق و پیروز باشید.
سلام اقای شفیعی.
من میخواستم عکس هایی که تو فولدر اپلود هستش بعد از ۱ روز پاک بشه.
چون حجم عکس ها بعد از یه مدت زیاد میشه و نیاز به پاک کردن عکس ها هست.
از چه کدی میشه استفاده کرد؟خود mysql تنظیمات خاصی داره یا باید با php کد بنویسم.
سلام. اول باید تو جدول عکس ها تو دیتابیس یه ستون اضافه کنید به اسم created_at که زمان ذخیره شدن تصویره یا اینکه expire_at که زمان حذف شدنش هست
حالا زمانی که تصویر رو آپلود میکنید اسم و آدرس عکس تو فولدرهاتون به همراه اون تاریخ ها بصورت timestamp ذخیره میکنید
آموزش توابع تاریخ و زمان در php
بعد یه فایل php جدا تو پروژتون بسازید تو این فایل یه کویری بزنید به دیتابیس و لیست تصاویری که زمانش یک روز گذشته رو بدست بیارید و یه حلقه بزنید تا دونه به دونه اینارو از هاست پاک کنه با تابع unlink
حذف فایل در php
این فایل php رو تو کرون جاب میزارید تا روزی یا دوروز یه بار اجرا بشه
https://mizbanfa.net/blog/hosting/cpanel/cpanel-cron-jobs-tutorial
ممنون اقای شفیعی بابت راهنمایی.