Выполнить запрос с несколькими условиями - MySQL
Формулировка задачи:
Здравствуйте.
Подскажите пожалуйста почему не хочет работать вот такой код:
Читал в примерах должен код работать, причем без второй части запроса отлично работает
Листинг программы
- $strSQL = "SELECT * FROM baza WHERE srok > '3' AND WHERE summ > '5' ORDER BY sgp";
Решение задачи: «Выполнить запрос с несколькими условиями»
textual
Листинг программы
- <?php
- error_reporting(E_ALL);
- mysql_connect("...........", "..........", ".........");
- $sql = mysql_query("SET CHARACTER SET cp1251_koi8");
- mysql_select_db(".............");
- // если есть $_POST, формируем WHERE для запроса
- $where = '';
- if (!empty($_POST['bedroom'])){
- if ($_POST['bedroom'] != 'Все спальни'){
- $where .= (empty($where)?'':' and ')."`bedroom` = '".$_POST['bedroom']."'ORDER BY bedroom ASC ";
- }
- }
- if (!empty($_POST['city'])){
- if ($_POST['city'] != 'Все города'){
- $where .= (empty($where)?'':' and ')."`city` = '".$_POST['city']."'ORDER BY city ASC ";
- }
- }
- if (!empty($_POST['sleeper'])){
- if ($_POST['sleeper'] != 'Все гости'){
- $where .= (empty($where)?'':' and ')."`sleeper` = '".$_POST['sleeper']."'ORDER BY sleeper ASC ";
- }
- }
- $sql = "SELECT * FROM `users`". (empty($where)?'':'WHERE'.$where);
- $result = mysql_query($sql);
- while($res = mysql_fetch_object($result)){
- $city[] = $res->city;
- $sleeper[] = $res->sleeper;
- $bedroom[] = $res->bedroom;
- $number[] = $res->number;
- $name[] = $res->name;
- $price[] = $res->price;
- }
- ?>
- <!--далее вывод формы с селектами-->
- <h1>Гостинница</h1>
- <h1 style="background-color:0000ff; padding:40px">
- <form method="post">
- <div style="float:left;margin-right:20px">
- <select style= "width:200px;height:45px" name="city">
- <option>Все города</option>
- <?PHP
- $city_sel = array_unique($city);
- foreach($city_sel as $c){
- if(isset($_POST['city']) && $_POST['city'] == $c){
- ?>
- <option value="<?PHP echo $c;?>" selected="selected"><?PHP echo $c;?></option>
- <?PHP }else{?>
- <option value="<?PHP echo $c;?>"><?PHP echo $c;?></option>
- <?PHP }} ?>
- </select>
- </div>
- <div style="float:left;margin-right:20px">
- <select style= "width:200px;height:45px" name="sleeper">
- <option>Все гости</option>
- <?PHP
- $sleeper_sel = array_unique($sleeper);
- foreach($sleeper_sel as $s){
- if(isset($_POST['sleeper']) && $_POST['sleeper'] == $s){
- ?>
- <option value="<?PHP echo $s;?>" selected="selected"><?PHP echo $s;?></option>
- <?PHP }else{ ?>
- <option value="<?PHP echo $s;?>"><?PHP echo $s;?></option>
- <?PHP }}?>
- </select>
- </div>
- <div style="float:left;margin-right:20px">
- <select style= "width:200px;height:45px" name="bedroom">
- <option>Все спальни</option>
- <?PHP
- $bedroom_sel = array_unique($bedroom);
- foreach( $bedroom_sel as $b){
- if(isset($_POST['bedroom']) && $_POST['bedroom'] == $b){
- ?>
- <option value="<?PHP echo $b;?>" selected="selected"><?PHP echo $b;?></option>
- <?PHP }else{?>
- <option value="<?PHP echo $b;?>"><?PHP echo $b;?></option>
- <?PHP }} ?>
- </select>
- <input type="submit" name="sub" style= "background-color:red;width:200px;height:45px" value = "Подобрать">
- </div>
- </select>
- </h1>
- </form>
- </div>
- <?
- // Подключение к MySQL
- $con = mysql_connect("..........","...........","............");
- if (!$con)
- die('Could not connect: ' . mysql_error());
- mysql_select_db(".............", $con);
- $sql = mysql_query("SET CHARACTER SET cp1251_koi8");
- $bed = "";
- if(isset($_GET['bedroom']))
- $bedrooms = "&bedroom=".$_GET['bedroom'];
- // Значения, полученные из формы
- $sort = isset($_GET['sort']) ? $_GET['sort'] : 'desc';
- $key = isset($_GET['key']) ? $_GET['key'] : 'number';
- // Разрешённые значения
- $key_array = array('number', 'city', 'name', 'sleeper', 'bedroom', 'price');
- $sort_array = array('asc','desc');
- // Если указаны неправильные данные - выход
- if(!in_array($key, $key_array) or !in_array($sort, $sort_array))
- exit('Неверный формат запроса!');
- if(isset($_GET['price']) and (empty($_GET['v1']) or empty($_GET['v2'])))
- exit('Пустой запрос!');
- // Часть SQL-запроса - фильтр
- $orderby = " ORDER BY $key $sort";
- // Если кол-во лет заполнено - вводим его в mysql-запрос и добавляем в фильтры таблицы
- if(!empty($_GET['v1']) and !empty($_GET['v2']))
- {
- $where = 'WHERE `bedroom` BETWEEN ' . $_GET['v1'] . ' AND ' . $_GET['v2'];
- $values = '&v1=' . $_GET['v1'] .'&v2=' . $_GET['v2'];
- }
- elseif(!empty($_GET['bedroom']))
- {
- $where = 'WHERE `bedroom` = "' . $_GET['bedroom'] . '"';
- $values = null;
- }
- else
- {
- $where = null;
- $values = null;
- }
- // Запрос к БД
- $query = "";
- $query ="SELECT * from `users` $where $orderby";
- $result = mysql_query($query) or die(mysql_error());
- // Меняем сортировку для правильного вывода в таблице
- $sort = $sort == 'asc' ? 'desc' : 'asc';
- ?>
- <?php
- header("Content-Values: text/html; SET CHARACTER SET cp1251_koi8");
- error_reporting(E_ALL);
- $SQLHost = ".........";
- $SQLDB = "...........";
- $SQLUser = "...............";
- $SQLPassw = "...............";
- mysql_connect($SQLHost, $SQLUser, $SQLPassw);
- $sql = mysql_query("SET CHARACTER SET cp1251_koi8");
- mysql_select_db($SQLDB);
- if ( empty($_GET['orderby']) ) {
- $orderby = 'number';
- } else {
- $orderby = $_GET['orderby'];
- }
- if ( empty($_GET['sortvalues']) ) {
- $sortValues = 'ASC';
- $sqlQuery = "SELECT * FROM users ORDER BY " . $orderby . " " . $sortValues . "";
- } else if ( $_GET['sortvalues'] == 'ASC' ) {
- $sortValues = 'ASC';
- $sqlQuery = "SELECT * FROM users ORDER BY " . $orderby . " " . $sortValues . "";
- } else if ( $_GET['sortvalues'] == 'DESC' ) {
- $sortValues = 'DESC';
- $sqlQuery = "SELECT * FROM users ORDER BY " . $orderby . " " . $sortValues . "";
- }
- $result = mysql_query($sqlQuery);
- $dataArray = array();
- $i=0;
- while ($res = mysql_fetch_array($result)) {
- $dataArray[$i]['number'] = $res['number'];
- $dataArray[$i]['city'] = $res['city'];
- $dataArray[$i]['name'] = $res['name'];
- $dataArray[$i]['sleeper'] = $res['sleeper'];
- $dataArray[$i]['bedroom'] = $res['bedroom'];
- $dataArray[$i]['price'] = $res['price'];
- $i++;
- }
- $sortValues = ($sortValues == 'ASC') ? $sortValues = 'DESC' : $sortValues = 'ASC';
- ?>
- </div>
- <br />
- <a href="?">Сортировка по умолчанию ( по номеру|по возрастанию )</a>
- <br />
- <a href="?orderby=number&sortvalues=<?php echo $sortValues?>">По номеру</a>
- <br />
- <a href="?orderby=price&sortvalues=<?php echo $sortValues?>">По цене</a>
- <br />
- <div style="clear:both;"></div>
- <div style="margin-top:40px;">
- <!-- далее проверяем, если есть в выборке данные выводим таблицу иначе сообщение "По вашему запросу, ничего не найдено."-->
- <?PHP if($city){?>
- <table align= "center" border = 1>
- <tr>
- <th width="50"><a href="?orderby=number&sorttype=<?php echo $sortType?>">Номер</a></th>
- <th width='50'><a href="?orderby=city&sorttype=<?php echo $sortType?>">Місто</a></th>
- <th width='50'><a href="?orderby=name&sorttype=<?php echo $sortType?>">Назва</a></th>
- <th width='50'><a href="?orderby=sleeper&sorttype=<?php echo $sortType?>">Гостей</a></th>
- <th width='50'><a href="?orderby=bedroom&sorttype=<?php echo $sortType?>">Спальні</a></th>
- <th width='50'><a href="?orderby=price&sorttype=<?php echo $sortType?>">Ціна</a></th>
- </tr>
- <?php foreach ( $dataArray as $num=>$numArray ) { ?>
- <tr>
- <td><?php echo $dataArray[$num]['number']?></td>
- <td><?php echo $dataArray[$num]['city']?></td>
- <td><?php echo $dataArray[$num]['name']?></td>
- <td><?php echo $dataArray[$num]['sleeper']?></td>
- <td><?php echo $dataArray[$num]['bedroom']?></td>
- <td><?php echo $dataArray[$num]['price']?></td>
- </tr>
- <?php } ?>
- </table>
- <?PHP } else {?>
- <p>По вашему запросу, ничего не найдено.</p>
- <?PHP }?>
- </div>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д