php表单间歇性传递变量

标签 php mysql forms

如果我做错了,请原谅我。我每周使用该网站 5 天来帮助我,但这是我第一次真正发布问题。我是自学成才的,因为我被迫维护一个 php 网站。我对危险的了解足够多,但对正确的方法还不够了解。所以,当你觉得有必要评论“这个小妞在做什么?!?!?”时,请保持友善。 :)

要点: 我有 2 个文件:callaway.php 和 saveaddcallaway.php。 callaway.php 连接到 mysql 数据库并检查用户(已登录)是否已在名为 tblcallaway 的表中拥有记录。如果他们不这样做,那么他们可以使用表格来提交包含尺寸、款式和颜色的衬衫订单。提交时,该表单操作将变量传递给 saveaddcallaway.php,然后回显用户的选择。

真的...提交时,该表单操作将变量传递给 saveaddcallaway.php,然后将订单插入 tblcallaway 并将用户重定向回 callaway.php,并显示“您的订单已提交”消息。但出于这个问题的目的 - 我们只是假装显示选择是我所需要的。

问题: 它只是有时有效。您可以提交,一切都很好。然后,如果您或其他任何人尝试提交,它可能会也可能不会成功。当它不起作用时,您会收到“未定义索引”错误......但是如果您单击网页刷新按钮几次,它将显示您的选择!就像 callaway.php 仅在需要时处理表单选择。当它起作用和何时不起作用时,它是非常零星的。我尝试过不同的尺寸/颜色/款式组合。我们已经重新启动了服务器。而且它仍然只是在某些时候起作用。 **只是旁注*:当它设置为插入到 tblcallaway 时,它会在记录中插入所有空白值。我已经包含了代码,并注释掉了,但问题是在将其放入表格之前(我认为)。我想无论如何我都会包含它!

<!--callaway.php-->
<?php 
$query = "SELECT * FROM tblCallaway WHERE NetworkID = '$user'" or die("Error in the Select!.." . mysqli_error($link));
$result = mysqli_query($link, $query);
?>
<?php
$count = mysqli_num_rows($result);
    if ($count >= 1) {
            $greeting = "<h3>Your shirt order has been submitted - THANKS!</h3><br><br>"; 
            $hidebtn = "hidden";
            }
        else { 
            $greeting = "<h3>Submit your shirt order:</h3><br><br>"; 
            $hidebtn = "submit";
        }?>
<form method="post" action="saveadd_callaway.php" enctype="multipart/form-data">
        <?php echo $greeting;?>
  <div class="col-sm-3"><h1>STYLE:</h1><br>
            <select name="cStyle" id="cStyle">
                <option value="Mens">Mens</option>
                <option value="Ladies">Ladies</option>
            </select>
   </div> 
  <div class="col-sm-3"><h1>SIZE:</h1><br>
            <select name="cSize" id="cSize">
                <option value="S">Small</option>
                <option value="M">Medium</option>
                <option value="L">Large</option>
                <option value="XL">X-Large</option>
                <option value="2X">XX-Large</option>
                <option value="3X">XXX-Large</option>
                <option value="4X">XXXX-Large (Mens Only)</option>
            </select>
   </div> 
  <div class="col-sm-3"><h1>COLOR:</h1><br>
            <select name="cColorChoice" id="cColorChoice">
                <option value="Parakeet">Green</option>
                <option value="Black">Black</option>
                <option value="Griffen Grey">Gray</option>
                <option value="Paradise Pink">Pink-Coral</option>
                <option value="Bright White">White</option>
                <option value="Paisley Purple">Purple</option>
                <option value="Birds of Paradise Orange">Orange</option>
                <option value="Blue Atoll">Bright Blue</option>
                <option value="Riviera Blue">Riviera Blue</option>
                <option value="Peacoat Navy">Navy Blue</option>
            </select>
   </div>         
    <br style="clear: left" /><br><br><br>
    <input type="hidden" name="cNetworkID" value="<?php echo $user;?>">
    <input type="hidden" name="SubmittedOn" value="<?php echo date("Y-m-d h:i:sa");?>">
    <input type="<?php echo $hidebtn;?>" name="submit" value="submit">
    </form>

还有另一个...

<!--saveaddcallaway.php-->
<?php 
$cStyle = $_POST['cStyle'];
$cSize = $_POST['cSize'];
$cNetworkID = $_POST['cNetworkID'];
$ColorChoice = $_POST['cColorChoice'];
$SubmittedOn = $_POST['SubmittedOn'];

echo ($cStyle . " - " . $cSize . " - " . $ColorChoice . " - " . $cNetworkID . " - " . $SubmittedOn); 

/* *********************************************************************
$sql1 = "INSERT INTO tblCallaway (NetworkID,Style,Size,ColorChoice,SubmittedOn) VALUES ('$cNetworkID','$cStyle','$cSize','$ColorChoice','$SubmittedOn')";
if(mysqli_query($link, $sql1)){
echo "Shirt Order Successfully Submitted!";
header("Location: callaway.php"; // Redirect browser    
} else{
echo "ERROR: Could not able to execute $sql1. " . mysqli_error($link);
}
********************************************************************* */

当它决定不想工作时...提交后,您会在 saveaddcallaway.php 上看到以下内容...

Notice: Undefined index: cStyle in E:\Inet\saveadd_callaway.php on line 10
Notice: Undefined index: cSize in E:\Inet\saveadd_callaway.php on line 11
Notice: Undefined index: cNetworkID in E:\Inet\saveadd_callaway.php on line 12
Notice: Undefined index: cColorChoice in E:\Inet\saveadd_callaway.php on line 13
Notice: Undefined index: SubmittedOn in E:\Inet\saveadd_callaway.php on line 14
 - - - - 

即使我使用 isset() ,所有这些都不会显示通知详细信息(未定义索引...),我仍然收到错误。为什么有时有效,但有时却无效?即使我收到错误 - 我可以单击“刷新”,然后它就可以工作了!怎么样?

最佳答案

试试这个

<!--saveadd_callaway.php-->
<?php 
// checks if the request is by post method and $_POST array have some values
if (($_SERVER['REQUEST_METHOD'] == 'POST') && (count($_POST)>0)){
     // get all post data
     // insert into database
}else{
    header("Location: callaway.php");
    exit;
}

关于php表单间歇性传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795569/

相关文章:

php - mysql查询获取表1中的所有字段和表2中的部分字段

php - HTML 包括使用 PHP 的 CSS

Mysql子查询总票数

python - 使用 html5lib 验证 HTML 片段

php - 原则 2 - 在用户未登录的情况下更新用户密码

php - 谷歌地图 API : Blank page (No map)

PHP/MySQL : Getting Multiple Columns With the Same Name in Join Query Without Aliases?

mysql - 如果一个表有关系则加载它的多个关系

javascript - 我正在设置一个计时器,但我做错了。所以请给我更好的方法来做到这一点

python - 树莓派人数计入谷歌表格