1

基本上我想添加最后一个验证,如果在项目页面上没有选择任何内容,则会出现错误或用户返回到另一个页面。

选择提交后,表单操作将其发送到确认页面并执行以下操作,如果输入 1 个或多个 if ($partno == $varname & $qty > 0) 但我不知道要做什么,则显示所选项目放入 else 部分以返回错误或将用户带回上一页。

<?php
            $visitor = $_POST['visitor'];
            echo "<p>" . 'Hello ' . "<b>" . $visitor . "</b>&nbsp;" . 'please confirm your purchase(s) below.' . "</p>";

            if (!($data = file('items.txt'))) {
                echo 'ERROR: Failed to open file! </body></html>';
                exit;
            }
            $total = 0;
            foreach ($_POST as $varname => $varvalue) {
                $qty = $varvalue;
                foreach ($data as $thedata) {
                    list($partno, $name, $description, $price, $image) = explode('|', $thedata);
                    if ($partno == $varname & $qty > 0) {
                        echo "<tr><td><img src='$image' width='50' height='50' alt='image'</td>
                        <td>$partno<input type='hidden' name='$partno' value=$partno></td><td>$name</td><td>&pound;$price</td>
                            <td>&nbsp;&nbsp;&nbsp;&nbsp;$qty</td><td><input type='hidden' name='visitor' value=$visitor></td>
                                <td><input type='hidden' name='qty' value=$qty></td></tr>";
                        $total = $total + $price * $qty;
                    } else {

                    }
                }
            }
            ?>
4

4 回答 4

0

在 If 语句中抛出异常,然后将数据放入 try/catch 块中,因此如果发生错误,它将捕获异常

于 2013-03-28T22:00:38.637 回答
0

你会有这样的事情:

$errors = array();
foreach(...) {
   if ($partno == $varname & $qty > 0) {
      ... code for "ok" stuff
   } else {
      $errors[] = "$partno is incorrect";
   }
}
if (count($errors) > 0) {
    die("Errors: " . implode($errors));
}
... proceed to "success" code ...

基本上,对于每个失败的测试,您都会记录一条消息。循环退出后,如果有任何错误消息,则显示它们并中止处理。如果没有错误,则继续执行其余代码。

于 2013-03-28T21:58:23.073 回答
0

为什么不使用 try catch 块?

try {
    if (isset($_POST)) {

      if (!$email) {
          throw new Exception('email is not valid', 100);
      }

      // everything is good process the request
    }

    throw new Exception('Error!', 200);
} catch (Exception $e) {
    if ($e->getCode == 200) {
       // redirect
    } else {
       // do something else
    }
}
于 2013-03-28T22:00:26.590 回答
0

考虑以下方法:表单和用于处理表单数据的 php 代码都在同一页面上。如果表单已发布,您将首先检查表单是否正常,然后您将对提交的数据进行处理。如果表单无效,则显示错误消息。

优点是:代码中间没有 die(),没有奇怪的重定向,一切都在一个脚本中。

// simplified code in example.php
<?php

// in this variable we'll save success/error messages to print it
$msg = "";

// run this php code if the form was submitted
if(isset($_POST['submit'])) {

  // is the form valid? 
  if (strlen($_POST['username']) == 0) {
        $msg = "Please enter a username";
  } 
  else {
        // all validation tests are passed, give the user a nice feedback
       // do something with the data, e.g. save it to the db
       $msg = "Your data was saved. Have a great day";
  }
}

?>

<div class="msg"><?php print $msg; ?></div>

<form method="post">
<input type="text" name="username">
<input type="submit" name="submit" value="Submit">
</form>
于 2013-03-28T22:13:24.657 回答