草庐IT

PHP:如何获取未知文本框的值?

coder 2023-10-26 原文

我无法获取未知文本输入的值。我目前有一个 for 循环,它将遍历 mysql 查询返回的行数组。返回的数据被迭代显示在页面上。每行都包含自己的表单和按钮。如果单击该按钮,我希望它获取数组中同一行内的值并将它们发送到另一个页面。我的问题是,由于行数未知,我怎样才能获得单击按钮的行内的值?

编辑:

正如您在图像中看到的, Accordion 及其内部的卡片是由 for 循环生成的。卡片的数量将取决于 MySQL 查询返回的行数。为了验证我的问题,每个“卡片”内部都有输入,其中的值也来自 MySQL 查询,因此,如果用户单击“编辑客户端”,我只想获取其卡片内文本框的值。以下是生成每张卡片的代码:

代码:

$counter = 0;
foreach($clients as $client) {
echo '
<div class="card">
<div class="card-header" role="tab" id="heading'. $counter .'">
    <h5 class="mb-0">
    <div class="row">
        <div class="d-flex align-items-center schedule-flex">
            <div class="col-8 col-md-10">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapse'. $counter .'" aria-expanded="true" aria-controls="collapse'. $counter .'">
                    '. $client['fName'] .' '. $client['lName'] .'
                </a>
            </div>
        </div>
    </div>
    </h5>
</div>
<div id="collapse'. $counter .'" class="collapse" role="tabpanel" aria-labelledby="heading'. $counter .'">
<div class="card-block">
    <form action="editClient.php">
        <div class="row">
            <div class="col-12 col-md-6">
                <label for="fname">First Name</label>
                <input name="fname" class="form-control" type="text" value="'. $client['fName'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="lname">Last Name</label>
                <input name="lname" class="form-control" type="text" value="'. $client['lName'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="address">Address</label>
                <input name="address" class="form-control" type="text" value="'. $client['address'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="phone">Phone Number</label>
                <input name="phone" class="form-control" type="text" value="'. $client['telephone'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="email">Email Address</label>
                <input name="email" class="form-control" type="text" value="'. $client['email'] .'" disabled>
            </div>
        </div>
        <button class="btn btn-lg btn-primary btn-block schedule-submit" type="submit">Edit Client</button>
        <br />
    </form>
</div>
</div>
</div>
';
$counter++;

最佳答案

据我所知,我认为您在提交表单时遇到了问题。根据您的描述和代码,您似乎正在生成多个表单。

  1. 您的表单没有任何method = "post" 所以我添加了操作。
  2. 为了分别提交每个表单,我使用计数器为每个表单添加了唯一的 ID。
  3. 为包含计数器编号的按钮添加了 ID,因此每个表单都有唯一的表单 ID 和按钮 ID,因此现在您可以单独提交该表单。
  4. 您现在可以使用 PHP 提交表单。
  5. 我已经添加了提交表单的脚本。首先获取按钮 ID,然后使用该按钮 ID 提交表单。
  6. 最后,如果需要,请在提交前检查验证。

代码如下:

$counter = 0;
foreach($clients as $client) {
echo '
<div class="card">
<div class="card-header" role="tab" id="heading'. $counter .'">
    <h5 class="mb-0">
    <div class="row">
        <div class="d-flex align-items-center schedule-flex">
            <div class="col-8 col-md-10">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapse'. $counter .'" aria-expanded="true" aria-controls="collapse'. $counter .'">
                    '. $client['fName'] .' '. $client['lName'] .'
                </a>
            </div>
        </div>
    </div>
    </h5>
</div>
<div id="collapse'. $counter .'" class="collapse" role="tabpanel" aria-labelledby="heading'. $counter .'">
<div class="card-block">
    <form action="editClient.php" method="post" id="form'. $counter .'">
        <div class="row">
            <div class="col-12 col-md-6">
                <label for="fname">First Name</label>
                <input name="fname" class="form-control" type="text" id="fname'. $counter .'" value="'. $client['fName'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="lname">Last Name</label>
                <input name="lname" class="form-control" type="text" id="lname'. $counter .'" value="'. $client['lName'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="address">Address</label>
                <input name="address" class="form-control" type="text" id="address'. $counter .'"  value="'. $client['address'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="phone">Phone Number</label>
                <input name="phone" class="form-control" type="text" id="phone'. $counter .'" value="'. $client['telephone'] .'" disabled>
            </div>
            <div class="col-12 col-md-6">
                <label for="email">Email Address</label>
                <input name="email" class="form-control" type="text" id="email'. $counter .'" value="'. $client['email'] .'" disabled>
            </div>
        </div>
        <button class="btn btn-lg btn-primary btn-block schedule-submit edit_client_button" id="'. $counter .'" type="submit">Edit Client</button>
        <br />
    </form>
</div>
</div>
</div>
';
$counter++;


// Saperatedly add the Script to with your javascript files. I have added here just for example. put it in a right place.

<script type="text/javascript">    

    $(".edit_client_button").click(function() {
        var buttonid = this.id;             
        $( "#form"+buttonid ).submit();     
    });

</script>

我已在您希望在点击时获得值(value)的每个输入中添加了 id 属性。 更新了用于在单击按钮时获取输入值的脚本。

<script type="text/javascript">    

    $(".edit_client_button").click(function() {
        var buttonid = this.id;             
        var fname = $('#fname'+buttonid); //Kevin
        var lname = $('#lname'+buttonid); //Smith
        var address = $('#address'+buttonid); //1212 Test Street
        var phone = $('#phone'+buttonid); //8472934569 
        var email = $('#email'+buttonid); //kevin.smith@gmail.com



        // This variabls contail the input value which you want on click. 

        // Use console.log(); to see the value or simply alert();
        // example: console.log(email); or alert(email);

    });

</script>

根据您的评论,我没有正确理解您的意思。你提到你需要一个值(value)形式的输入。 示例:

If the button, "edit client" inside Kevin Smith is clicked, I would like for my php script to grab the values inside the textbox, i.e. Kevin, Smith, 1212 Test Street, 2929292929 and test.test@gmail.com.

我建议的脚本是为您提供表单中的所有值,但是如果您想单独获取该输入值,我已经更新了答案代码,请检查。

关于PHP:如何获取未知文本框的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45474046/

有关PHP:如何获取未知文本框的值?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  10. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

随机推荐