i
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت به کلی متفاوت و کاملتر خواهد بود، این فرآیند زمانبر و از مدتی پیش شروع شده و همچنان ادامه دارد، روند پیشرفت پروژه در این قسمت به صورت درصدی مشخص است و به تناوب به روزرسانی می شود.
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
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 مطالب بیشتر:
» آموزش ساخت فرم عضویت در سایت با PHP و MySQL
» صفحه بندی مطالب و محتوا با PHP و MySQL
» جستجو در مطالب سایت با استفاده از MySQL Full-Text
» آموزش ساخت فرم تماس با PHP و MySQL
» نحوه رسم چارت و نمودار آماری با PHP و MySQL
commentنظرات (۵۲ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: خالق
زمان: ۱۳:۳۷:۵۹ - تاریخ: ۱۳۹۱/۱۰/۰۴
سلام
می خواهم در یک پروژه اخبار های گذشته ام را حذف کنم از طریق کدهای php چگونه می توان این کار را کرد؟ اگر این کدها را برایم به ایمیلم روان کنید بزرگی می کنید ممنون
پاسخ: 
برای حذف اطلاعات از دیتابیس باید با PHP و MySQL آشنا باشید، آنگاه از نمونه کد همین آموزش هم متناسب با دیتابیس و ستون های مورد نظر خود می توانید استفاده کنید، به طور مثال تاریخ پست ها را مورد بررسی قرار دهید و هر پستی که از تاریخ مشخصی قدیمی تر بود را حذف کنید یا هر پستی که به فرض آی دی آن کوچکتر از مقادیر مورد نظر شما است را حذف کنید، در کل باید بر نحوه کار PHP و MySQL تسلط نسبی داشته باشید.
نویسنده: Ady
زمان: ۰۰:۱۷:۴۷ - تاریخ: ۱۳۹۱/۱۲/۰۴
فقط خواستم تشکر کنم. کار بزرگی انجام میدید و امیدوارم هیچ چیز باعث دلسردی و نا امیدی شما عزیزان نشه.
به جرات و با اطمینان اعلام میکنم که در بین همه سایتهایی که به زبان پارسی مطالب آموزشی را به اشتراک میگزارند، شما بهترین هستند.
هر جا که هستید شاد و پیروز باشید.
پاسخ: 
خیلی ممنون از این همه لطف.
نویسنده: yas
زمان: ۲۲:۴۷:۰۵ - تاریخ: ۱۳۹۱/۱۲/۰۹
سلام
من تمام مراحل رو انجام دادم اما هیچ اتفاقی نمیفته
فقط صفحه refresh می شه و delete؟می شه دوباره کدتون رو چک کنید، متغیر delete همش تعداد رکورد است 6
پاسخ: 
خیلی ممنون از یادآوری شما، چند اشتباه مختصر در کد وجود داشت، مطلب مجددا بررسی و آموزش به طور کامل اصلاح شد.
نویسنده: هدایت
زمان: ۰۲:۰۱:۲۷ - تاریخ: ۱۳۹۲/۰۱/۰۴
سلام
اگه به جای این که اطلاعات حذف بشه بخواهیم اطلاعات ذخیره بشه باید از چه دستوری استفاده بکنیم با تشکر
پاسخ: 
برای ذخیره اطلاعات باید از دستور INSERT و برای به روز رسانی از دستور UPDATE در MySQL استفاده کنید که البته Syntax خاص خودشان را دارند.
نویسنده: shahin69
زمان: ۱۸:۳۸:۱۳ - تاریخ: ۱۳۹۲/۰۲/۱۵
سلام دوستان عزیز
خسته نباشید
میخوام یک سیستم نوبت دهی پزشکی درست کنم که اینجوریه
من یه جدول در دیتابیسم دارم در محیطphpmy admin که چهار تا فیلد داره یکی اسم و دیگری روزهای هفته و دیگری زمان که فیلد زمان از نوع time که اینجوریه 5:15 و 5:30 و 5:45 و 6:00 همین جور تا 8 یعنی شنبه از 5 تا 8 و یکشنبه 5 تا 8 و تا پنجشنبه که زمان ها به فاصله ربع ساعت هستن . میخوام فیلد زمان و فیلد روزای هفته رو به کاربر نشون بدم همراه با چک باکس کنارش.
که تا اینجاش رو انجام دادم از این به بعدش رو میخوام....
که زمانی که کاربر یکیش رو تیک میزنه و بعدش submit و زد یک صفحه یا یک کادر براش باز شه اسم و فامیلش رو بگیره و تو دیتابیسم ذخیره شه
چه جوری باید ذخیره بشه؟ که من بدونم چه کسی چه روز و ساعتی رو نوبت گرفته؟
ایا اون فیلد زمان در دیتابیس باید از نوع time باشه؟؟؟
value چک باکس باید زمان بزارم یعنی هر چک باکس یک value داره مثلا 5:15 و دیگری 5:30 و... ایا این درسته؟؟؟؟؟؟
خواهشا راهنماییم کنید؟؟؟؟
پاسخ: 
قبل از هر چیز بهتر است که از منوی باز شو (select option) برای داده هایی که حالت لیست دارند استفاده کنید، هرچند اینکه داده ها چگونه ارسال شوند در کل اهمیت اساسی ندارد، در مورد سوال شما کافی است نام کاربر را از یک فیلد متنی، زمان را از لیست (از value لیست)، روز هفته را هم به همین ترتیب دریافت کنید، سپس جدول شما باید یک مقادیر id نیز از نوع INT NOT NULL AUTO_INCREMENT داشته باشد، سپس با ارسال موارد، برای هر کاربر یک ردیف ایجاد می شود که در ستون نام، نام کاربر، ستون روزهای هفته، روز مورد نظر و در ستون زمان، زمان ارسال شده ثبت می شود، به این صورت به راحتی می توانید بدانید که چه کاربر چه روز و زمانی نوبت گرفته است، نوع TIMEبودن مهم نیست چون مقادیر زمان ها ثابت هستند و نیازی به محاسبات خاصی نیست.
نویسنده: shahin69
زمان: ۱۴:۱۱:۲۷ - تاریخ: ۱۳۹۲/۰۲/۱۶
سلام
میخوام با استفاده از این کد اطلاعات insert و update کنم میشه بگید باید کجاشو تغییر بدم چه جوری باید عمل کنم میخوام چک باکس هم کنارش باشه؟؟
پاسخ: 
این آموزش صرفا یک نمونه برای راهنمایی بیشتر است، برای نوشتن برنامه های کاربردی سفارشی، باید به طور کلی به نحوه کار PHP و MySQL از مقدمات کار آشنا باشید، به هر صورت در این کد می توانید در حلقه for از مقادیر متغیر i استفاده کرده و مقادیر متناظر آن را از چک باکس دریافت کنید و به جای دستور DELETE دستورات دیگر را تنظیم نمائید، ممکن است نیاز به تعریف متغیرها و مقادیر دیگر نیز باشد که این بستگی به هدف و ساختار کد شما دارد.
نویسنده: کامران
زمان: ۱۸:۴۱:۵۷ - تاریخ: ۱۳۹۲/۰۲/۲۱
سلام چه جوری میشه اطلاعات به وسیله چک باکس insert کرد تو دیتابیس
پاسخ: 
می توانید مقادیری برای قسمت value چک باکس قرار دهید و با متد GET یا POST اطلاعات فرم را در سمت سرور دریافت و سپس آن اطلاعات را در دیتابیس ذخیره کنید، مثال:
<form action="index.php" method="post">
<input type="checkbox" name="check" value="1">
<input type="submit" value="ارسال">
</form>

<?php
$check = $_POST['check'];
$query = mysqli_query($conn, "INSERT INTO tbl(check) VALUE('$check')") or die(mysqli_error($conn));
?>
برای کسب اطلاعات بیشتر به آموزش های مقدماتی مراجعه کنید.
نکته: حفظ امنیت دیتابیس در کدهای بالا لحاظ نشده است، در صورت عدم آشنایی قبلی لطفا با مراجعه به آموزش های مقدماتی MySQL شیوه های جلوگیری از نفوذ به دیتابیس را فرا بگیرید.
نویسنده: mory44
زمان: ۱۸:۲۷:۴۴ - تاریخ: ۱۳۹۲/۰۳/۰۲
با سلام
سایت بسیار خوبی دارید
می خواستم ببینم کدتان مشکل ندارد چون قسمت if آخر اصلا اجرا نمی شود
و می خواستم بدونم علامت @ برای چه کاری است
پاسخ: 
بله کد کاملا تست شده (مجددا تست شد)، احتمالا مشکل شما انتقال بعد از حذف است، برای این کار باید توجه داشته باشید که فایل را با نام فرضی checkbox.php ذخیره کنید، در غیر این صورت باید این قسمت را در کد متناسب با نام و آدرس فایل تنظیم کنید،
در مورد علامت @، این علامت برای مواردی استفاده می شود که آگاهانه بخواهیم خطاهای یک متغیر (که معمولا از نوع Notice یا توجه بیشتر هستند) نادیده گرفته شود (نمایش داده نشود).
نویسنده: mory44
زمان: ۱۰:۲۰:۴۹ - تاریخ: ۱۳۹۲/۰۳/۰۳
ممنون از راهنمایتون مشکل حل شد
یه سوال در مورد insert کردن اطلاعات داشتم
مثلا ما سبد خرید داریم و می خواهیم مثل مثال بالا که اطلاعات رو حذف می کردیم اینبار اطلاعات انتخاب شده توی جدول جدید کپی بشه
البته در مورد insert در جواب دوستون توضیح دادین اما من نمیدونم مثلا جدولمون کدومه و ...
با تشکر فراوان
پاسخ: 
سوال خیلی کلی است، وقتی برنامه ای می نویسید باید بدانید که جدول به فرض کالا ها کدام است و... وقتی شما نمی دانید چطور ما بدانیم!
توصیه ما این است که از مقدمات مباحث را دنبال کنید، نوشتن یک برنامه کاربردی نیازمند حداقل آشنایی مقدماتی است.
نویسنده: saeid
زمان: ۲۱:۱۵:۴۰ - تاریخ: ۱۳۹۲/۰۴/۰۹
ببخشید بازم مزاحم شدم
من به گرافیک سایت خیلی اهمیت می دم و ...
فقط یه بار دیگه می خواستم این لطف را در حق بنده کنید که ...
برای حذف گروهی قاعدتاً یک دکمه ی submit باید گذاشت اما من از دکمه ی وب خوشم نمی یاد و می خوام از دکمه ی خودم استفاده کنم
منظورم دکمه ایه که با تگ a و داخلش هم یک تگ img خودتون بهتر می دونید
حالا می خوام مقادیر مثلاً textbox و بقیه رو توسط این دکمه ی گرافیکی خودم بفرستم به صفحه ی مورد نظر یا اصلاً می خوام فرم رو با تگ a به صفحه ی دیگری ارسال کنم می خواستم بدونم چه طور می شه با php این کار رو کرد؟
پاسخ: 
در مطلبی دیگر مشابه همین سوال را پیش تر مطرح کرده بودید که به آن پاسخ داده شد:
PHP یک زبان سمت سرور است و قادر به انجام چنین کاری نیست! یا باید از HTML به شیوه معمول استفاده کنید، یا از تکنیک های مبتنی بر جاوا اسکریپت، CSS و ...
مثال:
<a href="javascript:document.FormName.submit();">ارسال فرم</a>
استفاده از CSS برای مخفی کردن دکمه submit:
<input type="submit" style="position:absolute; left:-10000px; width:5px; height:5px;">
نویسنده: mahdi
زمان: ۰۱:۴۶:۵۳ - تاریخ: ۱۳۹۲/۰۵/۰۶
سلام من کدتون رو توی سایتم گذاشتم و علیرغم اینکه گفتید اصلاح شده ولی فقط صفحه رفرش میشه و حذف نمیشه. ممنون میشم اگه راهنماییم کنید. از آموزشهای بسیار خوبتون هم ممنونم
پاسخ: 
اصلاح کد به جهت چند علامت \ بود که در هنگام انتشار مطلب جا افتاده بود (لذا کد خطای Syntax داشت)، در حال حاضر برنامه مشکلی ندارد، باید ببینید دلیل عمل نکردن دستورات داخل شرط if چیست، ممکن است پرس و جوی حذف شما صحیح تنظیم نشده باشد و در نتیجه چیزی از دیتابیس حذف نشود، یا مقادیر id به درستی در قسمت value فرم HTML برای input checkbox خروجی داده نشده باشد (در نتیجه شماره id صحیح به کد ارسال نمی شود و متعاقب آن چیزی هم حذف نمی شود)، برای اطمینان موارد پیش فرض همین آموزش را از ابتدا در لوکال هاست امتحان نمائید.
نکته: برای خطایابی ابتدا سورس قسمت HTML را بررسی و از پر بودن مقادیر value با شماره id اطمینان حاصل کنید، همچنین در کدهای PHP با استفاده از دستور print_r می توانید مقادیر موجود در متغیر checkbox را مشاهده کنید، مثال:
print_r($checkbox);
نویسنده: mahdi
زمان: ۰۲:۳۱:۱۷ - تاریخ: ۱۳۹۲/۰۵/۰۷
ممنون از راهنماییتون مفید بود. میشه در این موردم کمکم کنید: وقتی رکورد ها از دیتابیس حذف میشن و من یه رکورد جدید ایجاد می کنم شمارشون نا مرتبه مثلا من 5 تا رکورد داشتم. پنجمی رو حذف کردم وقتی یکی دیگه ایجاد می کنم شماره ای دی اینجوری میشه:
1 2 3 4 6
راستی تو این آموزش اگه بخوایم از کاربر بپرسیم واسه حذف مطمئنه اسکریپتش رو چجوری بنویسم که بازم کد عمل کنه. ممنون از توجهتون
پاسخ: 
در مورد سوال اول:
این بستگی به نوع id جدول مورد نظر دارد، اگر شماره id به صورت افزایش خودکار (AUTO_INCREMENT) باشد، این حالت طبیعی است و نمی توانید تغییرش دهید، اگر نیاز به تغییر دارید، باید یک ستون عادی (AUTO_INCREMENT نباشد) بسازید و با کدهای خود مقادیر آنها را پس از فعل و انفعالات به صورت دلخواه به روزرسانی نمائید.
در مورد سوال دوم:
ساده ترین راه استفاده از تابع confirm در جاوا اسکریپت است، مثال:
<a href="#" onclick="confirm('آیا از حذف این اطلاعات مطمئن هستید؟');">حذف</a>
این تابع را مطابق الگو به لینک حذف خود اضافه کنید.
نویسنده: مریم
زمان: ۱۷:۳۸:۲۷ - تاریخ: ۱۳۹۲/۰۵/۱۴
سلام. یه سوال داشتم. فرضا ما یه جدول داریم که هر بار که یه صفحه خاص از سایت باز میشه. یک ردیف (سطر) از طریق دستور insert توش ایجاد می کنیم.
حالا چطور میشه کدی نوشت که فرضا داخل جدول بیشتر از 200 سطر نداشته باشیم. و با اضافه شدن سطر جدید ( سطر 201 ) اولین سطر ( سطر 1 ) به صورت خودکار حذف بشه؟
یا اینکه مثلا داخل جدول 1000 سطر داریم حالا چطور باید کدی رو نوشت که با اجرای اون فرضا 800 تای اول حذف بشه.
ممنون.
پاسخ: 
برای حالت اول می توانید با استفاده از ASC مقدار اولین id یا هر ستون یکتایی را به دست آورید و از آن در یک دستور DELETE استفاده نمائید:
$query = mysqli_query($conn, "SELECT id FROM tbl ORDER BY id ASC LIMIT 1");
while($row = mysqli_fetch_array($query)){
$id = $row['id'];
}
$delete = mysqli_query($conn, "DELETE FROM tbl WHERE id = '$id' LIMIT 1");
برای حالت دوم هم کافی است در DELETE با LIMIT محدودیت ایجاد کنید:
DELETE FROM tbl LIMIT 800
نویسنده: مریم
زمان: ۰۸:۵۵:۰۳ - تاریخ: ۱۳۹۲/۰۵/۱۵
ممنون که پاسخ دادین.
نویسنده: abbas
زمان: ۰۲:۴۰:۵۷ - تاریخ: ۱۳۹۲/۰۵/۱۸
دوست عزیز سلام یه سوال داشتم من تمام قسمت های ساخت یک فرم ثبت نام رو بلدم البته با دریم ویور فقط تنها قسمتی رو که بلد نیستم با اون نرم افزار درست کنم بخش دیلیت است فقط یه خواهشی دارم لطف کردید من این آموزش رو خوندم و تست هم کردم خوب کار کرد اما می خواستم از شما استاد عزیز خواهش کنم همین بخش رو با نرم افزار ادوب دیریم ویور توضیح بدید که چطور درست میشه چون استفاده از کد های شما هم یک نوع کپی است شاید راضی نباشید ....
کوچیک شما عباس
وبسایت آموزشی تخصصی کیوکوشین کاراته ایران
www.kyokushins.ir
اوس
پاسخ: 
بخش کدنویسی PHP و اینکه از چه نرم افزاری برای نوشتن کدها یا مدیریت فایل ها استفاده کنید، دو مقوله جدا هستند، به عبارت دیگر مهم نیست که از دریم ویور برای نوشتن کدها استفاده می کنید یا از نرم افزاری دیگر، در نهایت کدها باید در قالب فایل های PHP در سرور یا در لوکال هاست ذخیره شوند، لذا با این تفاسیر آموزش جداگانه ای برای دریم ویور نمی توان ارائه کرد، کد را کپی کنید و در یک فایل PHP قرار دهید و در نهایت در سرور یا در لوکال هاست اجرا کنید!
از نظر کپی برداری، استفاده شخصی از کدها حتی اگر کپی مستقیم و بدون تغییر باشد هیچ اشکالی ندارد.
اوس
paged صفحه 1 از 4
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




4 × 7
 refresh
آگهی
سفارش آگهی تبلیغاتی
Webgoo.ir

هزینه منصفانه، بازخورد مناسب