• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حذف یک ردیف از دیتابیس
#1
سلام دوستان
کدی دارم به شکل زیر
کد پی‌اچ‌پی:
    $line 0;
    foreach(
$OnIsbn as $key => $value)
    {
        
$query "select title,price from books where isbn=$value";
        
$result = @mysql_query ($query);
        
$row mysql_fetch_assoc($result);
        echo 
'<tr data-id ='.$line.'>';
        echo 
'<td>'.$row['title'].'</td>';
        echo 
'<td id = cost>'.$row['price'].'</td>';
        echo 
'<td><input id = num type = text size = 5 value = 1 ></td>';
        echo 
'<td><p id = total></p></td>';
        echo 
'<td><button class = button-row></button></td>';
        echo 
'</tr>';
        
$line $line 1;
    } 
همون طوری که میبینید من به ردیف ها ای دی دادم . میخوام با کلیک بر دکمه button که به اون کلاس button-row دادم ردیفی که این دکمه در اون هست حذف بشه . نه فقط به صورت ظاهری بلکه از دیتابیس حذف بشه . یعنی ردیف فعلی ارایه ی mysql_fetch_assoc حذف بشه .
اونم به صورت اجاکس
با فرض اینکه کد اجاکس به شکل زیره
کد پی‌اچ‌پی:
$(document).ready(function(){
    $(
'.button-row').click(function(event){
        $(
event.target).parent().parent().remove();
        var 
rowId = $(event.target).parent().parent().attr('data-id');
         $.
ajax({
                
type:'post',
                
url'row_remove.php',
                
data:'rowId=' rowId
            
});
    });
}); 

من باید در فایل row_remove.php چی بنویسم که این ردیف از دیتا بیس حذف بشه !؟ لطفا راهنمایی کنید
  پاسخ
تشکر شده توسط :
#2
خب شما که اطلاعاتو میگیری و میفرستی با اجاکس به صفحه مورد نظر همراه با اونا آی دی رکوردتم بفرست به اون صفحه و یه کوئری بزن با شرط برابر بودن آیدی ارسالی با آی دی داخل جدول که حذف کنه
اینم توضیح
ایشالا که میتونی نتونستی بگو بیشتر توضیح بدم برات
  پاسخ
تشکر شده توسط :
#3
(۱۳۹۵ مرداد ۱۹, ۰۶:۱۱ ب.ظ)kasbookar نوشته: خب شما که اطلاعاتو میگیری و میفرستی با اجاکس به صفحه مورد نظر همراه با اونا آی دی رکوردتم بفرست به اون صفحه و یه کوئری بزن با شرط برابر بودن آیدی ارسالی با آی دی داخل جدول که حذف کنه
اینم توضیح
ایشالا که میتونی نتونستی بگو بیشتر توضیح بدم برات

من این کد ها رو نوشتم که از قضا کار نکردن
کد پی‌اچ‌پی:
<?php
    $rowId 
$_POST['rowId'];
    require_once (
'connection.php');
    
db_connect ();
    
$query "DELETE FROM books WHERE id=$rowId";
    
$result = @mysql_query ($query);
?>
  پاسخ
تشکر شده توسط :
#4
ارور میده؟؟ اگه ارور داری اونو بنویس
کد جی کوئری تو کامل بذار ببینم چیکار کردی ؟؟
این چیه دیگه؟
کد پی‌اچ‌پی:
db_connect (); 
  پاسخ
تشکر شده توسط :
#5
(۱۳۹۵ مرداد ۲۰, ۰۱:۳۱ ق.ظ)kasbookar نوشته: ارور میده؟؟ اگه ارور داری اونو بنویس
کد جی کوئری تو کامل بذار ببینم چیکار کردی ؟؟
این چیه دیگه؟
کد پی‌اچ‌پی:
db_connect (); 

سلام مجدد
نه ارور نمیده فقط کار نمیکنه
کد جی کوئری رو به صورت کامل اون بالا گذاشتم
این تابع db_connect (); از طریق require_once ('connection.php');
فراخوانی میشه . به دیتا بیس وصل میشه . در درست کارکردنش مطمئنم .
  پاسخ
تشکر شده توسط :
#6
سلام،
درخواست Ajax رو اینجوری بنویس ببین درست میشه؟

کد:
$.ajax({
       type:'post',
       url: 'row_remove.php',
       data: {rowId: rowId}
});

توی فایل PHP آی‌دی رو میگیری؟ یعنی وقتی echo میکنی درست نشون میده؟

راستی، خطا رو با تابع mysql_error میگیری؟ یا کلا منظورت این هست که خطایی نداری؟

راستی۲: از mysql_* استفاده نکن! دیگه از بین رفته. مثلا از mysqli_* استفاده کن. هیچ فرقی هم نداره. امن‌تر هم هست.
غایب
  پاسخ
تشکر شده توسط : ayoubsys
#7
سلام
alla داداش
مشکلش خوند ای دی با جی کوئری بود
کد پی‌اچ‌پی:
$line 0;
    foreach(
$OnIsbn as $key => $value)
    {
        
$query "select title,price from books where isbn=$value";
        
$result = @mysql_query ($query);
        
$row mysql_fetch_assoc($result);
        echo 
'<tr>';
        echo 
'<td>'.$row['title'].'</td>';
        echo 
'<td id = cost>'.$row['price'].'</td>';
        echo 
'<td><input id = num type = text size = 5 value = 1 ></td>';
        echo 
'<td><p id = total></p></td>';
        echo 
'<td><button  data-id ='.$line.' class = button-row></button></td>';
        echo 
'</tr>';
        
$line $line 1;
    } 

