HTML FORM如何只使用字母而不是数字?

时间:2015-05-29 20:54:44

标签: php html web

在可能的Addvalue.php文件中,3个字段的id,name,color ...在id中只有数字允许,在名称和颜色上只允许使用字母。值已成功插入到我的数据库中,但问题是当用户在HTML FORM字段中写入NAME和COLOR时,只有LETTERS允许写入,如果写入任何NUMBER消息,则显示“仅允许字母”....但它需要数字和字母。这是我的两个文件代码:

Addvalue.php代码:

<form  method="post" action="addh.php">
<input type="number" name="id"  id="id" required /> <span class="error">* </span> 
<input type="text" name="name" id="name" required /> <span class="error">* </span>
<input type="text" name="color" id="color" />
<?php
include("config.php");
if (isset($_POST["submit"])) {
                 $id = $_POST["id"];
      $name = $_POST["name"];
      $color = $_POST["color"];     
     if (!preg_match("/^[a-zA-Z -]+$/",$name)) {
       echo "Only letters allowed"; 
     } 
 if(!preg_match("/^[a-zA-Z -]+$/",$color)) {
       echo "Only letters allowed"; 
     }
     }
?>

addh.php代码:

<?php
include("config.php");
    $sql="INSERT INTO honda (id, name, color)
VALUES ('$_POST[id]','$_POST[name]','$_POST[color]')";
    $result = mysqli_query($link,$sql) or die(mysqli_error($link));
    echo "Values Inserted";
?>

2 个答案:

答案 0 :(得分:3)

而不是使用PHP,在输入中尝试HTML模式属性,如下所示:

<form action="">
Country code: <input type="text" name="country_code" 
pattern="[A-Za-z]{3}" title="Three letter country code">
<input type="submit">
</form>

更多信息: W3School

答案 1 :(得分:0)

PHP在HTML之前加载,直到下次加载才可用。那么你的页面当前就是。

加载此内容:

<?php
include("config.php");
if (isset($_POST["submit"])) {
                 $id = $_POST["id"];
      $name = $_POST["name"];
      $color = $_POST["color"];     
     if (!preg_match("/^[a-zA-Z -]+$/",$name)) {
       echo "Only letters allowed"; 
     } 
 if(!preg_match("/^[a-zA-Z -]+$/",$color)) {
       echo "Only letters allowed"; 
     }
     }
?>

然后这个

<form  method="post" action="addh.php">
<input type="number" name="id"  id="id" required /> <span class="error">* </span> 
<input type="text" name="name" id="name" required /> <span class="error">* </span>
<input type="text" name="color" id="color" />

提交该表单后,它会直接转到此...

<?php
include("config.php");
    $sql="INSERT INTO honda (id, name, color)
VALUES ('$_POST[id]','$_POST[name]','$_POST[color]')";
    $result = mysqli_query($link,$sql) or die(mysqli_error($link));
    echo "Values Inserted";
?>

盲目地插入数据,没有验证。我认为你想要的是......

Addvalue.php

<form  method="post" action="addh.php">
<input type="number" name="id"  id="id" required /> <span class="error">* </span> 
<input type="text" name="name" id="name" required /> <span class="error">* </span>
<input type="text" name="color" id="color" />
<input type="submit" name="submit" value="Submit" />
</form>

然后addh.php成为:

if (isset($_POST["submit"])) {
      $id = (int)$_POST["id"];
      $name = mysqli_real_escape_string($link, $_POST["name"]);
      $color = mysqli_real_escape_string($link, $_POST["color"]);
      if (!preg_match("/^[a-zA-Z -]+$/",$name)) {
          $error = 'Only letters allowed'; 
      } 
      if(!preg_match("/^[a-zA-Z -]+$/", $color)) {
          $error = 'Only letters allowed'; 
     }
     if(empty($error)) {
          include("config.php");
          $sql="INSERT INTO honda (id, name, color) VALUES ('$id','$name','$color')";
          $result = mysqli_query($link,$sql) or die(mysqli_error($link));
          echo "Values Inserted";
     } else {
         echo $error;
     }
}

你应该查看准备好的陈述。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

这是一个未经测试的起点。需要注意的其他事项id应该是自动递增。