我制作了一个小脚本,应该随机重定向到8个页面中的一个。在选择页面之前,我会询问数据库,以缩小选择范围。 (这样每个页面都会在同一个种子上挑选)。 不幸的是,我陷入了do-while循环。 这是代码:
<?php
$surveys = array(
1 => "711275",
2 => "488985",
3 => "515385",
4 => "467411",
5 => "755429",
6 => "335888",
7 => "673921",
8 => "532261");
$surveysCount = array(
1 => 0,
2 => 0,
3 => 0,
4 => 0,
5 => 0,
6 => 0,
7 => 0,
8 => 0);
$path = 'http://www.unet.univie.ac.at/~a0106191/index.php/';
$pathPostfix = '/lang-de';
$user = 'xxxx';
$pass = 'xxxx';
$host = 'xxxx';
// establish database connection
$conn = mysql_connect($host, $user, $pass) or die('Cannot connect to Database - Please try later!');
mysql_select_db('a0106191', $conn) or die('Cannot connect to Database - Please try later!');
foreach ($surveys as $nr=>$survey) {
$stmt = 'SELECT submitdate FROM lime_survey_'.$survey.' WHERE submitdate IS NOT NULL';
//echo $stmt.'<br/>';
if($res = mysql_query($stmt)) {
if (mysql_num_rows($res) > 0) {
$surveysCount[$nr] = mysql_num_rows($res);
}
}
//echo $surveysCount[$nr].'<br/>';
}
$selection = array();
$counter = 0;
do {
$offset = 0;
for ($i = 1; $i < 9; $i++) {
if ($surveysCount[$i] === $offset){
$sel = $surveys[$i];
$selection[] = $sel;
$counter++;
}
}
$offset++;
//echo $selection;
} while ($counter < 1);
// clean up connections
mysql_close($conn);
$whichSurveyNr = mt_rand(1, $counter);
$which = $selection[$whichSurveyNr-1];
$which = $path.$which.$pathPostfix;
echo "wSrNr:";
echo $whichSurveyNr;
echo "selection: ";
echo count($selection);
echo " which: ";
echo $which;
foreach($selection as $k => $v)
echo " sel: k: ".$k." v: ".$v;*/
header("Location: $which");
?>
答案 0 :(得分:0)
你需要使用== not with ===,它会返回你总是假的
do {
$offset = 0;
for ($i = 1; $i < 9; $i++) {
if ($surveysCount[$i] == $offset){
$sel = $surveys[$i];
$selection[] = $sel;
$counter++;
}
}
$offset++;
//echo $selection;
} while ($counter < 1);
答案 1 :(得分:0)
您需要确保$ counter正在递增。
确保始终$surveysCount[$i] === $offset
。
答案 2 :(得分:0)
您目前始终在循环中重置偏移量。我不知道这是你想要的。
尝试
$offset = 0;
do {
for ($i = 1; $i < 9; $i++) {
if ($surveysCount[$i] === $offset){
$sel = $surveys[$i];
$selection[] = $sel;
$counter++;
}
}
$offset++;
//echo $selection;
} while ($counter < 1);