$(
'button[class="button-row"]').click(function(event){
        $(
event.target).parent().parent().remove();
        var 
rowId = $(event.target).attr('data-id');
        
alert(rowId);
         $.
ajax({
                
type:'post',
                
url'row_remove.php',
                
data:'rowId=' rowId
            
});
    }); 
  پاسخ
تشکر شده توسط :
#8
(۱۳۹۵ مرداد ۲۰, ۰۲:۳۴ ب.ظ)Alaa نوشته: سلام،
درخواست Ajax رو اینجوری بنویس ببین درست میشه؟

کد:
$.ajax({
       type:'post',
       url: 'row_remove.php',
       data: {rowId: rowId}
});

توی فایل PHP آی‌دی رو میگیری؟ یعنی وقتی echo میکنی درست نشون میده؟

راستی، خطا رو با تابع mysql_error میگیری؟ یا کلا منظورت این هست که خطایی نداری؟

راستی۲: از mysql_* استفاده نکن! دیگه از بین رفته. مثلا از mysqli_* استفاده کن. هیچ فرقی هم نداره. امن‌تر هم هست.
سلام
ای دی که گرفته میشه و مطمئنم درسته تستش کردم
من از ایزی پی اچ پی استفاده میکنم . اگر خطایی باشه خودش میگه الان خطا نیست
اطفاقا mysqli_* برام سوال بود . ممنون که تذکر دادید

(۱۳۹۵ مرداد ۲۰, ۰۲:۴۶ ب.ظ)kasbookar نوشته: سلام
alla داداش
مشکلش خوند ای دی با جی کوئری بود
کد پی‌اچ‌پی:
$line 0;
    foreach(
$OnIsbn as $key => $value)
    {
        
$query "select title,price from books where isbn=$value";
        
$result = @mysql_query ($query);
        
$row mysql_fetch_assoc($result);
        echo 
'<tr>';
        echo 
'<td>'.$row['title'].'</td>';
        echo 
'<td id = cost>'.$row['price'].'</td>';
        echo 
'<td><input id = num type = text size = 5 value = 1 ></td>';
        echo 
'<td><p id = total></p></td>';
        echo 
'<td><button  data-id ='.$line.' class = button-row></button></td>';
        echo 
'</tr>';
        
$line $line 1;
    } 

$(
'button[class="button-row"]').click(function(event){
        $(
event.target).parent().parent().remove();
        var 
rowId = $(event.target).attr('data-id');
        
alert(rowId);
         $.
ajax({
                
type:'post',
                
url'row_remove.php',
                
data:'rowId=' rowId
            
});
    }); 

سلام مجدد
اون کدی که نوشته بودم ای دی رو میگرفت با alert تستش کرده بودم .
سوال : چرا ای دی رو توی button گذاشتید ؟ مگه نباید در ردیف باشه !؟
کدئ هاتونو تست کردم . کار نکردن . یعنی پس از رفرش صفحه باز ردیف ها برمیگشتن .
  پاسخ
تشکر شده توسط :
#9
نقل قول:سوال : چرا ای دی رو توی button گذاشتید ؟ مگه نباید در ردیف باشه !؟
اگه دقت کنید با هربار اجرای حلقه یک tr ایجاد میشه یا همون سطر و هر سطر هم دارای یک دکمه حذف و یک ای دی اختصاصی هست که از جدول خونده میشه پس ما میتونیم از اون ای دی در هر جای سطرمون استفاده کنیم اینجا هم برای اینکه نیاز نباشه هی بیاید parent() بگیرید وساده نویسی بشه بهتره چنین عملی انجام بدید
الان توی صفحه حذف این کدهارو بذارید و اتصالا پایگاه رو تکمیل و امتحان کنید ببینید کار میکنه
کد پی‌اچ‌پی:
<?php
    $servername 
"localhost";
    
$username "username";
    
$password "password";
    
$dbname "myDB";
    
    
$conn mysqli_connect($servername$username$password$dbname);
    if (!
$conn) {
        die(
"ارور در ارتباط با پایگاه داده: " mysqli_connect_error());
    }
    
$rowId $_POST['rowId'];
    
$sql "DELETE FROM `books`  WHERE id={$rowId}";
    
    if (
mysqli_query($conn$sql)) {
        echo 
"دلت انجام شد";
    } else {
        echo 
"ارور: " mysqli_error($conn);
    }
    
mysqli_close($conn);
?>
  پاسخ
تشکر شده توسط :
#10
نقل قول:alla داداش
مشکلش خوند ای دی با جی کوئری بود

مخلصیم داداش،
خودشون میگن آی‌دی رو سمت پی‌اچ‌پی درست دریافت می‌کنن.



الان کوئری که نوشتین رو مستقیم توی پایگاه‌داده اجرا می‌کنین نتیجه می‌ده؟
ظاهرا که مشکلی وجود نداره.
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان