Выполнить запрос с несколькими условиями - 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>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д