Ibrahim Azhar Armar
Ibrahim Azhar Armar

Reputation: 25763

What is wrong with my function?

Here is my code for the function

 function multiple_delete($checkbox, $table = 0, $url = 0, $picture1 = 0, $picture2 = 0, $picture3 = 0){
          echo $count = count($checkbox);
     for( $j=0;$j<$count;$j++)
          {
          $delete_id = $checkbox[$j];
          $query = "SELECT * FROM $table WHERE id = '$delete_id'";
          $result = mysql_query($query);
          $row = mysql_fetch_array($result);

     if( $picture1 !== 0 && $picture2 !== 0 && $picture3 !== 0) 
         {
         $pic_1 = $picture1;
         $pic_2 = $picture2;
         $pic_3 = $picture3;
         unlink($pic_1);
         unlink($pic_2);
         unlink($pic_3);
         continue;
         }
     if( $picture1 !== 0 && $picture2 !== 0 && $picture3 == 0 ) 
         { 
         $pic_1 = $picture1;
         $pic_2 = $picture2;
         unlink($pic_1);
         unlink($pic_2);
         continue;
         }
         }

     for($i=0;$i<$count;$i++)   {
        $del_id = $checkbox[$i];
        $sql = "DELETE FROM $table WHERE id='$del_id'";
        $result_delete_data = mysql_query($sql);
        }
        alert('Deleted Successfully');
        redirect_url($url);
        return true;
        }

My Problem is when i call the function using the following code.

@multiple_delete($_POST['checkbox'], 'news', 'news.php', '$row[\'pic_title\']', '$row[\'pic_brief\']', '$row[\'pic_detail\']');

the three array variables $row['pic_title'], $row['pic_brief'], $row['pic_detail'] , does not parse as the value in the function in first for loop, instead it just print the string and hence is not able to fetch the value stored in the database. for example

in the first if condition i have defined 3 variables,

 $pic_1 = $picture1;
 $pic_2 = $picture2;
 $pic_3 = $picture3;

$picture1, $picture2, and $picture3 holds the value that i declared in the function , now when i do something like this echo $pic_1 = $picture1; it prints $row['pic_title'] the exact value which i declared in the function instead of parsing the value which is actually upload/news/title/pic_title1.jpg i tried testing it like this, instead of declaring the value in the defined function i actually just changed the value of the three variables to

 $pic_1 = $row['pic_title'];
 $pic_2 = $row['pic_brief'];
 $pic_3 = $row['pic_detail'];

this works very fine without any problem. why is that variable $picture1 which holds the value $row['pic_title']; refuses to parse it and force it to just print the string while if i change it manually it works? where i am going wrong?

apart from the last three parameters i dont have any problem parsing the first three parameters it works perfectly fine i have tested it in many ways. the only problem i am facing is of the last three parameters

Edit : i tried double quotes, single quotes, and single quotes with double quote with the combination of concatenation operator. without quotes. nothing works.

P.S : thanks in advance

Upvotes: 1

Views: 129

Answers (3)

Mischa
Mischa

Reputation: 43318

Try this:

function multiple_delete($checkbox, $table, $url, $picture1, $picture2, $picture3){
    echo $count = count($checkbox);

    for($j=0; $j<$count; $j++)
    {
        $delete_id = $checkbox[$j];
        $query = "SELECT * FROM $table WHERE id = '$delete_id'";
        $result = mysql_query($query);
        $row = mysql_fetch_array($result);

        $pic1 = $row[$picture1];
        $pic2 = $row[$picture2];
        $pic3 = $row[$picture3];

        if(!empty($pic1) && !empty($pic2) && !empty($pic3))
        {
            unlink($pic1);
            unlink($pic2);
            unlink($pic3);
        }
        else if(!empty($pic1) && !empty($pic2))
        {
            unlink($pic1);
            unlink($pic2);
        }

        $sql = "DELETE FROM $table WHERE id='$delete_id'";
        $result_delete_data = mysql_query($sql);
    }

    // this is javascript, not php
    // alert('Deleted Successfully');
    redirect_url($url);
    return true;
}

Call the function like this:

multiple_delete($_POST['checkbox_name'], 'table_name', 'redirect_url', 'column_name_pic_1', 'column_name_pic_2', 'column_name_pic_3');

Upvotes: 3

Ibrahim Azhar Armar
Ibrahim Azhar Armar

Reputation: 25763

I got the solution for this problem. in case it can benefit anyone here is the link to the solution.

How do i parse the the value from a string in the function call?

Upvotes: 0

Nicolas78
Nicolas78

Reputation: 5144

get rid of the apostrophes around your variable names in the function call, ie try

, $row[\'pic_title\'],

instead of

, '$row[\'pic_title\']',

Upvotes: 0

Related Questions