如果我做错了,请原谅我。我每周使用该网站 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/