آگهی
article

آموزش حذف گروهی اطلاعات از MySQL با استفاده از چک باکس

mysql-multiple-checkbox

یکی از مزایای استفاده از پایگاه داده و سیستم های داینامیک در مقایسه با شیوه های سنتی و استاتیک مدیریت اطلاعات، افزایش سرعت انجام کارها و قابلیت پردازش چندین دستور مختلف در یک لحظه و صرفه جویی در وقت است، به طور مثال فرض کنید می خواهیم اسامی تعدادی از کاربران سایتمان را از لیستی حذف کنیم، انجام این کار به شیوه سنتی مستلزم صرف زمان بسیار و دردسرهای خاص خودش است که باعث می شود ضریب اشتباه نیز افزایش یابد، اما کافی است یک بار در نوشتن کدی داینامیک برای حذف سیستماتیک و گروهی ردیف ها دقت کنیم تا از آن در دفعات بعدی و به اشکال مختلف، چندین و چند بار استفاده نمائیم، از این رو در این مطلب می خواهیم یکی از پرکاربرد ترین شیوه ها یعنی نحوه حذف گروهی اطلاعات از دیتابیس را به وسیله چک باکس چند گانه (Multiple Checkbox) آموزش دهیم.

ساخت دیتابیس، جدول و نمونه اطلاعات فرضی


