2016-03-30 31 views
2

首先感谢您关注我的问题。这是我的第一个MySql/PHP项目中的一个,并且想知道是否有办法压缩我创建的这两个页面。在同一页面上包含一个删除按钮的PHP&MySQL

基本上我有一些虚设填料信息MySQL数据库中我已经创建了显示信息的PHP页面:

<?php 
// Connect to server and select database. 
$link = mysqli_connect("localhost", "root", "password", "testdelete"); //for local machine testing 

// Check connection 
if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 

// select record from mysql 
$sql = "SELECT id, name, lastname, email FROM testdelete.test_mysql"; 
$result = $link->query($sql); 




if ($result->num_rows > 0) { 

    include 'table_header.html'; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 

     echo "<tr>"; 
     echo "<td bgcolor=\"#FFFFFF\">".$row["id"]."</td>"; 
     echo "<td bgcolor=\"#FFFFFF\">". $row["name"]."</td>"; 
     echo "<td bgcolor=\"#FFFFFF\">" . $row["lastname"]."</td>"; 
     echo "<td bgcolor=\"#FFFFFF\">". $row["email"] . "</td>"; 
     echo "<td bgcolor=\"#FFFFFF\"><a href=\"test_delete_ac.php?id={$row['id']}\">Delete row</a></td>"; 
     echo "</tr>"; 

    } 

    include 'table_footer.html'; 
} else { 
    echo "0 results"; 
} 



// close connection 
mysqli_close($link); 


?> 

基于代码示例中,数据显示的每一行并有一个删除按钮的列,以便我可以在需要时删除一行。但是,成立现在的方法是调用二级页面“test_delete_ac.php”如下图所示:

<?php 

// Connect to server and select database. 
$link = mysqli_connect("localhost", "root", "password", "testdelete"); //for local machine testing 

// Check connection 
if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 

// select record from mysql 
//$sql = "SELECT id, name, lastname, email FROM testdelete.test_mysql"; 
//$result = $link->query($sql); 

// get value of id that sent from address bar 
$id=$_GET['id']; 

// Delete data in mysql from row that has this id 
$sql="DELETE FROM testdelete.test_mysql WHERE id='$id'"; 
$result=$link->query($sql); 

// if successfully deleted 
if($result){ 
echo "Deleted Successfully"; 
echo "<BR>"; 
echo "<a href='delete.php'>Back to main page</a>"; 
} 

else { 
echo "ERROR"; 
} 



// close connection 
mysqli_close($link); 


?> 

一个可用性我想从去一个二级页面限制它,而不必点击“返回”链接。而且我可以创建一个函数并从链接调用它来删除行并仍然显示表单?像页面重新加载什么的?

非常感谢您提供任何重定向。

-Kate

+0

您可以从删除脚本重定向回第一页。 – frz3993

+0

如果这是您要求的,您将无法使用可从链接调用的PHP函数。 PHP仅在服务器端执行,并且不提供客户端功能。你可以通过2种方法来完成这一点。 1)在删除脚本末尾使用PHP重定向,或者2)使用AJAX调用删除页面,然后刷新当前页面。 –

回答

2

是的,就包括上述SELECT语句的删除逻辑。

<?php 
// Connect to server and select database. 
$link = mysqli_connect("localhost", "root", "password", "testdelete"); //for local machine testing 

// Check connection 
if ($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 

// Handle delete 
if (isset($_GET['delete_id'])) { 
    // get value of id that sent from address bar 
    $delete_id = (int) $_GET['delete_id']; 

    // Delete data in mysql from row that has this id 
    $sql="DELETE FROM testdelete.test_mysql WHERE id='$delete_id'"; 
    $result=$link->query($sql); 

    // if successfully deleted 
    if ($result){ 
     echo "Deleted Successfully"; 
     echo "<BR>"; 
    } else { 
     echo "Delete ERROR"; 
    } 
} 

// select record from mysql 
$sql = "SELECT id, name, lastname, email FROM testdelete.test_mysql"; 
$result = $link->query($sql); 

if ($result->num_rows > 0) { 
    include 'table_header.html'; 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<tr>"; 
     echo "<td bgcolor=\"#FFFFFF\">".$row["id"]."</td>"; 
     echo "<td bgcolor=\"#FFFFFF\">". $row["name"]."</td>"; 
     echo "<td bgcolor=\"#FFFFFF\">" . $row["lastname"]."</td>"; 
     echo "<td bgcolor=\"#FFFFFF\">". $row["email"] . "</td>"; 
     echo "<td bgcolor=\"#FFFFFF\"><a href=\"?delete_id={$row['id']}\">Delete row</a></td>"; 
     echo "</tr>"; 
    } 
    include 'table_footer.html'; 
} else { 
    echo "0 results"; 
} 

// close connection 
mysqli_close($link); 

?> 

不过要小心这种方法。由于它只是一个链接,如果它是公开的,bot可以抓取并删除所有内容。

另外,请注意,还有一些其他更改。我将参数从id更改为delete_id,只是为了避免含糊不清。我更新了删除链接。我在运行删除查询之前检查$_GET['delete_id']是否已设置。而且,我正在铸造(int)$_GET['delete_id']以确保它实际上是一个整数。

+0

谢谢大家的建议,我会尝试这些方法,然后发布以帮助别人(或我)在未来:) –

+0

这个答案适合我,它是组织良好的工作 – humphrey

0

此时应更换

echo "<td bgcolor=\"#FFFFFF\"> 
      <a href=\"test_delete_ac.php?id={$row['id']}\">Delete row</a> 
     </td>"; 

有了这个,但与页面替换current_page.php那里是列表:

echo "<td bgcolor=\"#FFFFFF\"> 
      <a href=\"current_page.php?parem=delete&amp;id={$row['id']}\">Delete row</a> 
     </td>"; 

,并把这个在下面的列表页面的顶部连接

<?php 
     if(isset($_GET['parem']) && $_GET['parem']=="delete"){ 
      $id=$_GET['id']; 
     // Delete data in mysql from row that has this id 
     $sql="DELETE FROM testdelete.test_mysql WHERE id='$id'"; 
     $result=$link->query($sql); 

     // if successfully deleted 
     if($result){ 
      //redirect of the list page it is recommended// so use location to redirect to the list page 
     }else { 
     echo "ERROR"; 
     } 
    } 
?> 
// put the list code over here. 

除了这些尝试避免这种事情,它不是一个好的做法。我会建议使用类。

Replace <td bgcolor=\"#FFFFFF\"> </td> with <td class='bgColor'> </td>