【问题标题】:$_GET method inside a while loop$_GET 方法在 while 循环中
【发布时间】:2014-06-20 18:30:28
【问题描述】:

您好,我正在尝试创建一个系统来制作我自己的发票并打印它们,因此我使用下面的代码创建了一个带有 while 循环的输入,具体取决于我输入的文章数量​​p>

<?php
$cont=1;
$numero = $_REQUEST['numeroa'];

while($cont<=$numero) {

  echo $cont;
  echo "       <input class='Descripcion$cont' placeholder='Descripcion :' />";
  echo "       <input class='Precio' name='precio$cont' placeholder='Precio :' onkeyup='AddInputs()' /><br>";

  $cont++;
  } 
  echo "<textarea name='comment' >Escriba sus comentarios....</textarea>"; 
  session_start();
  $_SESSION['cont']=$cont;
   ?>

将帖子信息发送到另一个 php 页面,所以我在 url 上得到类似的东西

http://localhost/pruebas/facturapdf.php?precio1=1&precio2=2&precio3=3&precio4=4&precio5=5

我尝试使用此代码获取变量,但没有成功

session_start();
$contp=$_SESSION['cont'];
while($cont<=$contp) {

  $articulos[$cont]=$_GET['precio$cont'];
  echo $articulos[$cont];
  $cont++;
} 

有没有办法可以使用 get 方法更改每个循环的数量?

如果没有,我如何获得所有变量,知道它们每次都不同,具体取决于用户输入

提前谢谢..

【问题讨论】:

  • 字符串插值在双引号中起作用,而不是单引号。
  • $_GET['precio'.$cont] 假设 $cont 是一个 var 这将循环数字

标签: php forms get


【解决方案1】:

如前所述,您在应该使用双引号时使用单引号..

$articulos[$cont] = $_GET["precio$cont"];

此外,您实际上可以将数组作为查询数据直接传递,而不是附加一个计数值并循环遍历它们。

echo "       <input class='Descripcion' placeholder='Descripcion :' />";
echo "       <input class='Precio' name='precio[]' placeholder='Precio :' onkeyup='AddInputs()' /><br>";

请注意,我只是将 name='precio$cont' 更改为 name='precio[]'

您可以在提交时将其作为数组访问

$precioArr = $_GET['precio'];

只是为了演示

for($i = 0; $i < count($precioArr); $i++) {
    echo $precioArr[$i];
}

所以你实际上可以将它用于你提到的要求

如果没有,我如何获取所有变量,知道它们每次都不同,具体取决于用户输入

这可以用这段代码来演示

<?php

    echo "query data:<br>";
    print_r($_GET['array']);

    echo "<br>";

    echo "query keys:<br>";
    print_r(array_keys($_GET['array']));

?>

如果你有这样的表格:

<form action="demo.php" method="GET">
    <input name="array[2]" type="text" value="11">
    <input name="array[4]" type="text" value="11">
    <input name="submit" type="submit" value="Submit">
</form>

这会通过?array[2]=11&amp;array[4]=11的查询查询,你会得到的结果是:

query data:
Array ( [2] => 11 [4] => 11 ) 
query keys:
Array ( [0] => 2 [1] => 4 )

【讨论】:

    【解决方案2】:

    试试:

    <?php 
    session_start();
    $contp=$_SESSION['cont'];
    while($cont<=$contp) {
    
      $articulos[$cont]=$_GET['precio'. $cont];
      echo $articulos[$cont];
      $cont++;
    } 
    

    与原作的区别:'precio'. $cont 这会将变量$cont 的值连接到字符串文字'precio'

    你写的 ('precio$cont') 将永远是它的文字字符串。没有使用变量。

    【讨论】:

    • 这篇文章被自动标记为低质量,因为它只是代码。您介意通过添加一些文本来解释它是如何解决问题的吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多