Удаление строки из таблицы базы данных с помощью флажка - PullRequest
3 голосов
/ 15 января 2012

Я хочу отобразить запись из базы данных в таблице с флажками в каждой строке. Эти флажки будут определять, хочет ли пользователь удалить эту конкретную строку, если она будет отмечена. Мне удалось отобразить данные из БД, но когда я нажимаю кнопку удаления, ничего не происходит. Я не уверен, но я думаю, что ошибка в моем удалении части кода, но я могу ошибаться. Я не уверен. В любом случае, вот код, я просто удалил несколько строк

 <?php

$link = mysql_connect("localhost","root", "123");
if(!$link) {
    die('Failed to connect to server: ' . mysql_error());
}

 $db= mysql_select_db("abc");
if(!$db) {
    die("Unable to select database");
} 


$search = $_POST['search'];
$searchbox = $_POST['searchbox'];


$query = ("SELECT $search FROM table where $search = '$searchbox'"); 
  $result=mysql_query($query);

  if($result)
      {
        if(mysql_num_rows($result)<=0)
      { 
      echo "<script type='text/javascript'>alert('The entry does not exist'); location.href = 'admin_home.php';</script>";
      }
      }



switch ($search)
{
case 'studentnumber':
  $result = mysql_query("SELECT * FROM table WHERE $search = '$searchbox'");
if($result){

        echo "<table class='hovertable'>
        <tr>
        <caption>Student Records</caption>

 <th colspan='1'> Student Number</th>
 <th colspan='8'> $searchbox</th>
</tr>

      <tr>
      <th>Delete</th>
      <th>Student Number</th>
      <th>College</th>
      <th>Course</th>
      <th>Status</th>
      <th>Last Name</th>
      <th>First Name</th>
      <th>Middle Name</th>
      <th>Address</th>
      <th>Gender</th>
      <th>Civil Status</th>
      <th>Religion</th>
      <th>Email Address</th>
      <th>Month</th>
      <th>Day</th>
      <th>Year</th>
      <th>Father's Name</th>
      <th>Father's Occupation</th>
      <th>Mother's Name</th>
      <th>Mother's Name</th>
       </tr>";


       while($row = mysql_fetch_array($result))
      {
        echo "<tr onmouseover=\"this.style.backgroundColor='#ffff66';\" onmouseout=\"this.style.backgroundColor='#d4e3e5';\">";

         ?>
        <td><input name="need_delete[<? echo $rows['id']; ?>]" type="checkbox" id="checkbox[<? echo $rows['id']; ?>]" value="<? echo $rows['id']; ?>"></td>
        <?php
        echo "<td>" . $row['studentnumber'] . "</td>";
        echo "<td>" . $row['college'] . "</td>";
        echo "<td>" . $row['course'] . "</td>";
        echo "<td>" . $row['status'] . "</td>";
        echo "<td>" . $row['lname'] . "</td>";
        echo "<td>" . $row['fname'] . "</td>";
        echo "<td>" . $row['mname'] . "</td>";
        echo "<td>" . $row['address'] . "</td>";
        echo "<td>" . $row['gender'] . "</td>";
        echo "<td>" . $row['civilstatus'] . "</td>";
        echo "<td>" . $row['religion'] . "</td>";
        echo "<td>" . $row['emailaddress'] . "</td>";
        echo "<td>" . $row['month'] . "</td>";
        echo "<td>" . $row['day'] . "</td>";
        echo "<td>" . $row['year'] . "</td>";
        echo "<td>" . $row['father'] . "</td>";
        echo "<td>" . $row['fatheroccupation'] . "</td>";
        echo "<td>" . $row['mother'] . "</td>";
        echo "<td>" . $row['motheroccupation'] . "</td>";
      }

      echo "</table>"; 
      echo "</div>";
}
  break;

default:
  echo "<script type='text/javascript'>alert('An error occur'); location.href = 'admin_home.php';</script>";
}

?>
<input name="delete" type="submit" id="delete" value="Delete">
   <?php
            // Check if delete button active, start this
            if ( ! empty($_POST['delete'])) {
                foreach ($_POST['need_delete'] as $id => $value) {
                    $sql = 'DELETE FROM students` WHERE id='.(int)$id;
                    mysql_query($sql);
                }
                echo "<script type='text/javascript'>alert('Record Successfully Deleted');location.href = 'admin_home.php';</script>";
                exit();
            }
            mysql_close();
        ?>

Заранее спасибо !!

Ответы [ 4 ]

1 голос
/ 18 января 2012

Напишите функцию JavaScript, когда установлен или снят флажок, и сохраните идентификаторы в списке, разделенном запятыми, как скрытую переменную, после чего после публикации страницы вы можете получить идентификаторы полей, которые вы хотите удалить, и разделить переменную, используя «Взрыв», чтобы удалить запятую.

1 голос
/ 15 января 2012

Похоже, вы пытаетесь получить доступ к неверному индексу в массиве $_POST.Смотрите следующее, которое взято из конца вашего PHP-кода.

