【问题标题】:PHP How to assign starting value to changing value? [duplicate]PHP如何将起始值分配给变化的值? [复制]
【发布时间】:2018-09-10 03:48:41
【问题描述】:

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

任何帮助将不胜感激。

<?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>

【问题讨论】:

    标签: php html


    【解决方案1】:

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

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

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

    使用 PHP 7,它更简单:

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

    【讨论】:

      【解决方案2】:

      如果 $_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;
      

      【讨论】:

        【解决方案3】:

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

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

        这相当于:

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

        或其他一些更详细的变体。

        【讨论】:

          【解决方案4】:

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

          1)要去除未定义的索引错误,首先需要在顶部声明php变量为null,比如

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

          2)要具有预定义的值,您需要在每个输入字段中包含“值”属性,例如,

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

          【讨论】:

            猜你喜欢
            • 2011-08-19
            • 2013-05-23
            • 1970-01-01
            • 2014-03-04
            • 1970-01-01
            • 2015-12-13
            • 2012-10-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多