1

我有一个表格来记录一组项目的工作时间。该表单使用一个数组作为项目 ID、小时数和注释字段,表单行是项目数量的循环。表单将数据传递给 PHP 脚本进行处理。PHP 脚本没有看到数组中的值......它只是给我“数组”作为输出。

文档和其他示例让我想知道是否必须序列化或反序列化或其他方法才能使事情正常工作,但多次尝试均未成功。

在表格中:

<form action="input-hours-do.php" method="post">

<table>

<tr>
<td>Project</td>
<td>Hours</td> 
<td>Notes</td> 
</tr>

<?

// assign project IDs

$rhprID[0] = "ABT";
$rhprID[1] = "GHUR";
$rhprID[2] = "TRE";
$rhprID[3] = "WERT";

// loop on the projects

for ($i = 0; $i < 3; $i++)
    {
    ?>

    <!-- project id is not editable -->

    <input type="hidden" name="rhprID[]" value="<? echo $rhprID[$i]; ?>" />

        <tr>
            <td>
                <?php echo $rhprID[$i] ?>
            </td>

            <td>
                <input type="text" name="rhHours[]" size="6" />
            </td>

            <td>
                <input type="text" name="rhNotes[]" size="40" />
            </td>
        </tr>

        <?
        }  // end of i for loop

?>

</table>


<input type="submit" name="tUpdate" size="8" value="Submit Hours" />

</form> 

在动作脚本(input-hours-do.php)中:

$rhprID = $_POST['rhprID'];
$rhHours = $_POST['rhHours'];
$rhNotes = $_POST['rhNotes'];

echo "count of prid is " . count($rhprID) . "</br>";

for ($k = 0; $k < count($rhprID); $k++)
    {
    echo  " prID is: " . $rhprID[$k] . " hours are: " . $rhHours[$k] . " notes are: " .     $rhNotes[$k];
    }

?>

输出是:

rhprid 的计数为 1

prID 是:A 小时是:A 笔记是:A

所以:

  • 似乎认为数组只有 1 个元素长
  • 它没有获取数组中的值(“A”是“Array”的第一个字母,所以它只是使用字符串变量,而不是底层数据值)。

我需要更改什么才能获得基础数据值?

4

1 回答 1

1

将php代码放在<?php ?>标签<? ?>中,它会很好:

 <form action="input-hours-do.php" method="post">

  <table>

    <tr>
      <td>Project</td>
      <td>Hours</td> 
      <td>Notes</td> 
    </tr>

    <?php /* changed <? to <?php */

    // assign project IDs

    $rhprID[0] = "ABT";
    $rhprID[1] = "GHUR";
    $rhprID[2] = "TRE";
    $rhprID[3] = "WERT";

    // loop on the projects

    for ($i = 0; $i < 4; $i++) /* changed $i<3 to $i<4 */
    {
    ?>

    <!-- project id is not editable -->

    <input type="hidden" name="rhprID[]" value="<?php /* changed <? to <?php */  echo $rhprID[$i]; ?>" />

    <tr>
      <td>
        <?php /* changed <? to <?php */ echo $rhprID[$i] ?>
      </td>

      <td>
        <input type="text" name="rhHours[]" size="6" />
      </td>

      <td>
        <input type="text" name="rhNotes[]" size="40" />
      </td>
    </tr>

    <?php /* changed <? to <?php */
    }  // end of i for loop

    ?>

  </table>


  <input type="submit" name="tUpdate" size="8" value="Submit Hours" />

</form> 

并在 input-hours-do.php 文件中编写以下代码:

<?php  /* changed <? to <?php */
$rhprID = $_POST['rhprID'];
$rhHours = $_POST['rhHours'];
$rhNotes = $_POST['rhNotes'];

echo "count of prid is " . count($rhprID) . "</br>";

for ($k = 0; $k < count($rhprID); $k++)
    {
    echo  " prID is: " . $rhprID[$k] . " hours are: " . $rhHours[$k] . " notes are: " .     $rhNotes[$k];
    }

?>

更新:你有 4 个项目 id,所以你必须在你的 for 循环中编辑 $i 小于 4 而不是 3,

于 2013-09-19T14:42:16.683 回答