if ( ! empty($_POST['delete'])) {

Должно быть

if ( ! empty($_POST['need_delete'])) {
1 голос
/ 15 января 2012

Я сделал что-то похожее на это для отображения, а также добавления / удаления записей.Метод, который я использовал, заключался в цикле прохождения всех записей в скрипте PHP и поиске всей информации на основе первой части ключа (если она совпадает с чем-либо, используйте число после этого в качестве идентификатора объекта).Затем переберите созданный массив данных, которые будут добавлены, что удалено, что отредактировано и что проигнорировано.

Если объект уже существует как есть, и флажок не установлен, игнорировать Если объект ужесуществует, а данные отличаются, и флажок не установлен, обновите, если объект уже существует, и флажок установлен, удалите, если объект не существует и флажок не установлен, создайте новую строку, если объект не существуетсуществует, и флажок установлен, игнорируйте

Надеюсь, что поможет

Есть некоторый код

Блок PHP:

$mysqlData = array();     // Items to Update
$mysqlNewData = array();  // Items to Create
$Data = $_POST;

unset($Data['stuff']);

foreach($Data as $k => $v)
{
    $type = substr($k, 0, 2);

    if ($type == "nw")
    {
        $type = substr($k, 2, 2);
        $ID = substr($k, 4);

        $mysqlSubData = $mysqlNewData[$ID];
        if (gettype($mysqlSubData) != "array")
            $mysqlSubData = array();

        if ($type == "sd")
            $mysqlSubData['startdate'] = $v;
        if ($type == "ed")
            $mysqlSubData['enddate'] = $v;
        if ($type == "dl")
            if ($v == "on")
                $mysqlSubData['delete'] = true;

        $mysqlNewData[$ID] = $mysqlSubData;
    } else {
        $ID = substr($k, 2);
        $mysqlSubData = $mysqlData[$ID];
        if (gettype($mysqlSubData) != "array")
            $mysqlSubData = array();

        if ($type == "sd")
            $mysqlSubData['startdate'] = $v;
        if ($type == "ed")
            $mysqlSubData['enddate'] = $v;
        if ($type == "dl")
            if ($v == "on")
                $mysqlSubData['delete'] = true;

        $mysqlData[$ID] = $mysqlSubData;
    }
}

Блок таблицы:

<? $occurences = $mysql->getEntries("occurences", "`TargetID`='{$Target['ID']}'"); ?>

<table cellpadding="0" cellspacing="5" border="0" width="900" id="timetable">
<tr>
<td>Delete</td>
<td>Start Date</td>
<td>End Date</td>
</tr>

<? foreach($occurences as $occurence) { ?>
<? $ID = $occurence['ID']; ?>
<tr>
<td>
<input type="checkbox" name="dl<?=$ID?>" value="on" />
</td>
<td>
    <input type="text" name="sd<?=$ID?>" id="sd<?=$ID?>" value="<?=$occurence['startdate']?>" style="width: 100px" />
    <a href="javascript:;" onclick="javascript:NewCssCal('sd<?=$ID?>','yyyyMMdd','arrow')"><img src="/scripts/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>
</td>
<td>
    <input type="text" name="ed<?=$ID?>" id="ed<?=$ID?>" value="<?=$occurence['enddate']?>" style="width: 100px" />
    <a href="javascript:;" onclick="javascript:NewCssCal('ed<?=$ID?>','yyyyMMdd','arrow')"><img src="/scripts/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>
</td>
<td>
</td>
</tr>
<? } ?>

</table>

<a href="javascript:;" onclick="AddOccurence();">Add Another</a>

<div style="text-align: center">
<input type="image" src="/images/button_save.png" value="Save" border="0" />
<a href="/"><img src="/images/button_cancel.png" alt="Cancel" border="0" /></a>
</div>

</form>

<script type="text/javascript">
var TableRowExtras = 0;

function AddOccurence()
{
TableRowExtras++;

var da = new Date();

var t = document.getElementById('timetable');
var row = t.insertRow(t.rows.length);

var cell = row.insertCell(0);
var element = document.createElement('input');
element.name = 'nwdl' + TableRowExtras;
element.type = 'checkbox';
element.value = 'on';
cell.appendChild(element);

cell = row.insertCell(1);
element = document.createElement('input');
element.type = 'text';
element.name = 'nwsd' + TableRowExtras;
element.id = 'nwsd' + TableRowExtras;
element.value = da.getFullYear() + '-' + (da.getMonth() + 1) + '-' + da.getDate();
element.style.width = '100px';
cell.appendChild(element);

cell.innerHTML = cell.innerHTML + " ";

element = document.createElement('a');
element.href = "javascript:NewCssCal('nwsd" + TableRowExtras + "','yyyyMMdd','arrow')";

var element2 = document.createElement('img');
element2.src = '/scripts/cal.gif';
element2.width = '16';
element2.height = '16';
element2.border = '0';
element2.alt = 'Pick a date';
element.appendChild(element2);
cell.appendChild(element);

cell = row.insertCell(2);
element = document.createElement('input');
element.type = 'text';
element.name = 'nwed' + TableRowExtras;
element.id = 'nwed' + TableRowExtras;
element.style.width = '100px';
cell.appendChild(element);

cell.innerHTML = cell.innerHTML + " ";

element = document.createElement('a');
element.href = "javascript:NewCssCal('nwed" + TableRowExtras + "','yyyyMMdd','arrow')";

element2 = document.createElement('img');
element2.src = '/scripts/cal.gif';
element2.width = '16';
element2.height = '16';
element2.border = '0';
element2.alt = 'Pick a date';
element.appendChild(element2);
cell.appendChild(element);

}
</script>
1 голос
/ 15 января 2012

Вы можете использовать значения в вашем флажке и использовать их в качестве массива, чтобы вы знали, какой из них был проверен.

<input type="checkbox" name="need_delete[$id]">

При этом ваш $_POST['need_delete'] получит массив сваши идентификаторы в качестве индекса, так что вы сможете проверить и удалить эти регистры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...