Я работаю над этим скриптом, который будет фильтровать результаты sql, на основе которых отмечены флажки. Мой стол настроен так ...Фильтрация PHP с помощью флажков
id venue imageurl showingads 2kandunder 2kto4k 4kandup
1 venue1 myurl.com yes yes
2 venue2 myurl.com yes yes
3 venue3 myurl.com no yes
4 venue4 myurl.com yes yes
Весь код указан на этой странице. Вот HTML ..
<form id="form" method="post" action="">
<input type="checkbox" name="2kandunder" class="checkbox" <?=(isset($_POST['2kandunder'])?' checked':'')?>/> 2kandunder<br>
<input type="checkbox" name="2kto4k" class="checkbox" <?=(isset($_POST['2kto4k'])?' checked':'')?>/> 2k to 4k<br>
<input type="checkbox" name="4kandup" class="checkbox" <?=(isset($_POST['4kandup'])?' checked':'')?>/> 4k and up<br>
</form>
Javascript код ...
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
и PHP ...
<?php
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$dbname = "mydb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST["2kandunder"])) {
$arguments[] = "`2kandunder` = 'yes'";
}
if (isset($_POST["2kto4k"])) {
$arguments[] = "`2kto4k` LIKE 'yes'";
}
if (isset($_POST["4kandup"])) {
$arguments[] = "4kandup LIKE '%yes%'";
}
if(!empty($arguments)) {
$str = implode(' or ',$arguments);
$qry = "SELECT id, venue, imageurl FROM ads where " . $str . "";
$paginate = new pagination($page, $qry, $options);
} else {
//Whatever happens when there's none checked.
$sql = "SELECT id, venue, imageurl FROM ads WHERE `showingads` = 'yes'";
}
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<table class='tablebox' width='940' border='1' cellspacing='5'>
<tr><td width='75'>".$row["venue"]."</td></tr>
<tr>
<td width='10'><a href='post_click.php?id=".$row["id"]."'> <img src='".$row["imageurl"]."'></a></td>
</tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
?>
Когда я запускаю эту страницу либо еще отображает запрос, который является то, что я хочу когда первая страница загружается. Но когда я проверяю любой из флажков, ничего не происходит. Здесь весь код, как на странице.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="JavaScript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
</head>
<html>
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="2kandunder" class="checkbox" <?=(isset($_POST['2kandunder'])?' checked':'')?>/> 2k and under<br>
<input type="checkbox" name="2kto4k" class="checkbox" <?=(isset($_POST['2kto4k'])?' checked':'')?>/> 2k to 4k<br>
<input type="checkbox" name="4kandup" class="checkbox" <?=(isset($_POST['4kandup'])?' checked':'')?>/> 4k and up<br>
</form>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
<?php
$servername = "localhost";
$username = "myusername";
$password = "mypassword";
$dbname = "mydb";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST["2kandunder"])) {
$arguments[] = "`2kandunder` = 'yes'";
}
if (isset($_POST["2kto4k"])) {
$arguments[] = "`2kto4k` LIKE 'yes'";
}
if (isset($_POST["4kandup"])) {
$arguments[] = "4kandup LIKE '%yes%'";
}
if(!empty($arguments)) {
$str = implode(' or ',$arguments);
$qry = "SELECT id, venue, imageurl FROM ads where " . $str . "";
$paginate = new pagination($page, $qry, $options);
} else {
//Whatever happens when there's none checked.
$sql = "SELECT id, venue, imageurl FROM ads WHERE `showingads` = 'yes'";
}
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<table class='tablebox' width='940' border='1' cellspacing='5'>
<tr><td width='75'>".$row["venue"]."</td></tr>
<tr>
<td width='10'><a href='post_click.php?id=".$row["id"]."'> <img src='".$row["imageurl"]."'></a></td>
</tr>";
}
echo "</table>";
} else {
echo "0 results";
}
$conn->close();
?>
</body>
</html>
Мои первые мысли: 1. javascript не выполняется вообще? 2. Мои аргументы $ отформатированы неправильно для того, как я настроил базу данных? (У меня есть 3 разных варианта аргументов, чтобы попробовать и проверить различные форматы, чтобы увидеть, могу ли я заставить их работать)
Примечание: Часть php из учебника, из которого я узнал, имела аргумент, как if (isset ($ _ POST ["2kandunder"]). У меня это выглядит так: if (isset ($ _ POST ["2kandunder"])) с дополнительной скобкой в конце, потому что я получал синтаксическую ошибку для каждого оператора if. Если это может быть проблема почему я получаю ошибки синтаксиса для каждой, если заявление линии?
Всего этого кода и разглагольствуя, но я чувствую, что я близко. Может кто-то пожалуйста, помогите мне понять, в чем проблема?
EDIT колонн устанавливаются так ..
Field Type Null Key Default Extra
id int(5) NO PRI NULL auto_increment
venue varchar(100) NO NULL
imageurl varchar(150) NO NULL
showingads varchar(5) NO NULL
2kandunder varchar(5) NO NULL
2kto4k varchar(5) NO NULL
4kandup varchar(5) NO NULL
UPDATE Так что я флажки работают сейчас, но теперь, когда я загрузить страницу и нажмите на верхний флажок (2kandunder) возвращает 0 результатов. Остальное sql все еще работает, когда флажки не отмечены. Я изменил первый, если заявление
if (isset($_POST["2kandunder"])) {
$arguments[] = "`showingads` = 'yes'";
который должен сделать это тот же запрос, как SQL-запрос еще при первом (2kandunder) флажок. Еще 0 результатов. Таким образом, я повторил $ qry, чтобы отобразить, какой запрос запускался, когда первый флажок установлен, и он точно такой же, как и запрос $ sql else, но все же возвращает 0 результатов? Как это возможно, если этот точный запрос работает для запроса else?
Последнее обновление Проблема была в том, что если результаты были получены только для результатов sql-запроса, спасибо всем, кто помог!
Вы получаете какие-либо ошибки в консоли? –
@SulthanAllaudeen Нет ошибок. Просто отображает 3 флажка вверху страницы и затем отображает дату из SQL-запроса else ниже. – bg2982
Можете ли вы показать мне «объявления» и «показы» в sqlfiddle? –