2014-04-25 85 views
1

我正在显示一些来自我的数据库的数据,我想能够将复选框放在显示的每条记录旁边。 我希望用户可以提交他们的选择,然后删除选定的记录。 我搜索了很多东西,但无法做任何工作。我正在寻找简单的osmething。 这里是我的代码:如何把复选框放在数据库显示的数据旁边 - pho,sql

<?php 
//include('conn.php'); 
$con=mysqli_connect(); 
session_start(); 
if (!isset($_SESSION['ID'])){ 
header('location:login.php'); 
} 
// 
?> 
<?php 

if (!$link = mysql_connect()) { 
    echo 'Could not connect to mysql'; 
    exit; 
} 

if (!mysql_select_db()) { 
    echo 'Could not select database'; 
    exit; 
} 

$villageId = $_GET['village']; 
$ID = $_SESSION['ID']; 



$sql ="SELECT * 
FROM favourites 
INNER JOIN attractions ON favourites.AttractionID = attractions.AttractionID 
INNER JOIN customer ON favourites.ID = customer.ID 
WHERE favourites.ID = '$ID' "; 

$result = mysql_query($sql, $link); 

if (!$result) { 
    echo "DB Error, could not query the database\n"; 
    echo 'MySQL Error: ' . mysql_error(); 
    exit; 
} 








while ($row = mysql_fetch_assoc($result)) { 

echo $row['Name'] ; 



} 









if (!mysqli_query($con,$sql)) 
{ 
    die('Error: ' . mysqli_error($con)); 
} 



mysqli_close($con); 



?> 

谁能给我一些建议吗? 谢谢。数据输出附近

回答

2

简单的附加复选框:

while ($row = mysql_fetch_assoc($result)) { 
    echo " <input type='checkbox' value='".$row['id']."' /> ".$row['Name']; 
} 

据我了解,你需要这样的:

  1. 输出某些行data - checkbox
  2. 用户会选择一些复选框和数据,与复选框连接将从数据库中删除。
  3. 从页面中删除已删除的数据。

如何实现这一目标?

你需要下面的HTML代码来ahieve你想要什么(+你需要一些JavaScript,我会告诉它以后):

<form id='myForm'> 
    <div id='1'> 
     <input type='checkbox' name='data[]' value='1' />Row 1</div> 
    <div id='2'> 
     <input type='checkbox' name='data[]' value='2' />Row 1</div> 
    <div id='3'> 
     <input type='checkbox' name='data[]' value='3' />Row 1</div> 
</form> 

看的是示例代码+串行链路onclick处理形式here

生成相同的输出在PHP中:

// execute query 
echo "<form id='myForm'>"; 
while ($row = mysql_fetch_assoc($result)) { 
    echo "<div id='".$row['id']."'><input type='checkbox' value='".$row['id']."' /> ".$row['Name']." </div>"; 
} 
echo "<a href='#' id='delete'>Delete</a>"; 
echo "</form>"; 

所以,现在我们做了我们的名单和第2的一半(连载形式)的第一个项目。

如何实现第二项的另一半。我们必须创建php脚本,我们将从数据库中删除行。

deleteScript.php脚本:

// connect to the base 
foreach($id in $_POST['data']) { 
    $query = "delete from `favourites` where `id` = ".$id; 
    // execute your query 
} 

剧本写好了。现在您必须将我们页面的请求发送到此脚本。使用Ajax请求它:

$("#delete").on('click', function() { 
    var data = $("#myForm").serialize(); 
    if(data != '') { 
     $.ajax({ 
      url: "deleteScript.php", 
      data: data 
     }); 
    } 
    else 
    { 
     alert("select some checkboxes"); 
    } 
}); 

这段JavaScript代码与以前的HTML代码

Example here工作。

现在,我们列表中的第1和第2项完成。

让我们从我们的页面上删除删除的项目immidiately(待办事项列表的第3项):

$("input:checkbox:checked").each(function() 
{ 
    var id = $(this).val(); 
    $("div#"+id).remove(); 
}); 

您可以测试该代码here

这个例子是为了告诉你,我的方法工作。但!如果请求已成功发送,您必须删除div。所以你必须编辑$.ajaxsuccess处理程序。请检查this fiddle

所以,现在我们从我们的列表中做出所有项目。

最后的例子在这里:http://jsfiddle.net/575VS/18/

你要过去,复制只是为了你的文件:)

希望,这将有助于。

注意,你可以得到一个Ajax请求响应。

$.ajax({ 
    //some properties 
    success: function(data) { 
     //response will be in data variable 
    } 
}); 

如果你想在数据库中使用删除所选行的代码之后重定向页面:

if(data != '') { 
    $.ajax({ 
     url: "deleteScript.php", 
     data: data, 
     success: function() { 
      window.location.replace("new link here"); 
     } 
    }); 
} 
+0

谢谢,这个工程,但由于没有提交,我该如何调用一个查询,将删除它们呢? – user3565574

+0

删除?这是另一个问题:)但是...你想要在按钮点击或刷新后立即从页面中删除它们吗? –

+0

但是这真的是另一个问题:) –

1

只是为了扩大Sharikov的回答是:你需要把复选框中的循环,因为他所描述,但如果你希望能够传递信息到另一个剧本,那你需要一些更多的东西,用户输入的工作原理:

echo "<form action='receiver.php' method='post'>"; 
while ($row = mysql_fetch_assoc($result)) { 
    echo " <input type='checkbox' value='".$row['id']."' name='checkedBoxes[]'/> ".$row['Name']; 
} 
echo "<input type='submit' value='process'>"; 
echo "</form>"; 

然后在receiver.php:

foreach($_POST['checkedBoxes'] as $box){ 
    $id = $box; 
    //THEN DO SOMETHING TO EACH ID 
} 

如果你也想看看哪个箱子被选中,那么事情就变得有点复杂,因为POST和GET只会把托运的复选框的值。我可以通过几种方式来做到这一点。一种方法是通过通过$ _SESSION变量显示到下一个脚本的所有ID的数组:

session_start(); 
$ids = new Array(); 
echo "<form action='receiver.php' method='post'>"; 
while ($row = mysql_fetch_assoc($result)) { 
    echo " <input type='checkbox' value='".$row['id']."' name='checkedBoxes[]'/> ".$row['Name']; 
    array_push($ids, $row['id']; 
} 
$_SESSION['ids'] = $ids; 
echo "<input type='submit' value='process'>"; 
echo "</form>"; 

,然后receiver.php可以引用数组$ _SESSION [“IDS”]和将它与检查的值进行比较。只要确保你放置session_start();在你的代码中能够看到变量!

祝你好运!

+0

嘿,我可以自己扩展它:(((正如我已经这样做:P –

+0

HI约翰。我尝试了你的代码,但它没有做任何事情,它不会从数据库中删除。 – user3565574

+0

您可以在代码中添加该代码//在此处对每个ID执行一些操作。你将不得不做另一个查询,它沿着'$ sql =“DELETE FROM favorites WHERE id =”的方向行进。 $ box;'但这是不好的数据库实践,因为很可能,你的删除将包含另一个记录的外键,因此打破了链接。根据您的设置,您的数据库甚至可能会针对此事件抛出异常 –

相关问题