【发布时间】:2017-08-18 17:26:50
【问题描述】:
我正在从我的数据库中填充一个表,它看起来像这样:
<form name = "Form" role="form" action ="php/teilnehmen.php" method="POST">
<fieldset>
<table width="100%" class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>ID</th>
<th>Studienfach</th>
<th>Teilnehmer/in</th>
<th>Teilnehmen</th>
</tr>
</thead>
<tbody>
//<?php php code.....
$i =0;
$sizeofstudienfaecherseperate =
count($studienfaecherseperate);
for ($i; $i < $sizeofstudienfaecherseperate; $i++) {
?>
<tr class="odd gradeX">
<td ><?php echo($i+1);?></td>
<td class="studienfach"><?php echo($studienfaecherseperate[$i]);?>
<input type="hidden" name="PARAM_STUDIENFACH" id="PARAM_STUDIENFACH"
value="<?php echo($studienfaecherseperate[$i]);?>"> </input>
</td>
<td ><?php echo($teilnehmer[$i]);?></td>
<td width="10%">
<?php if ($teilnahmestatus[$i] =="0"){ ?>
<button type="submit" class="btn btn-success use-address"
name="teilnehmern"id="teilnehmen">Teilnehmen</button>
<?php }else{?>
<button type="submit" class="btn btn-danger use-address" name="teilnahme-beenden"
id="teilnahme-beenden">Teilnahme beenden</button>
<?php }?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</fieldset> <!-- /.table-responsive -->
表格显示得很好,我的问题是当我尝试将特定行的第二列值 "PARAM_STUDIENFACH" 提交到我的 php web 服务时。它总是给我最后的价值。我知道,因为我在每一行中都使用相同的 id,所以它会被覆盖。我尝试使用 JavaScript 从论坛中的其他问题返回点击行的值,但它对我不起作用。如果有帮助,我正在使用引导表。
编辑 1:
感谢@Taplar 的回答,我设法找到了解决问题的方法。我使用这个 JavaScript 来检索数据和 ajax 来发送一个发布请求。这是我使用的代码:
$(".use-address").click(function() {
var item = $(this).closest("tr") // Finds the closest row <tr>
.find(".studienfach") // Gets a descendent with class="nr"
.text(); // Retrieves the text within <td>
$.ajax({
type: "POST",
dataType: "json",
url: "php/teilnehmen.php",
data: {PARAM_STUDIENFACH:item},
success: function(data){
alert(item);
},
error: function(e){
console.log(e.message);
}
});
});
我现在的问题是在警报中“项目”正确显示,但在我的数据库中它被保存为以下示例:
item = a(在警报 a 中显示)
item = a \n(在数据库中就这样保存在\n之后)
我在发送之前尝试修剪该项目,但我得到了相同的结果
要获取 ajax 发送的项目,我正在使用这行代码:
$studienfach = null;
if(isset($_POST['PARAM_STUDIENFACH']))
$studienfach = $mysqli->real_escape_string($_POST['PARAM_STUDIENFACH']);
编辑 2:
我设法通过这样做解决了我的第二个问题:
$pos= strpos($studienfach, "\\");
$studienfachtemp = substr($studienfach, 0,$pos);
trim($studienfachtemp);
如果有更优雅或更正确的方法!请张贴!谢谢大家。
【问题讨论】:
-
这里的数据库代码为零。
-
为什么 javascript 不适合你?
-
这是一个重复的 id 问题,而不是使用类和进行上下文查找。 @MarcodeZeeuw
-
请在下面查看我的答案。您不为此使用 id。你使用类。课程可以重复。
标签: javascript php jquery html