Я пытался создать систему опроса, которая запускает запросы к базе данных и если она находит совпадение, не включает этот ответ.PHP/MySQL - остановка Foreach Запуск одного и того же запроса
Это система опроса, когда пользователь голосует в опросе, он хранит pollid и userid в таблице базы данных, где затем извлекается, когда они повторно посещают страницу, поэтому опрос, на который они ранее голосовали, не отображается ,
Я попытаюсь изо всех сил объяснить, мне очень трудно понять себя.
В моем опросе (где прошел опрос и пользователь, завершивший опрос) таблица содержит 2 строки и 2 столбца.
Два ряда являются:
pollid
идентификатор пользователя
Две колонны для pollsdone являются (Userid не имеет значения):
26, USERID
76, USERID
SQL:
$sql = "SELECT * FROM Polls";
$completedVoteSearch = "SELECT * FROM Pollsdone WHERE userid='10'";
Когда я использую:
foreach ($db->query($sql) as $row) {
foreach ($db->query($completedVoteSearch) as $done) {
if ($done['pollid'] != $row['pollid']) {
// CREATE POLL CODE
Он будет запускать запрос к базе данных и правильно выбрать, какие из них совпадают. Проблема в том, что он также будет выбирать такие, как «44,76», и отобразить опрос «76», хотя это совпадение с «76,76»
Надеюсь, эта фотография поможет вам лучше понять: (Не говорится «Мы есть матч!»и показывает опрос еще)
http://i.stack.imgur.com/NfTLS.png
это все еще показывает опрос, хотя он должен быть скрыт из-за другие запросы, как я идти об остановке этого? Любая помощь будет принята с благодарностью!
Вот код им с помощью (как раз для справки, там не ошибка, это не нужно «отлажена»)
try {
$db = new PDO("mysql:host=$mysql_host;dbname=$mysql_db", $mysql_user, $mysql_pass);
$sql = "SELECT * FROM Polls";
$completedVoteSearch = "SELECT * FROM Pollsdone WHERE userid='10'";
foreach ($db->query($sql) as $row) {
foreach ($db->query($completedVoteSearch) as $done) {
if ($done['pollid'] == $row['pollid']) {
echo "We have a match!";
}
if ($done['pollid'] != $row['pollid']) {
echo "<br/>";
echo $done['pollid'] . ", ";
echo $row['pollid'] . ", ";
echo "<br/>";
$pollid = $row['pollid'];
$title = $row['title'];
$type = $row['type'];
if ($type == "s") {
$type = "radio";
} else {
$type = "checkbox";
}
$option1 = $row['option1'];
$option2 = $row['option2'];
$option3 = $row['option3'];
$option4 = $row['option4'];
$option5 = $row['option5'];
$option6 = $row['option6'];
$option1vote = $row['option1vote'];
$option2vote = $row['option2vote'];
$option3vote = $row['option3vote'];
$option4vote = $row['option4vote'];
$option5vote = $row['option5vote'];
$option6vote = $row['option6vote'];
$option1voteColumn = "option1vote";
$option2voteColumn = "option2vote";
$option3voteColumn = "option3vote";
$option4voteColumn = "option4vote";
$option5voteColumn = "option5vote";
$option6voteColumn = "option6vote";
}
}
// $isCompleteSQL = "SELECT * FROM Pollsdone WHERE userid='10' ";
// if()
if (strlen($option3) < 1 && strlen($option2) > 0) {
echo '<div class="userPoll">
<div class="pollTitle">
<h3 class="pollHeader">' . $title . ' (ID = ' . $pollid . ')</h3>
</div>
<div class="pollContent">
<p class="pollSubTitle">Created By <a href="profile.php">Username</a></p>
<form class="poll" method="POST" action="mypolls.php">
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'" value="option1vote"><p class="pollAnswerText">' . $option1 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'" value="option2vote"><p class="pollAnswerText">' . $option2 . '</p></label><br/>
<input type="submit" class="pollSubmit btn btn-default"/>
</form>
</div>
</div>';
if ($_POST[$pollid] . $pollid == $option1voteColumn . $pollid) {
$option1vote = ($option1vote + 1);
$voteSQL = "UPDATE Polls SET ".$option1voteColumn."='".$option1vote."' WHERE pollid='".$pollid."'";
$db->exec($voteSQL);
}
}
if (strlen($option4) < 1 && strlen($option3) > 0) {
echo '<div class="userPoll">
<div class="pollTitle">
<h3 class="pollHeader">' . $title . ' (ID = ' . $pollid . ')</h3>
</div>
<div class="pollContent">
<p class="pollSubTitle">Created By <a href="profile.php">Username</a></p>
<form class="poll" method="POST" action="mypolls.php">
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option1 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option2 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option3 . '</p></label><br/>
<input type="submit" class="pollSubmit btn btn-default"/>
</form>
</div>
</div>';
}
if (strlen($option5) < 1 && strlen($option4) > 0) {
echo '<div class="userPoll">
<div class="pollTitle">
<h3 class="pollHeader">' . $title . ' (ID = ' . $pollid . ')</h3>
</div>
<div class="pollContent">
<p class="pollSubTitle">Created By <a href="profile.php">Username</a></p>
<form class="poll" method="POST" action="mypolls.php">
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option1 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option2 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option3 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option4 . '</p></label><br/>
<input type="submit" class="pollSubmit btn btn-default"/>
</form>
</div>
</div>';
}
if (strlen($option6) < 1 && strlen($option5) > 0) {
echo '<div class="userPoll">
<div class="pollTitle">
<h3 class="pollHeader">' . $title . ' (ID = ' . $pollid . ')</h3>
</div>
<div class="pollContent">
<p class="pollSubTitle">Created By <a href="profile.php">Username</a></p>
<form class="poll" method="POST" action="mypolls.php">
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option1 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option2 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option3 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option4 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option5 . '</p></label><br/>
<input type="submit" class="pollSubmit btn btn-default"/>
</form>
</div>
</div>';
}
if (strlen($option6) > 0) {
echo '<div class="userPoll">
<div class="pollTitle">
<h3 class="pollHeader">' . $title . ' (ID = ' . $pollid . ')</h3>
</div>
<div class="pollContent">
<p class="pollSubTitle">Created By <a href="profile.php">Username</a></p>
<form class="poll" method="POST" action="mypolls.php">
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option1 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option2 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option3 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option4 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option5 . '</p></label><br/>
<label><input type="' . $type . '" class="pollAnswer" name="'. $pollid .'"><p class="pollAnswerText">' . $option6 . '</p></label><br/>
<input type="submit" class="pollSubmit btn btn-default"/>
</form>
</div>
</div>';
}
}$db = null;
} catch(PDOException $e) {
$e->getMessage();
}
Что такое '44,76', что такое' 76,76'? Какова основная цель, которую вы пытаетесь достичь? Не показывать опросы, в которых пользователь уже участвовал? 'select * from Опросы, где pollid NOT IN (выберите pollid from polldone, где user_id = 10)' –
Это может сработать. Я попробую и дам это @U_mulder! –
Затем я получаю сообщение об ошибке «Предупреждение: неверный аргумент, предоставленный foreach() в [..loc ..] в строке 70». Foreach: 'foreach ($ db-> query ($ sql) в виде $ row) 'с SQL-выражением:' $ sql = "SELECT * FROM Опросы WHERE pollid NOT IN (SELECT pollid FROM Interviewdone WHERE userid = 10)"; ' –