2012-01-15 310 views
3

我想在表格中顯示來自每個行中的複選框的表中的記錄。該複選框將確定用戶是否要刪除該特定行,如果它將被檢查。我能夠顯示來自數據庫的數據,但是當我按下刪除按鈕時什麼也沒有發生。林不知道,但我認爲錯誤是在我刪除部分代碼,但我可能是錯的。我不確定。無論如何,這裏是代碼,我只是刪除一些行使用複選框從數據庫表中刪除一行

<?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(); 
     ?> 

在此先感謝!

回答

1

您可以在複選框上使用值,並將它們用作數組,以便您知道哪一個已被選中。

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

做這樣一來,你的$_POST['need_delete']將收到一個陣列的ID作爲索引,這樣你就可以測試並刪除這些寄存器。

1

它看起來像你試圖訪問$_POST陣列中的錯誤索引。請參閱以下內容,這些內容取自PHP代碼的末尾。

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

應該

if (! empty($_POST['need_delete'])) { 
1

我做類似這樣的顯示,以及追加/刪除記錄的東西。我使用的方法是循環遍歷PHP腳本中的所有後變量,並根據鍵的第一部分搜索所有信息(如果匹配,使用後面的數字作爲對象ID)。然後遍歷將要追加的數據的產生陣列,刪除什麼,編輯什麼以及忽略什麼。

如果對象是已經存在的和複選框心不是一套,無視 如果對象已存在和數據是不同的,該複選框未設置,更新 如果對象已經存在,並且該複選框被設置,刪除 如果對象不存在,該複選框未設置,創建新行 如果對象不存在,該複選框被設置,忽略

希望幫助

有一些代碼

PHP Bl玉珠:

$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

編寫JavaScript函數當一個特定的複選框被選中或取消選中和IDS以逗號分隔的列表保存爲隱藏變量之後再將頁面張貼你可以得到你想要刪除的字段的id,並使用「Explode」拆分變量來刪除逗號。