برای درک بهتر این شیوه، آموزش را در قالب یک مثال ادامه می دهیم، ابتدا با استفاده از منوی Databases در برنامه phpMyAdmin یک پایگاه داده فرضی با نام db_test می سازیم، ترجیحا این کار را در لوکال هاست (برنامه WampServer) با درج آدرس
localhost/phpmyadmin
در مرورگر انجام می دهیم اما اگر بر روی سرور آنلاین باشیم احتمال دارد این قسمت توسط پشتیبانی فنی هاست محدود و غیرفعال شده باشد که در این صورت باید از طریق کنترل پنل اصلی سایتمان، بخش مدیریت Database ها را انتخاب و یک پایگاه داده جدید ایجاد نمائیم، فراموش نکنیم که در همین قسمت باید یک کاربر نیز به پایگاه داده جدید اختصاص دهیم، پس از ساخت دیتابیس در قسمت SQL برنامه phpMyAdmin کد زیر را درج و اجرا می کنیم تا جدولی با نام tbl_test با مقادیر پیش فرض جهت نمونه در آن ایجاد شود (ساخت جدول و ستون ها را به صورت دستی نیز می توانیم انجام دهیم، برای ایجاد جدول به صورت دستی بر روی دیتابیس مورد نظر در برنامه phpMyAdmin کلیک کرده، از قسمت Create table نام جدول و تعداد ستون ها را مشخص می کنیم، سپس بر روی دکمه Go کلیک کرده و پس از اعمال تنظیمات مربوط به هر ستون، در نهایت با دکمه Save جدول و ستون ها را ایجاد می کنیم، اگر هم جدول را بدون ستون ها ایجاد کرده باشیم یا بخواهیم ستون های دیگری به آن اضافه کنیم، ابتدا جدول مورد نظر را با کلیک بر روی نام آن انتخاب و سپس در منوی Structure از امکانات بخش Add column که معمولا در انتهای لیست ستون ها است می توانیم استفاده کنیم، برای درج نمونه ردیف های اطلاعات نیز منوی Insert کاربرد دارد):
CREATE TABLE `tbl_test` (
 `id` INT NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(255) NOT NULL DEFAULT '',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM;
INSERT INTO `tbl_test` VALUES (1, 'user_1');
INSERT INTO `tbl_test` VALUES (2, 'user_2');
INSERT INTO `tbl_test` VALUES (3, 'user_3');
INSERT INTO `tbl_test` VALUES (4, 'user_4');
INSERT INTO `tbl_test` VALUES (5, 'user_5');
INSERT INTO `tbl_test` VALUES (6, 'user_6');

کد PHP و HTML پایه برای حذف گروهی اطلاعات


پس از ساخت دیتابیس، جدول و INSERT نمونه اطلاعات فرضی، باید رابط کاربری HTML و کدنویسی PHP سمت سرور را آماده کنیم، برای این منظور ابتدا کد پایه زیر را که جهت درک بهتر روند کار تا حد امکان مختصر شده و صرفا شامل مراحل ضروری دریافت و حذف اطلاعات از جمله متغیرهای دریافت پارامترها در هنگام ارسال فرم با متد POST، تنظیمات مربوط به اتصال به پایگاه داده، دریافت اسامی کاربران و نمایش آنها به صورت ردیف به ردیف در صفحه مرورگر، ویژگی های تعاملی مورد نیاز مانند دکمه های چک باکس، دکمه ارسال فرم و پرس و جوی دریافت و حذف اطلاعات با بررسی توسط دستورات شرطی (if، else و...) و مواردی از این دست است را در یک فایل PHP با نام دلخواه (به طور مثال delete.php) درج و در ادامه این کد را توسعه داده و موارد پیشرفته تری که ممکن است مورد نیاز کاربران مختلف باشد را اضافه می کنیم:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | حذف گروهی اطلاعات از دیتابیس با چک باکس - کد پایه</title>
<!-- Webgoo.ir -->
<style type="text/css">
.row-container{
    direction:rtl;
}
.row-1 {
    background:#FFFFFF;
}
.row-2 {
    background:#CCCCCC;
}
</style>
</head>
<body>
<div class="row-container">
<?php
//تنظیمات پایگاه داده
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "db_test";
$tbl_name = "tbl_test";

//متغیرهای تعیین رنگ ردیف ها
$color_1 = '1';
$color_2 = '2';
$color = $color_1;

//دریافت پارامترها در هنگام ارسال فرم
@$users = $_POST['users'];
@$check = $_POST['check'];

//اتصال با دیتابیس
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(!$conn) {
    echo "Error!: " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    //اجرای پرس و جوی حذف ردیف ها در صورت ارسال فرم
    if($check == 1){
        $del_param = null;
        $count_users = count($users);
        
        for($i = 0; $i < $count_users; $i++){
            $del_param .= "id=$users[$i]";
            if($i + 1 < $count_users){
                $del_param .= " OR ";
            }
        }
    
        if($count_users > 0){
            $query = mysqli_query($conn, "DELETE FROM $tbl_name WHERE $del_param");
            if(!$query) {
                echo "Error!: " . mysqli_error($conn) . '<br>';
            } else{
                echo 'تعداد ' . $count_users .' ردیف با موفقیت حذف شد!' . '<br>';
            }
        } else{
            echo 'فیلدی برای حذف انتخاب نشده است!' . '<br>';
        }
    }
    
    //پرس و جوی دریافت ردیف ها از دیتابیس و نمایش به صورت ردیف به ردیف
    $query = mysqli_query($conn, "SELECT id, name FROM $tbl_name ORDER BY id ASC LIMIT 10");
    if(!$query) {
        echo "Error!: " . mysqli_error($conn);
    } elseif(!mysqli_num_rows($query) > 0){
        echo 'کاربری برای نمایش وجود ندارد!' . '<br>';
    } else {
        echo '<form action="#" method="post">' . "\n";
                
        while($row = mysqli_fetch_array($query)){
            echo '<div class="row-' . $color . '">' . "\n" .
            '<input name="users[]" type="checkbox" value="' . $row['id'] . '">نام کاربر: ' . $row['name'] . "\n" .
            '</div>' . "\n";
            
            if($color == $color_1){
                $color = $color_2;
            } else{
                $color = $color_1;
            }
        }
        
        echo '<input name="check" type="hidden" value="1">' . "\n";
        echo '<input type="submit" value="حذف">' . "\n";
        echo '</form>' . "\n";
    }
}
?>
</div>
</body>
</html>
همان طور که گفتیم کد بالا شامل دو قسمت اصلی است، ابتدا فرم HTML و اسامی موجود در دیتابیس به صورت ردیف به ردیف در صفحه مرورگر چاپ می شود تا کاربر پس از انتخاب موارد مورد نظر خود و کلیک بر روی دکمه حذف، اسامی را به صورت یک آرایه به سرور ارسال کند، در سرور اطلاعات ارسال شده با متد POST دریافت شده و پردازش های مورد نیاز صورت می گیرد، برای درک بهتر این شیوه کد را به صورت قسمت به قسمت بررسی می کنیم:
- ابتدا مواردی که باید در قسمت تگ html و body درج شوند را قرار می دهیم، این موارد شامل تیتر دلخواه صفحه و استایل CSS است که در فرمت بندی خروجی کار نقش ایفا می کنند، چند کلاس ساده جهت نمونه درج شده که می توانید بر حسب نیاز آنها را تغییر دهید.
- سپس اطلاعات اتصال به پایگاه داده را در قسمت مربوط به آن تنظیم می کنیم، این اطلاعات شامل نام میزبان (معمولا localhost)، نام کاربری و کلمه عبور جهت اتصال به دیتابیس (معمولا در لوکال هاست عبارت root و بدون کلمه عبور) و عنوان دیتابیس مورد نظر است، در همین قسمت نام جدول را نیز در متغیر tbl_name تعریف کرده ایم، کد از اکستنشن MySQLi در حالت برنامه نویسی رویه ای (Procedural) استفاده می کند، قاعدتا اگر با حالت شی گرا یا اکستشن PDO آشنا باشیم، تبدیل این کد کار ساده ای خواهد بود.
- در ادامه، دستورات مربوط به قسمت حذف ردیف ها را نوشته ایم، این بخش از برنامه تنها زمانی اجرا خواهد شد که کاربر فرم را ارسال کرده و متغیر check برابر با 1 باشد، لذا تا زمانی که کاربر فرم را ارسال نکند، این بخش در فرآیند اجرا عملا تاثیری نخواهد داشت، در همین قسمت برای بهینه بودن کدنویسی تعداد فیلدهای ارسالی کاربر را شمارش کرده و در حلقه for برای بخش WHERE در دستور DELETE پارامترهای داینامیک نوشته ایم، به طور مثال اگر کاربر سه فیلد را انتخاب کند متغیر del_param به شکل زیر ایجاد و جایگزین می شود:
id=1 OR id=4 OR id=6
با این روش برای هر تعداد فیلدی که کاربر ارسال کند تنها یک پرس و جوی DELETE اجرا خواهد شد و از منابع دیتابیس کمتر استفاده شده و در نتیجه سرور فشار کمتری را متحمل می شود که این چاره اندیشی برای بهینه بودن برنامه های با تعداد کاربر بالا ضروری است.
- بخش اصلی دیگر مربوط به دستور SELECT و دریافت مشخصات کاربران از دیتابیس است که در حلقه while این کار را انجام داده و خروجی HTML مورد نیاز را با استفاده از اطلاعات موجود در دیتابیس (ستون id و name) به صورت دلخواه ایجاد کرده ایم، با کمی سلیقه می توانیم به کمک استایل CSS شکل و فرم کار را سفارشی سازی کنیم، در اینجا نیز با مقداردهی چند متغیر ردیف ها را با دو رنگ متمایز کرده ایم که در خروجی به شکل نمونه زیر چاپ می شوند:
<div class="row-1">
<input name="users[]" type="checkbox" value="1">نام کاربر: user_1
</div>
<div class="row-2">
<input name="users[]" type="checkbox" value="2">نام کاربر: user_2
</div>
<div class="row-1">
<input name="users[]" type="checkbox" value="3">نام کاربر: user_3
</div>
<div class="row-2">
<input name="users[]" type="checkbox" value="4">نام کاربر: user_4
</div>
اگر به کلاس ها دقت کنیم، ردیف به ردیف عدد متناظر کلاس با شماره های 1 و 2 جایگزین شده (row-1 و row-2) که با تعریف این کلاس ها در قسمت CSS می توانیم دو رنگ مجزا برای ردیف ها داشته باشیم که این به زیبایی و خوانا شدن رابط کاربری کمک می کند.
نکته: برای ارسال گروهی فیلدهای input از نوع checkbox باید در انتهای قسمت name آنها از علامت [] استفاده کنیم:
<input name="users[]" type="checkbox" value="1">
با این کار مقدار فیلدها در قالب یک آرایه به سرور ارسال می شود و می توان در سرور با استفاده از حلقه for یا foreach مقادیر را استخراج کرد، در این حالت چک باکس ها را در اصطلاح چندگانه (Multiple) یا گروهی اطلاق می کنند.

توسعه کد HTML و PHP حذف گروهی اطلاعات با امکانات بیشتر


برای تکمیل آموزش، کد بالا را با چند امکان کاربردی دیگر توسعه داده ایم که در زیر ملاحظه می کنید، این امکانات بسته به نیاز و هدفمان می توانند به نحو دلخواه به کد اضافه شوند، برای نمونه امکان انتخاب و عدم انتخاب چک باکس ها به صورت گروهی (Toggle Checkbox) با جاوا اسکریپت را به کد اضافه کرده ایم، قابلیت اعتبارسنجی و نمایش پیام اخطار در حالتی که کاربر هیچ کدام از چک باکس ها را انتخاب نکرده اما بر روی دکمه حذف کلیک می کند و هچنین در نظر گرفتن حالت حذف دو مرحله ای با پرسش از کاربر:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | حذف گروهی اطلاعات از دیتابیس با چک باکس - توسعه کد با امکانات بیشتر</title>
<!-- Webgoo.ir -->
<style type="text/css">
.row-container{
    direction:rtl;
}
.row-1 {
    background:#FFFFFF;
}
.row-2 {
    background:#CCCCCC;
}
#confirm-id{
    display:none;
    position:absolute;
    height:50px;
    width:200px;
    top:50%;
    left:50%;
    margin-top:-25px;
    margin-left:-100px;
    text-align:center;
    background:#E5E5E5;
    border:1px solid #666666;
}
</style>
<script type="text/javascript">
var checked = false;
function checkboxToggle(name){
    var form = document.forms[name];
    
    if(checked == false) {
        checked = true
    } else {
        checked = false
    }

    for(var i = 0; i < form.elements.length; i++) {
        if(form.elements[i].type == 'checkbox'){
            form.elements[i].checked = checked;
        }
    }
}

