Php 如何获得与html中显示的行一样多的输入?

Php 如何获得与html中显示的行一样多的输入?,php,html,php-pgsql,Php,Html,Php Pgsql,我想打开一个弹出窗口,其中有一个窗体,当我单击按钮时,该窗体包含输入。这样做我没有问题,特别是我想要的输入(以弹出窗口的形式)和我原始窗口中的行单元格一样多 基本上我有page1.php输出SQLSELECT查询。我为每一行生成一个按钮,在onClick()事件上打开一个弹出窗口。 我想用这个按钮给用户修改一行的可能性。 我通过以下方式生成表格: $result=Db::query($requete); $texte=“$table_header”; $texte.=”; 如果(!pg_num

我想打开一个弹出窗口,其中有一个窗体,当我单击按钮时,该窗体包含输入。这样做我没有问题,特别是我想要的输入(以弹出窗口的形式)和我原始窗口中的行单元格一样多

基本上我有
page1.php
输出SQL
SELECT
查询。我为每一行生成一个按钮,在
onClick()
事件上打开一个弹出窗口。 我想用这个按钮给用户修改一行的可能性。

我通过以下方式生成表格:

$result=Db::query($requete);
$texte=“$table_header”;
$texte.=”;
如果(!pg_num_rows($result)){
$nb_ligne=“Aucune ligne trouve!”;
}否则{
$nb_ligne=“Nombre de lignes:”.pg_num_行($result);
}
while($row=pg_fetch_row($result)){
$texte.=”;
foreach(行作为$value){
$texte.=“$value”;
}
$texte.=”;
}
$texte.=”;
$response=新响应();
$response->assign('nb_-ligne','innerHTML',$nb_-ligne);
$response->assign('tableau\u resultat','innerHTML',$texte);
返回$response;
我不知道如何生成像一行中的单元格那样多的
输入

而且

如何使用已填充的内容设置
输入
默认值


我想从中吸取教训,因此,如果可能,请向我解释我在这里做错了什么,或者我的方法是否缺乏洞察力。

在文件
page1.php
中,您将执行以下操作:

    $result = Db::query($query); // the query should return column ID for each row

    $text = "<table class='table table-bordered table-sm'><thead>$table_header</thead><tbody>";

    if (!pg_num_rows($result))
    {
      $no_results = "Nothing was found !";
    }
    else
    {
      $no_results = "Results found: ".pg_num_rows($result);
    }
    while($row = pg_fetch_row($result))
    {
      // the popup will open `page2.php?id=ID-of-the-row`
      $text .= "<tr><td><button class='btn btn-primary' type='button' id='buttonCreate' onclick='showPopup(\"update.php?id=".$row['id']."\")'>EDIT</button></td>";
      foreach ($row as $value)
      {
        $text .= "<td style='word-break: keep-all;'>".htmlspecialchars($value)."</td>";
      }
      $text .= "</tr>";
    }
    $text .= "</tbody></table>";

    $response = new Response();
    $response->assign('no_results', 'innerHTML', $no_results);
    $response->assign('table_body', 'innerHTML', $text);

    return $response;
    $result = Db::query($query); // the query will use $_GET['id'] in order to fetch the specific row

    $text = "<table class='table table-bordered table-sm'><thead>$table_header</thead><tbody>";

    if (!pg_num_rows($result))
    {
      $no_results = "Nothing was found !";
    }
    else
    {
      $no_results = "Results found: ".pg_num_rows($result);
    }
    // there should be no more than 1 row
    while($row = pg_fetch_assoc($result))
    {
      $text .= "<tr>";
      foreach ($row as $key => $value)
      {
        $text .= "<td style='word-break: keep-all;'><input type=text name='".$key."' value='".htmlspecialchars($value)."'></td>";
      }
      $text .= "</tr>";
    }
    $text .= "</tbody></table>";

    $response = new Response();
    $response->assign('no_results', 'innerHTML', $no_results);
    $response->assign('table_body', 'innerHTML', $text);

    return $response;

每行的列数应该是恒定的,是吗?然后,您只需计算$row一次包含多少元素就可以得到该数字。@是的,列的数量是恒定的,但如何从弹出窗口中获取单元格内容?这不是一个完全不同的问题吗?通常,您只需通过链接/按钮传递一个行ID,然后在提供弹出内容的脚本中,进行数据库查询以获取特定行的数据…@misorude我的问题是关于这两件事。但我不确定是否需要再次进行数据库查询。当我在实践中学习时,我每次都会迷失在使用的方法上,而这并不是我真正想要的。在这里,您建议我在每个单元格上添加输入。但我正在寻找一种方法来打开一个新窗口,在这个窗口中,我将有和单元格一样多的文本输入。如上图所示,单击按钮,我想打开一个弹出窗口,每个单元格的内容都将以文本输入的形式输出。我很难做到这一步,我无法理解你的问题。首先,你说你不想在表格中输入文本,然后你说你想输入尽可能多的单元格(在这个问题中,你说输入应该有一个预先填充的值)。由于您正在构建表,您显然知道(或可以计算)行和列的数量。一旦你知道这个数字-你可以使用一个简单的FOR循环来创建相应数量的输入,并将它们的VALUE属性设置为你喜欢/需要的任何值。有两个不同的页面。在page1.php上,我输出了我的表和值。我没有任何问题。在每一行我都有一个按钮,打开一个新的窗口:page2.php我希望在page2.php上填充尽可能多的文本输入,就像我在page1.php的一行上有字段一样。如果文本INPUTvalues是page1.phpWell上单击行中字段的值,您只需确保查询结果中的每一行都有一个唯一的ID,然后在获取
page2.php
时提供该ID,以便它可以从DB中获取正确的记录。