0

这很奇怪,我以前从未见过。我使用 post 将值发布回同一页面进行处理。在我尝试使用隐藏字段发布值之前,一切正常。使用我之前使用过一百万次的相同约定。奇怪的是它没有使用提供的名称发布,它只是使用 hiddenField 作为名称。这是代码

<input name="eid" type="hidden" id="eid" value="<? print $_GET['eid']; ?>" />

我用这个来弄清楚

print_r($_POST);

这是结果

[隐藏字段] => 6

现在,它发布了值,并发布了在提交之前放入隐藏字段的正确值,但由于某种我似乎无法弄清楚的原因,它没有使用我在 HTML 中设置的 name 属性来识别它. 我所有的其他值都使用那里发布的名称。任何见解都将不胜感激,因为我不希望以后不得不处理尴尬的 hiddenFields 数组。

编辑:这是页面的其余代码(相关部分)

 <?
    if (isset($_POST['Submit']))
    {
        print "<p>EID: " . $_POST['hiddenField'] . "</p>";
        $eid = $_POST['hiddenField'];
        $name = $_POST['name'];
        $email = $_POST['email'];
        $ncount = count($name);
        $ecount = count($email);
        $hash = uniqid() . "-" . count($name);
        if ($ncount == $ecount)
        {
            $test = true;
            for ($i = 0; $i < $ncount; $i++)
            {
                if ($name[$i] == "" || $email[$i] == "")
                {
                    $test = false;
                }
            }

            if ($test)
            {
                $tickets[] = array();
                for ($i = 0; $i< $ncount; $i++)
                {
                    $unique = false;
                    while (!$unique)
                    {
                        $tickets[$i] = generateCode();
                        $check_query = "SELECT id FROM ticket WHERE ticket_number='" . $tickets[$i] . "'";

                        if ($stmt = $mysqli->prepare($check_query))
                        {
                            $stmt->execute();
                            $stmt->store_result();
                            $count = $stmt->num_rows;
                            $stmt->close();
                            if ($count == 0) 
                            {
                                $unique = true;
                            } else {
                                print "<p>Not unique</p>";
                            }

                        } else {
                            print "<p>Failed to work database</p>";
                        }
                    }
                    if ($unique == true) 
                    {
                        $query = "INSERT INTO ticket (`ticket_number`, `event_id`, `name`, `email`,`date_created`, `hash`) VALUES (?,?,?,?,NOW(),?)";
                        print "<p>Ticket #" . $tickets[$i] . " Event Id: " . $eid . " Name: " . $name[$i] . " Email: " . $email[$i] . " Hash: " . $hash . "</p>";
                        if ($stmt = $mysqli->prepare($query)) 
                        {
                            $stmt->bind_param('sisss', $tickets[$i], $eid, $name[$i], $email[$i], $hash);
                            $stmt->execute();
                            $number = $stmt->affected_rows;
                        } else {
                            print "<p>Could not insert into DB because " . $stmt->error . "</p>";

                        }
                    }
                }
            }

        }
    }
  <form action="register.php" method="post">
        <table width="896" border="0">
        <?

        for($i = 0; $i<$_GET['quant']; $i++)
        {
        ?>  <tr>
        <td><strong>Attendee <? print $z = $i+1; ?></strong></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td width="215">Name</td>
        <td width="671"><label for="name"></label>
          <input type="text" name="name[]" id="name" /></td>
      </tr>
      <tr>
        <td>Email Address</td>
        <td><input type="text" name="email[]" id="name2" /></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>

      <?
        }
    }


    ?>


      <tr>
        <td><input name="eid" type="hidden" id="eid" value="<? print $_GET['eid']; ?>" /></td>
        <td><input type="submit" name="Submit" id="Submit" value="Submit" /></td>
      </tr>
    </table>
    </form>
4

0 回答 0