PHP如何将起始值分配给更改值?

时间:2018-09-10 03:48:42

标签: php html

我正在尝试做一些允许用户更改商品“价格”的商品。到目前为止,它一直在工作,但是我的问题是,价格在页面的第一次加载中显示为空值,给了我“未定义的索引”错误,这意味着用户必须先输入价格才能按预期工作。我想这样做,以便在加载之前价格具有预定义的值。

任何帮助将不胜感激。

<?php

$price1 = $_POST['price1'];
$price2 = $_POST['price2'];
$price3 = $_POST['price3'];
$price4 = $_POST['price4'];
$price5 = $_POST['price5'];
$price6 = $_POST['price6'];

?>

<h2>Admin</h2>

<form method="POST" action="admin.php">
<table>
  <tr>
    <th>Product Name</th>
    <th>Price</th>
    <th>Change Price</th>
  </tr>
  <tr>
    <td>Double Cheesy Quarter Pounder</td>
    <td><?php echo "PHP" . $price1;?></td>
    <td><input type="text" name="price1">
</td>
  </tr>
  <tr>
    <td>Crispy Bacon Burger</td>
    <td><?php echo "PHP" . $price2;?></td>
    <td><input type="text" name="price2"></td>
  </tr>
  <tr>
    <td>Mushroom Burger</td>
    <td><?php echo "PHP" . $price3;?></td>
    <td><input type="text" name="price3"></td>
  </tr>
  <tr>
    <td>Triple Bacon Burger</td>
    <td><?php echo "PHP" . $price4;?></td>
    <td><input type="text" name="price4"></td>
  </tr>
  <tr>
    <td>Cheesy Bacon Fries</td>
    <td><?php echo "PHP" . $price5;?></td>
    <td><input type="text" name="price5"></td>
  </tr>
  <tr>
    <td>Chocolate Frappe</td>
    <td><?php echo "PHP" . $price6;?></td>
    <td><input type="text" name="price6"></td>
  </tr>
</table>
<input type="submit" value="Confirm">

</form>

4 个答案:

答案 0 :(得分:3)

  

在第一次加载页面时,出现“未定义索引”错误

您需要检查密钥是否存在:

$price1 = isset($_POST['price1']) ? $_POST['price1'] : '';

使用PHP 7,它更简单:

$price1 = $_POST['price1'] ?? '';

答案 1 :(得分:1)

如果未设置$ _POST,则可以设置默认值:

$price1 = isset($_POST['price1']) ? $_POST['price1'] : 99;
$price2 = isset($_POST['price2']) ? $_POST['price2'] : 99;
$price3 = isset($_POST['price3']) ? $_POST['price3'] : 99;
$price4 = isset($_POST['price4']) ? $_POST['price4'] : 99;
$price5 = isset($_POST['price5']) ? $_POST['price5'] : 99;
$price6 = isset($_POST['price6']) ? $_POST['price6'] : 99;

答案 2 :(得分:0)

从7.0版开始,您可以使用空合并:

<?php

$price1 = $_POST['price1'] ?? '';
// And so on.

这等效于:

<?php
$price1 = '';
if(isset($_POST['price1'])) {
    $price1 = $_POST['price1'];
}

或更详细的变化。

答案 3 :(得分:-1)

这里有两件事,让我们先来看一下您未定义的索引错误

1)要消除未定义的索引错误,您首先需要在顶部将php variabels声明为null,例如

$price1=$price2=$price3=$price4=$price5=$price6='';

2)要获得预定义的值,您需要在每个输入字段中添加“ value”属性,例如

<input type="text" name="price3" value="<? php echo $price3; ?>" >