function formCheck(form){
    var check_one = false;
    var check_confirm;
    
    for(var i = 0; i < form.elements.length; i++) {
        if(form.elements[i].type == 'checkbox' && form.elements[i].checked){
            check_one = true;
            break;
        }
    }
    
    if(check_one){
        check_confirm = 'آیا مطمئن هستید؟<br>';
        check_confirm += '<input type="button" value="بله" onclick="formSubmit(\'' + form.name + '\');">';
        check_confirm += '<input type="button" value="خیر" onclick="closeConfirm(\'confirm-id\');">';
        
        document.getElementById('confirm-id').innerHTML = check_confirm;
        document.getElementById('confirm-id').style.display = 'block';
    } else{
        alert('لطفا حداقل یک کاربر را انتخاب نمائید!');
    }
}

function formSubmit(name){
    closeConfirm('confirm-id');
    document.forms[name].submit();
}

function closeConfirm(id){
    document.getElementById(id).style.display = 'none';
}
</script>
</head>
<body>
<div class="row-container">
<?php
//تنظیمات پایگاه داده
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "db_test";
$tbl_name = "tbl_test";

//متغیرهای تعیین رنگ ردیف ها
$color_1 = '1';
$color_2 = '2';
$color = $color_1;

//دریافت پارامترها در هنگام ارسال فرم
@$users = $_POST['users'];
@$check = $_POST['check'];

