【问题标题】:Inserting a predefined value into mysql if the form's text input field remains blank如果表单的文本输入字段保持空白,则将预定义值插入 mysql
【发布时间】:2012-10-23 05:03:42
【问题描述】:

以下表格收集有关访问者颜色偏好的数据。

如果用户在我不想阻止时提交空白表单,我如何使用explode函数将默认值(例如,"No Color Chosen" 是此处的默认值,在数据库中不可用)插入到mysql数据库中用户提交空白表单。

虽然我不确定使用 explode 函数是否是正确的方法,但我尝试使用以下语法

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {    
$color = "No Color Chosen ({$_POST['color_name']};)";
$colors = explode (" ", $color);

$insertSQL = sprintf("INSERT INTO colortable (color_name) VALUES (%s)",


GetSQLValueString(trim($colors[]), "text")),

  mysql_select_db($database_x, $x;
  $Result1 = mysql_query($insertSQL, $x) or die(mysql_error());

  $insertGoTo = "choice.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));

<form action="<?php echo $editFormAction; ?>" method="post" name="form1"   id="form1">
    <table align="center">
        <tr valign="baseline">
            <td align="right" nowrap="nowrap">Enter Color Name:</td>
            <td>
                <input type="text" name="color_name" value="" size="32" />
            </td>
        </tr>
        <tr valign="baseline">
            <td nowrap="nowrap" align="right">
                <input type="hidden" name="MM_insert" value="form1" />
            </td>
            <td>
                <input type="submit" value="Submit Color Name" />
            </td>
        </tr>
    </table>
</form>
</td>
</tr>
</table>

我应该如何定义以下值

  value=
    "<?php echo $_POST($colors[0]);?>"
    "<?php echo $_POST($colors[1]);?>"

作为表单文本输入值的条件语句

<input type="text" name="color_name" value="conditional statement goes here" size="32" />

在这种情况下,以便在空白表单提交时插入源自&lt;?php echo $_POST($colors[0]);?&gt; 的默认值默认值“未选择颜色”?

顺便说一句,这里 $color 数组的另一个元素$colors[1] 应该通过值"&lt;?php echo $_POST($colors[1]);?&gt;" 将用户输入发布到数据库(如果有的话)。

还有其他简单的方法吗?

【问题讨论】:

标签: php html mysql forms


【解决方案1】:

我什至不明白你的表单是如何工作的。我能给你的最好的主意就是将值设置为这个(在开头的某个地方)......

    $color = "DEFAULT VALUE";
    if(isset($_POST['color_name']) && !empty($_POST['color_name'])){
       $color = $_POST['color_name'];
    }

在该行之后使用 $color 变量进行下一步操作..

【讨论】:

  • 如果你想你可以设置 if && !empty($_POST['color_name']) 来检查值是否不为空。
  • value="&lt;?php echo "$color";?&gt;" 在提交表单时不会在数据库中输入任何内容,如果表单的输入字段仍然是银行。我不想阻止用户提交空白表单。谢谢,
  • 我的代码适用于您使用已提交的表单数据时。当用户提交表单时,如果 isset color_name 它将覆盖默认值,否则它将保持默认值..
  • 点赞!该语法不仅适用于数据库中已提交的表单数据,而且如果相应的表单字段在提交过程中保持空白,还会将新的预定义默认值插入数据库。非常感谢,
【解决方案2】:

我不会直接回答 PHP 问题,但至少占位符文本功能可以在 HTML5 中默认完成,无需任何 Javascript 或测试默认值未输入数据库:

&lt;input type="text" placeholder="my text to be replaced"/&gt;

支持看起来相当不错 (http://wufoo.com/html5/),尽管您可以在不支持它的浏览器中轻松地对其进行 polyfill - 请参见此处:https://github.com/ginader/HTML5-placeholder-polyfill

一个实例:

http://jsfiddle.net/jjnbF/1/

【讨论】:

  • 作为表单的输入提示很好。这实际上不是我所要求的。谢谢,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
相关资源
最近更新 更多