我有非常简单的PHP脚本,但它让我感到困惑。这是我的剧本
<?php
for($j=0; $j < $muter; $j++)
{
if(($_SESSION[KODE]) == ($acak[$j]))
{
$sql_update = "UPDATE unik SET kota = '$kota',
hadiah = '$hadiah',
nama = '$nama',
email = '$email',
status = 'menang'
WHERE unik_id = '$_SESSION[KODE]'";
$data_update = mysql_query($sql_update);
echo "<script>window.location='menang.php';</script>";
}//end if
else
{
$sql_update = "UPDATE unik SET kota = '$kota',
nama = '$nama',
email = '$email',
status = 'kalah'
WHERE unik_id = '$_SESSION[KODE]'";
$data_update = mysql_query($sql_update);
echo "<script>window.location='kalah.php';</script>";
}//end of else if
}//end for
?>
问题是:如果我评论此脚本,代码运行良好
echo "<script>
window.location='kalah.php';
</script>";
但是如果不注释JS window.location脚本总是转到else部分(永远不会转到第一个条件)。而我需要JS window.location脚本。
我该如何解决这个问题?
我非常感谢你的回答。
由于
答案 0 :(得分:1)
您正在使用循环进行重定向。这是完全错误的。因为执行了一段时间if
并执行了一些else
。所以浏览器感到困惑。
因此,您必须在循环结束时重定向到任何特定页面。
尝试运行此代码,它将显示您在if / else条件下的时间基于此,您可以在完成循环后添加重定向逻辑。
<?php
for($j=0; $j < $muter; $j++)
{
if($_SESSION['KODE'] == $acak[$j])
{
$sql_update = "UPDATE unik SET kota = '$kota',
hadiah = '$hadiah',
nama = '$nama',
email = '$email',
status = 'menang'
WHERE unik_id = '$_SESSION[KODE]'";
$data_update = mysql_query($sql_update);
echo "Inside if <br>";
}//end if
else
{
$sql_update = "UPDATE unik SET kota = '$kota',
nama = '$nama',
email = '$email',
status = 'kalah'
WHERE unik_id = '$_SESSION[KODE]'";
$data_update = mysql_query($sql_update);
echo "Inside else <br>";
}//end of else if
}//end for
?>
答案 1 :(得分:0)
您的问题在WHERE unik_id = '$_SESSION[KODE]'";
,您需要{$ 1}}访问$ _SESSION值
WHERE unik_id = '$_SESSION['KODE']'";
答案 2 :(得分:0)
非常奇怪的尝试。基本上你在循环中循环并检查循环中的条件。但无论如何你回应一个window.location改变javascript。所以每次迭代都会输出。这看起来不对。
最后,您应该获得零个或多个javascript位置更改,这至少可以说是一个非常奇怪的解决方案。
答案 3 :(得分:0)
嗯,你的代码有很多问题:
$_SESSION[KODE]
。你定义了一个名为KODE
的常量吗?如果没有,那么你可能需要把它放在引号中,即$_SESSION['KODE']
。
与上一个相关,在插入数组项时,需要用大括号包装它:
$sql = "... WHERE `unik_id` = '{$_SESSION['KODE']}'";
然后是Javascript ......你应该使用重定向:
header('Location: /menang.php');
die;
如果您不打算使用它,为什么要创建$data_update
变量?
不推荐使用mysql_*
扩展程序(已被更新和更好的扩展程序取代)。
您有很多未在任何地方定义的变量。这个文件是否包含在其他文件中?
答案 4 :(得分:0)
您可能无法正确重定向有三个原因
1)在你的header("Location: ")
语句之后,你应该放die();
否则php将继续执行。例如:
header("Location: kalah.php");
die();
2)您不得向屏幕输出任何内容(例如,echo
语句),否则不会重定向。您可以查看ob_start()
3)最后,您可能无法到达代码中的正确位置。 Ignacio Ocampo上面有一些很好的建议。在其中放入一些带有die('here')
语句的调试代码,以确保最终到达您认为应该的位置。
最后,请确保您拥有最顶层的PHP
if (!isset($_SESSION)){
session_start();
}