从表HTML中检索特定的行值并将其提交给PHP

时间:2017-08-18 17:26:50

标签: javascript php jquery html

我从我的数据库中填充表格,它看起来像这样:

<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 -->

表格显示效果很好,我的问题是当我尝试将特定行的第二列值&#34; PARAM_STUDIENFACH&#34; 提交到我的php网络服务时。它总是让我回到最后的价值。我知道,因为我在每一行都使用相同的 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);
        }
});

});

我现在的问题是警告&#34;项目&#34;显示正确但在我的数据库中它保存为以下示例:

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

如果有更多的优雅或正确的方法来做到这一点!请发布!谢谢大家。

1 个答案:

答案 0 :(得分:1)

<elem1>
    <elem2 class="getMe"></elem2>
    <elem3></elem3>
</elem1>

快速上下文查找参考。假设您有一个点击事件绑定在所有&#39; elem3&#39;在你的页面上。当您点击它时,您想要获得关联的&#39; elem2&#39;,而不是全部。通过该课程,您可以通过上下文来查看此元素。

//'this' being the elem3 that was clicked
$(this).closest('elem1').find('.getMe');

从您点击的元素中,它会找到共享的&#39; elem1&#39;两个人的父母&#39; elem2&#39;和&#39; elem3&#39;然后只找到&#39; .getMe&​​#39;属于那个父母。

更多阅读材料:http://learn.jquery.com/using-jquery-core/working-with-selections/