//اتصال با دیتابیس
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(!$conn) {
    echo "Error!: " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    //اجرای پرس و جوی حذف ردیف ها در صورت ارسال فرم
    if($check == 1){
        $del_param = null;
        $count_users = count($users);
        
        for($i = 0; $i < $count_users; $i++){
            $del_param .= "id=$users[$i]";
            if($i + 1 < $count_users){
                $del_param .= " OR ";
            }
        }
    
        if($count_users > 0){
            $query = mysqli_query($conn, "DELETE FROM $tbl_name WHERE $del_param");
            if(!$query) {
                echo "Error!: " . mysqli_error($conn) . '<br>';
            } else{
                echo 'تعداد ' . $count_users .' ردیف با موفقیت حذف شد!' . '<br>';
            }
        } else{
            echo 'فیلدی برای حذف انتخاب نشده است!' . '<br>';
        }
    }
    
    //پرس و جوی دریافت ردیف ها از دیتابیس و نمایش به صورت ردیف به ردیف
    $query = mysqli_query($conn, "SELECT id, name FROM $tbl_name ORDER BY id ASC LIMIT 10");
    if(!$query) {
        echo "Error!: " . mysqli_error($conn);
    } elseif(!mysqli_num_rows($query) > 0){
        echo 'کاربری برای نمایش وجود ندارد!' . '<br>';
    } else {
        echo '<form name="del-form" action="#" method="post">' . "\n";
        echo '<input id="del-toggle" type="checkbox" onclick="checkboxToggle(\'del-form\');">' . "<hr>\n";
        
        while($row = mysqli_fetch_array($query)){
            echo '<div class="row-' . $color . '">' . "\n" .
            '<input name="users[]" type="checkbox" value="' . $row['id'] . '">نام کاربر: ' . $row['name'] . "\n" .
            '</div>' . "\n";
            
            if($color == $color_1){
                $color = $color_2;
            } else{
                $color = $color_1;
            }
        }
        
        echo '<input name="check" type="hidden" value="1">' . "\n";
        echo '<hr><input type="button" value="حذف" onclick="formCheck(this.form);">' . "\n";
        echo '</form>' . "\n";
        echo '<div id="confirm-id"></div>' . "\n";
    }
}
?>
</div>
</body>
</html>
برای اعمال این نوع امکانات معمولا باید از کدنویسی سمت کاربر و به طور خاص کدنویسی جاوا اسکریپت بهره جست، در نمونه کد بالا نیز برای ایجاد حالت انتخاب چندگانه، یک فیلد input از نوع checkbox در نظر گرفتته ایم که با رویداد onclick تابع checkboxToggle را فراخوانی می کند:
<input id="del-toggle" type="checkbox" onclick="checkboxToggle('del-form');">
آرگیومنت این تابع مقادیر name فرم HTML است که در این مثال با عبارت del-form مشخص است، در تابع با متد document.forms به فرم دسترسی پیدا کرده و بررسی می کنیم که اگر چک باکس های فرم مد نظر حالت checked (تیک فعال) نداشته باشند، آنها را به صورت checked تنظیم کنیم و برعکس اگر به صورت checked بودن تیک آنها را برداریم، تابع دیگر formCheck است که در زمان کلیک کاربر بر روی دکمه حذف فراخوانی می شود، آرگیومنت این تابع همان فرم HTML است که این بار به صورت آبجکت به تابع داده شده، در واقع دو روش زیر هر دو یک کارکرد دارند و صرفا به جهت جنبه های آموزشی از دو شیوه به ظاهر متفاوت در دو تابع استفاده شده:
document.forms[name]
this.form

