【问题标题】:How to "acces" specific name in HTML如何在 HTML 中“访问”特定名称
【发布时间】:2016-03-16 19:02:36
【问题描述】:

我想将矩阵与 PHP 相乘,并且我希望用户指定它们的大小。 所以我创建了表单和输入,以便用户可以生成他的矩阵。

要上传矩阵中每个字段的值,我需要在该矩阵中输入不同的名称(我理解正确吗?)

我的“绘制”矩阵的函数如下所示:

    function Draw($matrixName, $rows, $columns){
    echo '<table> Matrix '.$nazwa.'<br>';
    for ($i = 0; $i < $rows; $i++){
        echo '<td>';
        for ($j = 0; $j < $columns; $j++){
            echo '<tr><input type="number" name="'.$nazwa.$i.$j.'"></tr>';          
        }
        echo '</td><br>';
    }
    echo '</table>';

这是我的问题。以后如何访问该名称或输入值?

我试过了:

    function UploadData($name, $rows, $columns){
    $matrix = array();
    for ($i = 0; $i < $rows; $i++){
        for ($j = 0; $j < $columns; $j++){
            $matrix[$i][$j] = $_POST['$name.$i.$j'];
        }
    }
    return $matrix;
}

但我的 $matrix 似乎是空的。当我这样做时

var_dump($matrix[$i][$j]);

或者那个

var_dump($_POST['$matrix[$i][$j]']);

我的浏览器显示它为 NULL。

所以请告诉我我在哪里犯了错误,因为我被卡住了..

我将变量保存在 $_SESSION 中,所以我这样调用这个函数:

$MatrixA = UploadData("A", $_SESSION['$rowsA'], $_SESSION['$columnsA']);

在此操作之前,我的值 $_SESSION['$rowsA'] 和 $_SESSION['$columnsA'] 不为空(我已使用 var_dump 检查过)。

【问题讨论】:

  • 哇,您的 html 输出将完全混乱,并且不是有效的表格。如果浏览器显示任何远程看起来像表格的东西,我会感到非常惊讶。但为了提供帮助,$_POST['$name.$i.$j'] 可能应该使用双引号。在 php 中,带单引号的'$i' 是文字字符串$i。双引号将解析变量的值,因此 "$i" 将是 $i 中的任何值

标签: php session html-input


【解决方案1】:

首先通过正确放置“tr”和“td”标签来纠正您的表格矩阵生成,其次,第一个参数需要与您使用的“名称”相同,将其从“$matrixName”更改为“ $纳兹瓦'

function Draw($nazwa, $rows, $columns){
    echo '<table> Matrix '.$nazwa.'<br>';
    for ($i = 0; $i < $rows; $i++){
        echo '<tr>';
        for ($j = 0; $j < $columns; $j++){
            echo '<td><input type="number" name="'.$nazwa.$i.$j.'"></td>';
        }
        echo '</tr>';
    }
    echo '</table>';
}

在您从 POST 分配值的下一行,删除了单引号。

function UploadData($name, $rows, $columns){
    $matrix = array();
    for ($i = 0; $i < $rows; $i++){
        for ($j = 0; $j < $columns; $j++){
            $matrix[$i][$j] = $_POST[ $name . $i .$j ];
        }
    }
    return $matrix;
}

【讨论】:

  • 正如我回答的旁注一样,一旦您尝试构建一个大于 10 x 10 的矩阵(行或列),您将开始看到生成的名称重复,因为不格式化数字以适应两位数。例如, row = 1 col = 11 将与 row = 11 col=1 将名称相同为 'name111' ;
  • 完美,type="number" 也应该是type="text",只是在 $nazwa 不是数字的情况下
  • 谢谢,@justacoder,我保留了 type="number" 原样,认为“Crixalis”可能正在寻找一个数字微调器来输入..!!
猜你喜欢
  • 1970-01-01
  • 2017-03-29
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-20
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多