【问题标题】:get data from url when multiple exist with same name当多个同名存在时从 url 获取数据
【发布时间】:2014-05-05 04:22:47
【问题描述】:

我有一个带有复选框的表单,可以将数据发布到下一页的 url。我知道这不安全,也没有在任何项目中使用。这仅用于学习目的。

我正在推送从我的数据库中提取的任务。

我的网址如下所示:

submitted.php?id=?12345

根据我检查的任务复选框的数量,我需要它将 ID 推送到下一页。

这是我的表格:

<form action="Billing.php?id=<?PHP echo $customerid;?>" method="post">
        <?php $query = "SELECT * FROM Service"; 
               $result = mysqli_query($con,$query); 
               while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) { ?> 
               <input type="checkbox" name="service" value="<?php echo $line['Service_ID']?>"><?php echo $line['Service_Type']?> <br> <?php } ?> 



        <input type="submit" name="next" value="Check Out" style="bottom:3%;Right:3%;position:absolute;background-color:#B2B2B2;font-weight:bold;border-style:double;border-color:black;float:right;" >
    </form>
    </div><!--serviclist-->
    <div id="cust">
            <h3>Customer Information</h3>
            <table style="left: 7%;right: 5%;top: 20%;position: absolute;">
                <tr>
                    <td>Name:<input class="rightText" name="customername" type="text" value="<?PHP echo $name; ?> "></td>
                </tr>
                <tr>
                    <td>Make: <input name="make" type="text" value="<?PHP echo $make; ?>"></td><td>Model: <input class="rightText" name="model" type="text" value="<?PHP echo $model; ?>"></td>
                </tr>
                <tr>
                    <td>Color: <input name="color" type="text" value="<?PHP echo $color; ?>" ></td><td>VIN: <br><input class="rightText" name="VIN" type="text" value="<?PHP echo $vin; ?>" ></td>
                </tr>
            </table>

基本上我试图让它将我的客户 ID 和我的服务发布到下一页。

【问题讨论】:

  • 你必须使用 & 而不是 $
  • 对不起,这是网址包含的拼写错误,我有固定的问题
  • 为此目的使用 post 方法。
  • 对不起,我似乎增加了很多混乱。我包括了表格。它根本没有像我想的那样推送 url,因为我忘了添加发布方法。它现在发布我的客户 ID,但没有检查我的 tak id。

标签: php html get


【解决方案1】:

我不知道你是如何以这个查询字符串结尾的,但我们假设你有:

index.php?asd=1&amp;asd=2&amp;asd=3

你可以通过

var_dump($_SERVER['QUERY_STRING']);

输出 string 'asd=1&amp;asd=2&amp;asd=3' (length=17)

然后用&amp;分隔符分割

var_dump(explode('&', $_SERVER['QUERY_STRING']));

输出:

array (size=3)
0 => string 'asd=1' (length=5)
1 => string 'asd=2' (length=5)
2 => string 'asd=3' (length=5)

然后用 = 分割,找到 key=>value 对。

但是,我觉得这种方法非常没有吸引力且效率低下。

如果您可以控制复选框名称,则构建查询字符串,如:

index.php?asd[]=1&asd[]=2&asd[]=3

然后

var_dump($_GET['asd']);

将返回数组

array (size=3)
0 => string '1' (length=1)
1 => string '2' (length=1)
2 => string '3' (length=1)

【讨论】:

  • 请参阅我发布的表格。我第一次没有正确提问。
  • @Kenny 你想让?id=12345 变成?id=12345&amp;id=1000&amp;id=2000 对吗?使用 POST 是不可能的,如果 $var 只包含一个 ID,你也可以使用 action="?id=$var",你不希望它被推送。但是,当然,如果您将复选框从 service 重命名为 service[],您将在 $_POST['service'] 中收到一组值
【解决方案2】:

你的网址写错了,应该是这样的:

submitted.php?taskid[]=1&taskid[]=7

【讨论】:

    【解决方案3】:

    将复选框作为一个数组, 示例
    input type="checkbox" name="taskid[]" value="你喜欢的任何值"

    在服务器端 php 中,使用 FOR-EACH LOOP 来获取所有 taskid

        <?php
    $tasks = $_GET['taskid'];  
         foreach($tasks as $values)  
           {  
            // do your operations here  
              echo $values;  
             }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 2010-09-26
      • 1970-01-01
      • 2020-03-21
      • 2023-03-25
      • 2014-10-01
      • 2018-09-22
      相关资源
      最近更新 更多