【问题标题】:Onclick submit, in a form, get inputbox value into variable and output it into another inputboxonclick提交,在一个表单中,获取输入框值到变量中,输出到另一个输入框
【发布时间】:2013-08-06 11:01:26
【问题描述】:

我正在开发一个工作设备表单,将其结果输出到 CRM(客户关系管理)中。

我的问题是我的客户希望在表单上的不同字段中输入后,将字段“街道地址、邮政编码和地区”一起输出到 CRM 的一个字段中。

所以我认为我应该使用 php,因为当用户单击提交时,它会获取每个字段的值并将其输入到我创建的隐藏字段中。 出于某种原因,因为我不是 php 专家,所以它不起作用。 它确实没有向 CRM 输出任何价值

这是我到目前为止所得到的:

<form action="https://service.capsulecrm.com/service/newlead" method="post">

    <input name="morada" id="morada" maxlength="255" title="" style="border-style: solid; border-width: 1px; border-color: #cccccc; position: absolute; margin: 0px; padding: 0px; width: 220px; height: 20px; font-family: Tahoma; font-size: 11px; color: #333333; background-color: #ffffff; z-index: 1; left: 189px; top: 397px;" value="" type="text">

    <input name="postal" id="postal" maxlength="255" title="" style="border-style: solid; border-width: 1px; border-color: #cccccc; position: absolute; margin: 0px; padding: 0px; width: 220px; height: 20px; font-family: Tahoma; font-size: 11px; color: #333333; background-color: #ffffff; z-index: 1; left: 189px; top: 437px;" value="" type="text">

    <input name="local" id="local" maxlength="255" title="" style="border-style: solid; border-width: 1px; border-color: #cccccc; position: absolute; margin: 0px; padding: 0px; width: 220px; height: 20px; font-family: Tahoma; font-size: 11px; color: #333333; background-color: #ffffff; z-index: 1; left: 189px; top: 467px;" value="" type="text">


    <?php if ($_POST['submit']) {

    $addressmorada = $_POST['morada'];
    $addresspostal = $_POST['postal'];
    $addresslocal = $_POST['local'];

    echo "<input type='hidden' name='STREET' value='".$addressmorada. " " .$addresspostal. " " .$addresslocal."' />";

    }

    ?>

<input name="submit" type="submit" value="Submit" style="
    border-style: none; border-width: 0px; border-color: #888888; position: absolute; margin: 0px; padding: 0px; width: 93px; height: 33px; z-index: 1; 
    left: 433px; top: 1773px;
    text-indent: 99999999999999px;
    background: green;
    cursor: pointer;
">


</form>

我将尝试解释我的 PHP 代码,

  1. 它在提交时调用函数的 if 语句。
  2. 变量获得不同的输入值。
  3. 我回显一个隐藏的输入字段类型,调用变量,以便所有信息都在一个字段中输出到 CRM 中

我认为主要问题可能在 3 号上!我会感谢任何帮助。 抱歉,如果我的英语不好,那不是我的母语。

【问题讨论】:

  • formsubmit 元素在哪里?
  • 使用 textarea 来收集所有三部分数据怎么样?
  • 对不起,我认为这不重要,用表单标签和提交按钮编辑
  • DevlshOne,这是不可能的选择,谢谢
  • 为什么这不起作用?有什么问题?

标签: php forms variables input submit


【解决方案1】:

两个问题:

1,

   if ($_POST['submit'])

如果没有$_POST 数据,则会抛出错误:Notice: Undefined index: submit in ...

应该改成

if (isset($_POST['submit']))

2,$_POST['submit'] 永远不会出现,因为没有名为 submitname 属性。您应该将此添加到您的“提交”按钮:

<input type="submit" value="Submit" name="submit" style="[STYLES_HERE]">

【讨论】:

  • 我用 Rabi 的回答尝试了 OP 的代码,使 if ($_POST['submit']) 完好无损,即使没有输入数据,它也能正常工作。我没有收到Undefined index... 错误。 FF v22 - 虽然if (isset($_POST['submit'])) 是更好的做法。
  • 我在测试代码时遇到了严格的错误。你确定你有一切吗?
  • 你所说的“一切都在”是什么意思?
  • error_reporting(E_ALL); 涵盖严格 |通知 |弃用 |警告 |解析等
  • 好吧,你是对的塞缪尔。我没有打开它,它确实显示了错误消息。但是,这不应该阻止代码执行。但你绝对是对的,我会从这里开始使用它,谢谢。就我而言 +1,干杯。
【解决方案2】:

你没有你的名字按钮右键。

<input type="submit" value="Submit" name = "submit" >

你有
如果($_POST['submit'])。

所以按钮的名称应该是提交。否则它永远不会出现在你的 if 语句中。 用于调试目的 尝试只打印 if 语句中的所有值。很有帮助。

【讨论】:

  • 虽然&lt;input type="submit" value="Submit" name = "submit" "&gt; 有轻微错误,但取出最后一个",如&lt;input type="submit" value="Submit" name = "submit"&gt; ;-)
  • 最后一个 " 来自 style=" "> 我会试试你的建议,谢谢。
  • @BrunoM93 我用 Rabin 的答案测试了你的代码,并且我在屏幕上成功打印了输出。然而,我认为它可以代表更多的工作,但我自己做不到。太广泛了。
  • @BrunoM93 只是一个建议。如果您将表单重定向到同一个文件中。您可以将操作留空 [action = ""]。由于您的 URL 很长,因此更不容易出错
【解决方案3】:

您混淆了服务器端代码和客户端代码。这是一个简单的解释,但您应该更多地记录自己的 HTTP 和 Web 服务器的工作方式:

  • 当用户 A 请求页面时,会向服务器发送 HTTP 请求
  • 此请求由 Web 服务器 B 处理
  • 根据某些规则(文件扩展名、文件位置...),Web 服务器可以决定简单地获取文件并将其发送到客户端 A(例如对于纯 HTML 文件),或者通过(PHP) 解释器,然后将 result 发送到客户端。
  • 无论如何,客户端 A 只接收 HTML:此时 PHP 已经被 B 执行了。

所以用户请求带有表单的页面。此时他还没有提交任何东西,所以 PHP 解释器在 $_POST 中什么也得不到,隐藏的输入是空的。

用户填写表单并提交。这会触发带有数据的新 HTTP 请求。但是当然隐藏的输入仍然是空的,并且永远不会被填充,因为 PHP 已经被执行了(并且永远不会是客户端)。

你需要做的是要么

  • 如果您有权访问目标脚本 (https://service.capsulecrm.com/service/newlead),请修改它,以便将字段连接在一起
  • 如果不能,添加一个中间 PHP 脚本作为表单的目标,将字段连接在一起,然后将 HTTP 请求本身(例如使用 curl)发送到 newlead
  • 或者,如果您不想在上面花费太多时间,请使用 客户端 代码(即 Javascript)来填充隐藏的输入。但是,您不能确定表单是否会正确提交(用户可以选择禁用 Javascript,或者客户端可能根本无法处理:这对于盲文设备很常见)。

【讨论】:

  • 你是绝对正确的,我想我会尝试一些 javascript 来做到这一点!
猜你喜欢
  • 1970-01-01
  • 2016-10-30
  • 2015-06-22
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多