twitter-bootstrap 如何通过模态编辑mysql中的数据
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/27559872/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to edit data in mysql through a modal
提问by Riley
I've been having errors with this code. I'm new to bootstrap and using modals for things. I used to run off child forms for all my 'fancy' forms but now I'm doing a move towards modals. This is my code for grabbing the modals:
这段代码我一直有错误。我是引导程序和使用模态的新手。我曾经为我所有的“花哨”表单使用子表单,但现在我正在向模态迈进。这是我获取模态的代码:
<button class="btn btn-primary" data-toggle="modal" data-target="#newmemberModal">Add new Member</button>
<br />
<br />
<?php
$result = mysql_query("SELECT * FROM `players` ORDER BY `players`.`user` ASC")
or die(mysql_error());
echo " <div class='table-responsive'><table class='table'>";
echo "<tr><th>Username</th> <th>Rank</th> <th>Position</th> <th>DoP</th> <th>Tag</th> <th>AiT</th> <th>Service Stripes</th> <th>Notes</th> <th></th> <th></th><th></th></tr>";
while($row = mysql_fetch_array( $result )) {
echo "<tr>";
echo '<td>' . $row['user'] . '</td>';
echo '<td>' . $row['rank'] . '</td>';
echo '<td>' . $row['position'] . '</td>';
echo '<td>' . $row['date'] . '</td>';
echo '<td>' . $row['tag'] . '</td>';
echo '<td>' . $row['ait'] . '</td>';
echo '<td>' . $row['ss'] . '</td>';
echo '<td>' . $row['notes'] . '</td>';
echo '<td><button class="btn btn-default" data-toggle="modal" data-target="#editModal">Edit</button></td>';
echo '<td><a href="classes/forms/delete.php?id=' . $row['id'] . '">Delete</a></td>';
echo '<td><a href="javascript:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("dd.php?id=' . $row['id'] . '","Ratting","width=350,height=550,0,status=0,");>DD</a><BR /><a href="javascript:void(0);" NAME="My Window Name" title=" My title here " onClick=window.open("hd.php?id=' . $row['id'] . '","Ratting","width=350,height=550,0,status=0,");>HD</a></td>';
echo "</tr>";
}
echo "</table> </div>";
?>
Here's my edit.php:
这是我的edit.php:
<?php include_once('classes/check.class.php'); ?>
<?php
function renderForm($id, $user, $rank, $position, $date, $tag, $ait, $ss, $notes, $error)
{
?>
<?php
if ($error != '')
{
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
}
?>
<?php if( protectThis("1, 2") ) : ?>
<center><form action="" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
<div>
<strong>Username: *</strong> <br/><input class="tb5" type="text" name="user" value="<?php echo $user; ?>" /><br/><br/>
<strong>Rank: * Current is </strong> <?php echo $rank; ?> <br/>
<select name="rank">
<option value="recruit" <?php if ($rank == 'recruit') echo 'selected'; ?>>Pending Rank</option>
<option value="officer" <?php if ($rank == 'officer') echo 'selected'; ?>>PVT</option>
<option value="leader" <?php if ($rank == 'leader') echo 'selected'; ?>>PV2</option>
</select><br/><br/>
<strong>Position: </strong> <br/><input class="tb5" type="text" name="position" value="<?php echo $position; ?>" /><br/><br/>
<strong>Date: *</strong> <br/><input class="tb5" type="text" name="date" value="<?php echo $date; ?>" /><br/><br/>
<strong>Tag: *</strong> <br/><input class="tb5" type="text" name="tag" value="<?php echo $tag; ?>" /><br/><br/>
<strong>AiT's: </strong> <br/><input class="tb5" type="text" name="ait" value="<?php echo $ait; ?>" /><br/><br/>
<strong>Service Stripes: </strong><br/> <input class="tb5" type="text" name="ss" value="<?php echo $ss; ?>" /><br/><br/>
<strong>Notes: </strong><br/> <input class="tb5" type="text" name="notes" value="<?php echo $notes; ?>" /><br/><br/>
<input class="btn-style" type="submit" name="submit" value="Submit"></center>
</div>
</form>
<?php elseif( protectThis(6) ) : ?>
<center><form action="" method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
<div>
<strong>Username: *</strong> <br/><input class="tb5" type="test" name="user" value="<?php echo $user; ?>" disabled /><br/><br/>
<strong>Rank: * Current is </strong> <?php echo $rank; ?> <br/>
<select name="rank">
<option value="recruit" <?php if ($rank == 'recruit') echo 'selected'; ?>>PVT</option>
<option value="officer" <?php if ($rank == 'officer') echo 'selected'; ?>>PV2</option>
</select><br/><br/>
<strong>Position: </strong> <br/><input class="tb5" type="hidden" name="position" value="<?php echo $position; ?>" /><br/><br/>
<strong>Date: *</strong> <br/><input class="tb5" type="text" name="date" value="<?php echo $date; ?>" /><br/><br/>
<strong>Tag: *</strong> <br/><input class="tb5" type="text" name="tag" value="<?php echo $tag; ?>" /><br/><br/>
<strong>AiT's: </strong> <br/><input class="tb5" type="text" name="ait" value="<?php echo $ait; ?>" /><br/><br/>
<strong>Service Stripes: </strong><br/> <input class="tb5" type="hidden" name="ss" value="<?php echo $ss; ?>" /><br/><br/>
<strong>Notes: </strong><br/> <input class="tb5" type="hidden" name="notes" value="<?php echo $notes; ?>" /><br/><br/>
<input class="btn-style" type="submit" name="submit" value="Submit"></center>
</div>
</form>
<?php endif; ?>
<?php
}
include('connect-db.php');
if (isset($_POST['submit']))
{
if (is_numeric($_POST['id']))
{
$id = $_POST['id'];
$user = mysql_real_escape_string(htmlspecialchars($_POST['user']));
$rank = mysql_real_escape_string(htmlspecialchars($_POST['rank']));
$position = mysql_real_escape_string(htmlspecialchars($_POST['position']));
$date = mysql_real_escape_string(htmlspecialchars($_POST['date']));
$tag = mysql_real_escape_string(htmlspecialchars($_POST['tag']));
$ait = mysql_real_escape_string(htmlspecialchars($_POST['ait']));
$ss = mysql_real_escape_string(htmlspecialchars($_POST['ss']));
$notes = mysql_real_escape_string(htmlspecialchars($_POST['notes']));
if ($user == '' || $rank == '' || $date == '' || $tag == '')
{
$error = 'ERROR: Please fill in all required fields!';
@renderForm($id, $user, $rank, $position, $date, $tag, $ait, $ss, $notes, $error);
}
else
{
mysql_query("UPDATE players SET user='$user', rank='$rank', position='$position', date='$date', tag='$tag', ait='$ait', ss='$ss', notes='$notes' WHERE id='$id'")
or die(mysql_error());
header("Location: home.php");
}
}
else
{
echo 'Error!';
}
}
else
{
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
{
$id = $_GET['id'];
$result = mysql_query("SELECT * FROM players WHERE id=$id")
or die(mysql_error());
$row = mysql_fetch_array($result);
if($row)
{
$id = $row['id'];
$user = $row['user'];
$rank = $row['rank'];
$position = $row['position'];
$date = $row['date'];
$tag = $row['tag'];
$ait = $row['ait'];
$ss = $row['ss'];
$notes = $row['notes'];
@renderForm($id, $user, $rank, $position, $date, $tag, $ait, $ss, $notes, '');
}
else
{
echo "No results!";
}
}
else
{
echo 'Error!';
}
}
?>
The problem is I keep getting my 'Error!' message in the modal box and not anything else. The goal I'm trying to do is have it pull up data from an ID that's stored in my database. I think the issue really is that it's not grabbing the ID when I click edit on the user. Quite frankly, I don't know how I would be able to edit an ID through a modal. Help would be much appreciated. Thanks
问题是我不断收到“错误!” 模态框中的消息而不是其他任何内容。我试图做的目标是让它从存储在我的数据库中的 ID 中提取数据。我认为问题真的在于当我点击用户编辑时它没有抓取 ID。坦率地说,我不知道如何通过模态编辑 ID。帮助将不胜感激。谢谢
Bonus: I can't open two modals on the same page. If i have two on the same page none of them show up:
奖励:我无法在同一页面上打开两个模态。如果我在同一页面上有两个,它们都不显示:
<!--Modals-->
<div class="modal fade" id="newmemberModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Add New Member</h4>
</div>
<div class="modal-body">
<?php include("classes/forms/new.php"); ?>
</div>
</div>
</div>
</div>
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Edit</h4>
</div>
<div class="modal-body">
<?php include("classes/forms/edit.php"); ?>
</div>
</div>
</div>
</div>
回答by mccbala
Your edit button doesn't pass the ID to edit.phpwhich is the reason why the modal is not activated. You need is populating the content of the edit modal before opening it and not while loading it. Using includewill load the edit page without passing an ID to it.
您的编辑按钮未将 ID 传递给edit.php导致模态未激活的原因。您需要在打开它之前而不是在加载它时填充编辑模式的内容。使用include将加载编辑页面而不将 ID 传递给它。
Rewrite your edit button to contain ID
重写您的编辑按钮以包含 ID
<button class="btn btn-primary" data-toggle="modal"
data-target="#editModal" data-formid="<?php echo $id; ?>">
Edit <?php echo $id; ?>
</button>
JS for loading edit form while opening the modal
用于在打开模态时加载编辑表单的 JS
//jQuery function for loading data
$("#editModal").on('show.bs.modal', function(event){
var button = $(event.relatedTarget);
//bootstrap way of retrieving data-* attributes
//data-formid in this case
var id = button.data('formid');
$.get(yourSiteUrl+'/classes/forms/edit.php?id='+id,
function(data) {
$("#editModal .modal-title").html(data);
//Resize the modal to the size of the loaded form.
$("#editModal").modal("handleUpdate");
});
});
Check this tutorial to learn about bootstrap modals
P.S: I know OP might've solved this issue by now or would've taken a different approach, I have posted the answer so that it might be useful to others.
PS:我知道 OP 现在可能已经解决了这个问题,或者会采取不同的方法,我已经发布了答案,以便对其他人有用。
回答by Dee_wab
try this..
//edit link or button.
试试这个..
//编辑链接或按钮。
<a href="#" data-toggle="modal" data-target="#myModal_23" data-formid="<?php echo $id; ?>" class="button yellow" >
<i class="ace-icon fa fa-pencil bigger-130"></i>
</a>
//ajax_edit.php
//modal window
<div class="modal fade " id="myModal_23" role="dialog">
$id = $_REQUEST['id'];
//echo $id;
//code
</div>
//script
//脚本
<script>
$("#myModal_23").on('show.bs.modal', function(event){
var button = $(event.relatedTarget);
var id = button.data('formid');
//alert(id);
$.get('ajax_edit.php?id='+id,
function(data) {
$("#myModal_23").html(data);
});
});
</script>

