如何在PHP中存储和获取两个值?

时间:2017-11-18 18:27:29

标签: php sql mysqli

这是process_upcategory.php 我想通过类别ID或类别名称更新类别名称或类别ID与其他类别名称/ ID。 我是php的新手

<?php
     require('includes/config.php');
    if(!empty($_POST))
    {
        $msg=array();
        if(empty($_POST['cat']))
        {
            $msg[]="Please full fill all requirement";
        }

        if(!empty($msg))
        {
            echo '<b>Error:-</b><br>';

            foreach($msg as $k)
            {
                echo '<li>'.$k;
            }
        }
        else
        {


            $cat_nm=$_POST['cat[0]'];
            $cat_id=$_POST['cat[1]'];

            $query= "UPDATE `category` SET cat_nm='$cat_nm' WHERE cat_id='$cat_id'";

            mysqli_query($conn,$query) or die("can't Execute...");

            mysql_close($link);
            header("location:category.php");
        }


    }

    else
    {
        header("location:index.php");
    }
?>

现在这是category.php,只是一段代码。不是完整的代码

<form action='process_upcategory.php' method='POST'>

                        <b style="color:darkgreen">UPDATE CATEGORY </b> <br>    
                        <b style="color:darkgreen">Old Category</b>             
                            <br>
                                <select name="cat[]" multiple>
                                    <?php

                                            $query="select * from category ";

                                            $res=mysqli_query($conn,$query);

                                            while($row=mysqli_fetch_assoc($res))
                                            {
                                                echo "<option>".$row['cat_nm'];
                                                echo "<option>".$row['cat_id'];
                                            }


                                    ?>

                                </select>
                        <br>
                        <b style="color:darkgreen">New Category</b><br>
                        <input type='text' name='cat[0]'></input><br>
                        <input type='text' name='cat[1]'></input>

                            <input type='submit' value='  UPDATE  '>


</form> 

我想通过类别ID或类别名称更新类别名称和其他类别名称。我得到未定义的索引cat [0]和cat [1]

2 个答案:

答案 0 :(得分:0)

当您使用[]结束输入名称时,它将通过php转换为数组。在这种情况下获取值的正确方法是这样的:

$cat=$_POST['cat'];
$cat_nm=$cat[0];
$cat_id=$cat[1];

答案 1 :(得分:0)

我将两个例程合并为一个脚本。

我在表单中添加了“sub”,以区别于提交表单的时间。

我在查询结果循环中使用了list()。
使用了mysqli_fetch_array($result, MYSQLI_NUM)而不是mysqli_fetch_assoc($res)

使用foreach()循环遍历$ _POST ['cat']

<option value="">添加'值'以保存ID

使用HEREDOC消除了从HTML模式切换到PHP模式。

<?php
if (intval($_POST['sub']) == 1){
  $newcat = $_POST['new'];
  foreach($_POST['cat'] as $key=>$value){
    if(strlen($newcat[$key]) > 0){
      mysqli_query($conn,"UPDATE `category` SET `cat_nm`='$newcat[$key]' WHERE `cat_id`='$value'");
    }
  }
}
echo <<<EOT
<html><head><style>h4,h3{color:darkgreen;margin:.2em;}</style></head><body>
<form action="#" method='POST'>
  <h3>UPDATE CATEGORY</h3>    
  <h4>Old Category</h3> 
  <select name="cat[]" multiple>
EOT;

$sql="SELECT `cat_nm`, `cat_id` FROM `category` ";
$result=mysqli_query($conn,$sql);
while(list($cat_nm,$cat_id) = mysqli_fetch_array($result, MYSQLI_NUM)){
    echo "  <option value=\"$cat_id\">$cat_nm</option>\n";
}
echo <<<EOT
  </select>
  <h3>New Category</h3>
  <input type="text" name="new[0]" /><br/>
  <input type="text" name="new[1]" /><br/>
  <input type="hidden" name="sub" value="1" /><br/>
  <input type="submit" value="  UPDATE  />
</form> 
</body></html>
EOT;
?>