<input type="button" value="حذف" onclick="formCheck(this.form);">
تابع formCheck از چند بخش تشکیل شده، در یک قسمت با متغیر check_one بررسی می کنیم که کاربر حداقل یک فیلد را انتخاب کرده باشد، در غیر اینصورت پیام قسمت alert اجرا می شود، در صورتی که کاربر حداقل یک فیلد را انتخاب کرده باشد یک کادر سفارشی با id دلخواه (در اینجا confirm-id) نمایش می دهیم، در این کادر با دو تابع formSubmit و closeConfirm رفتار مد نظر را بر اساس انتخاب کاربر اعمال می کنیم.
sectionدسته بندی: آموزش کاربردی » MySQL
related مطالب بیشتر:
» هوشمند سازی پنل ورود و خروج سایت
» تعویض کد امنیتی Captcha با Ajax و MySQL
» جستجو در مطالب سایت با استفاده از MySQL Full-Text
» آموزش ساخت پنل ورود و خروج سایت با PHP و MySQL
» نحوه رسم چارت و نمودار آماری با PHP و MySQL
commentنظرات (۵۲ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: سامان
زمان: ۲۳:۴۱:۱۵ - تاریخ: ۱۳۹۴/۰۸/۲۲
ممنونم بابت پاسخ .
نویسنده: محمود
زمان: ۱۲:۰۵:۰۱ - تاریخ: ۱۳۹۵/۰۳/۲۶
سلام.
شما برای انتخاب و شمارش چک باکس ها از حلقه for به صورت زیر استفاده کردین
if($checkbox){
//شمارش تعداد چک باکس های انتخاب شده
@$count = count($checkbox);
for($i = 0; $i < $count; $i++){
@$del_id = $checkbox[$i];
$sql = "DELETE FROM $tb_name WHERE id = '$del_id'";
$result = mysql_query($sql) or die("حذف ردیف های دیتابیس میسر نیست");
}
//رفرش صفحه در صورت اجرای موفقیت آمیز کد
if($result){
echo '<meta http-equiv="refresh" content="0;URL=checkbox.php">';
}
}
من معمولا از حلقه foreach به صورت زیر استفاده می کنم
$pets="";
$flag=0;
foreach($petathome as $entry){
$pets .= $entry.", ";
$flag=1;
}
if($flag==1){
$pets=rtrim($pets);
}
به کار بردن کدام روش هم از لحاظ سرعت و هم از لحاظ امنیت بهتره؟
ممنون
پاسخ: 
کارکرد این دو دستور مشابهت های زیادی با هم دارند و اغلب به جای هم قابل استفاده هستند، هر دو به لحاظ استفاده استاندار هستند و به خودی خود مشکل امنیتی ندارند! منتها حلقه for می تواند برای مواقعی که کلید آرایه عددی است یا حلقه نیاز به شروع، توقف و پایان با یک مکانیزم عددی دارد، مناسبتر باشد، در مقابل حلقه foreach برای مواقعی که کلید و مقدار آرایه یک مقدار غیر عددی است مناسبتر خواهد بود.
نویسنده: محمود
زمان: ۱۲:۱۱:۵۶ - تاریخ: ۱۳۹۵/۰۳/۲۶
سلام مجدد.
من یه فرم دارم که کاربر از بین حدود 50 تا چک باکس چند تا شو انتخاب میکنه و اونها به صورت :
check1,check2,check3,...
توی یه ستون از یه سطر جدول شماره 1 دیتابیس ذخیره میشن.
حالا یه جدول دیگه دارم (شماره 2) که نظیر هر check یه متن توش ذخیره شده.
از چه کدی (کوئری) استفاده کنم که وقتی عبارت
check1,check2,check3,...
از جدول شماره 1
فراخوانی میشه نظیرهای اونها توی جدول شماره 2 نمایش داده بشن.
مثلا بشه
Ali,Mahmood,Hoseen,...
پاسخ: 
دقیق متوجه ساختار دیتابیس و سوالتان نشدیم! منظورتان از "نظیر" مشخص نیست! آیا شماره چک باکس با شماره متن مورد نظر بر اساس تعداد "," ملاک است؟ پاسخ همه این موارد باید روش و صریح باشد تا بتوان راه حلی پیشنهاد کرد! در حالت کلی می توان اطلاعات ردیف را به صورت کلی دریافت (چون در واقع یک ردیف است و تفکیک اطلاعات در پرس و جو کمکی به افزایش سرعت و... نمی کند) و سپس بر اساس علامت "," آنها را با توابعی مانند explode در PHP تجزیه و سپس بر اساس شماره چک باکس، مقادیر مورد نظر را دریافت کرد.
نویسنده: محمود
زمان: ۱۰:۲۵:۳۲ - تاریخ: ۱۳۹۵/۰۳/۲۸
ممنون به خاطر پاسخ هایی که دادین.
منظورم از نظیر اینه که جدول شماره 2 به این صورته :
check 1      Ali
check 2 Mahmood
check 3 Hoseen
حالا می خوام به جای check1, check2, check3 ,... عبارت Ali, Mahmood, Hoseen,... نمایش داده بشه.
نمی دونم منظورمو رسوندم یا نه.
پاسخ: 
برای این نوع ساختار هیچ کد ساده ای وجود ندارد، ابتدا باید ردیف اصلی استخراج شود و اطلاعات هر چک باکس در قالب آرایه تجزیه شده و برای هر مقدار در حلقه یک پرس و جو برای پیدا کردن نظیر آن اجرا شود و در پر س و جو از شیوه های ترکیبی به طور مثال LIKE یا دستورات Regex استفاده کنید، این شیوه ساختار به هیچ وجه توصیه نمی شود و کار جستجوی اطلاعات را با مشکلات متعددی روبرو می کند، به فرض هم که با دستورات فوق ردیف متناظر پیدا شود نیز مجدد نیاز به کدنویسی و تجزیه اطلاعات است، دقیقا هدفتان را نمی دانیم اما سعی کنید ساختار تفکیک شده تری داشته باشید که جستجو در بین محتوا به این شکل نباشد و ستون ها و مقادیر از هم در ردیف های مختلف متمایز باشند.
نویسنده: محمود
زمان: ۱۳:۱۸:۲۵ - تاریخ: ۱۳۹۵/۰۳/۳۰
ممنونم.
نویسنده: mahdi
زمان: ۱۶:۳۰:۲۷ - تاریخ: ۱۳۹۵/۰۴/۲۲
سلام چه جوری میشه اطلاعات به وسیله کمبو باکس insert تو دیتابیس
و همین طور search؟
کلا با کمبو باکس مشکل دارم
پاسخ: 
بر اساس پارامتر name تگ select می توانید مقادیر value مربوط به option را دریافت و در پرس و جوی خود مانند حالت معمول استفاده نمائید، مثال:
<select name="yourname">
<option value="value1">Value 1</option>
<option value="value2" selected="selected">Value 2</option>
<option value="value3">Value 3</option>
</select>
در کدهای PHP:
<?php
$yourname = $_POST['yourname'];
?>
در نمونه پرس و جو:
SELECT * FROM tbl WHERE col = $yourname;
نکته: این صرفا یک نمونه کد و جهت آشنایی بیشتر است، قاعدتا در یک کد کاربردی باید موارد دیگری از جمله ایمن سازی متغیرها قبل از استفاده در پرس و جو را با توجه به اکستنشن مورد نظر (MySQL, MySQLi, PDO)، رعایت کنید.
نویسنده: مهیار
زمان: ۱۳:۴۸:۰۶ - تاریخ: ۱۳۹۵/۱۱/۱۵
با درود
عزیز من خیلی جاهای دیگه هم دیدم که علامت @ رو میزارن قبل متغیر ها این به چه معناست و کجاها میشه (یا باید) استفاده کرد
ممنون
پاسخ: 
این علامت برای عدم نمایش خطاهای احتمالی مربوط به آن قسمت از کد در PHP است، استفاده از این علامت اختیاری است، به طور مثال گاهی ممکن است مقادیر یک متغیر وابسته به یک آدرس URL خارجی یا کلیدی از یک آرایه باشد (به طور مثال نام فیلد checkbox از آرایه متد POST در PHP)، در اینصورت اگر به هر دلیل مقادیر مورد انتظار از URL یا آرایه دریافت نشود (به فرض اگر فرم هنوز ارسال نشده باشد، کلید checkbox نیز در متد POST وجود ندارد)، PHP در حالت عادی خطایی در مرورگر چاپ خواهد کرد، اما با درج این علامت خطا از دید کاربر مخفی خواهد شد، دقت کنید که استفاده از این علامت باید با آگاهی قبلی انجام شود و در هنگام خطایابی باید حذف یا به روش دیگری بی اثر گردد!
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




3 × 8
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form حامد
در:
عالی بود
۲۱:۳۸:۳۱ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام خیلی ممنون بابت پاسخ سریعتون خیلی دنبال همین دو خط کد بودم برای یادگیری سریع ریجکس ولی با سرچ پیدا نکردم و...
۱۸:۰۳:۴۳ ۱۳۹۸/۱۱/۰۷

form فرید
در:
درود بشما، میخواستم بدونم مثل کلمه @، کلمه ایی ساین هم داریم؟ با تشکر
۱۲:۱۹:۰۷ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام میشه لطفا به سوالم جواب بدید من می خوام با استفاده از عبارات با قاعده تمام تگ های html رو تشخیص بدم...
۱۰:۱۳:۰۵ ۱۳۹۸/۱۱/۰۷

form PewDiePie
در:
سلام چطور می تونم این کد رو یه لینک هم بهش اضافه کنم یعنی این که وقتی عکس رو می بینی طرف بتونه...
۲۳:۳۶:۲۶ ۱۳۹۸/۱۱/۰۶

form رسول
در:
سلام میخوام بجای نمایش متن، متن موجود در یه لینکو بهم نشون بده ممنون میشم کمکم کنید
۱۳:۳۸:۱۸ ۱۳۹۸/۱۱/۰۶

form حسن
در:
من مطابق کد نوشته شده شما میخواستم آدرس
۱۴:۱۰:۱۳ ۱۳۹۸/۱۱/۰۵

form saemrezaei
در:
سلام واقعا عالییه خیلی استفاده کردم به وبلاگم سر بزن لطفا.
۱۳:۳۷:۳۴ ۱۳۹۸/۱۱/۰۵

form نصراله رضایی
در:
سلام در ادمین های گذشته که باز می کنم تصاویر مشاهده نمی شود و من را به آدرس Huge domains.com ارجاع می...
۲۲:۳۹:۵۳ ۱۳۹۸/۱۱/۰۴

form نقدی زاده
در:
واقعا مرسی یه overflow-y:hidden به body دادم اسکرل افقی برای صفحه نمایش تبلت از بین رفت
۱۴:۴۴:۱۳ ۱۳۹۸/۱۱/۰۴

form وحید پوربشیری
در:
سلام لطفا یکی که خوب جاوا اسکریپت بلده بیاد به این آیدی ت.ل.گ.ر.ا.م Alpha2020@ یه کد برام بنویسه پول هم میدم
۱۱:۱۲:۳۲ ۱۳۹۸/۱۱/۰۲

form امین
در:
سلام تشکر بابت راهنماییتون. منظور من این بود که: الان با ثبت نام کاربر a در سایت اطلاعاتش در دیتابیس ثبت میشه و یک پوشه...
۰۳:۱۲:۴۰ ۱۳۹۸/۱۱/۰۲

form شریفی
در:
سلام معنی متن زیر چیست؟
۱۸:۲۸:۰۹ ۱۳۹۸/۱۱/۰۱

form امین
در:
سلام خسته نباشید یه اسکریپت دارم که وقتی کاربر ثبت نام میکنه یه پوشه و محتواش ایجاد میشه. میخوام یه صفحه با هر ثبت نام...
۱۴:۱۸:۵۱ ۱۳۹۸/۱۰/۳۰

form Admin
در:
سلام دوست عزیز. میشه بگویید چگونه میتوان در وبلاگ کادری را باز کرد که بازدید کنندگان بتوانند در آن چیزی بنویسند. ممنون میشم...
۱۱:۲۸:۵۰ ۱۳۹۸/۱۰/۳۰
آگهی