![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Вставить ник | Быстрая цитата | Сообщение
#1
|
|
![]() Crocodile Dundee ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 17947 Регистрация: 5.09.2004 Пользователь №: 4597 ![]() |
Написал базу заказов для работы. Вкрячил поиск по номеру заказа. При абсолютном совпадении выводится строка из базы. Тут все просто. Примерно так:
Код function search($page) { $numorder2 = $_GET["numorder1"]; $res2 = db_query_ex("SELECT * FROM orders WHERE numorder = '$numorder2'"); while($row1 = mysql_fetch_array($res2)) { $id = $row1["id"]; $datetime = $row1['datetime']; ..... echo '<td align=center width=24>'.$id.'</td>'; echo '<td width=50><span style="font-size:8px"><b>'.$datetime.'</b></span></td> .... } Задача: можно ли сделать по-простому выборку не при абсолютном совпадении, а при пересечении цифр поиска с номерами заказов. Т.е. если в запросе написать "12" то выборка произойдет из заказов с номерами "123456", "123457", "345412". Т.е. нужно использовать поиск как шаблон. Чую, что решение не простое, если у SELECT WHERE нет каких-то конструкций о которых я не знаю (Вообще, я много чего не знаю).. P.S. Эта база мой первый серьезный проект на пхп =))).. Сообщение отредактировано Mick Thunder - 10.03.2007 - 00:00 |
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#2
|
|
Частый гость![]() ![]() ![]() Группа: Участник Сообщений: 192 Регистрация: 30.10.2005 Пользователь №: 10364 ![]() |
Написал базу заказов для работы. Вкрячил поиск по номеру заказа. При абсолютном совпадении выводится строка из базы. Тут все просто. Примерно так: Код function search($page) { $numorder2 = $_GET["numorder1"]; $res2 = db_query_ex("SELECT * FROM orders WHERE numorder = '$numorder2'"); while($row1 = mysql_fetch_array($res2)) { $id = $row1["id"]; $datetime = $row1['datetime']; ..... echo '<td align=center width=24>'.$id.'</td>'; echo '<td width=50><span style="font-size:8px"><b>'.$datetime.'</b></span></td> .... } Задача: можно ли сделать по-простому выборку не при абсолютном совпадении, а при пересечении цифр поиска с номерами заказов. Т.е. если в запросе написать "12" то выборка произойдет из заказов с номерами "123456", "123457", "345412". Т.е. нужно использовать поиск как шаблон. Чую, что решение не простое, если у SELECT WHERE нет каких-то конструкций о которых я не знаю (Вообще, я много чего не знаю).. P.S. Эта база мой первый серьезный проект на пхп =))).. like тебе в помощь ![]() если у тебя номер заказа хранится в поле типа char/varchar db_query_ex("SELECT * FROM orders WHERE numorder like '%".$numorder2."%'"); если у тебя номер заказа хранится в поле типа numeric сделай преобразование типа cast,convert (зависит от версии) или тривиально: db_query_ex("SELECT * FROM orders WHERE ltrim(' '+numorder ) like '%".$numorder2."%'"); и еще: $numorder2 = $_GET["numorder1"]; доверяй, но проверяй ![]() хотя бы так $numorder2 =(int) $_GET["numorder1"]; Сообщение отредактировано srv - 10.03.2007 - 00:19 |
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#3
|
|
![]() Crocodile Dundee ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 17947 Регистрация: 5.09.2004 Пользователь №: 4597 ![]() |
like тебе в помощь ![]() db_query_ex("SELECT * FROM orders WHERE ltrim(' '+numorder ) like '%".$numorder2."%'"); Спасибо за лайк, ща попробую.. Пхп никогда не учил, изучаю его расковыривая чужие коды, нарываюсь на кучу банальных грабель, но ничего, прорвемся )). Поэтому и операторов не знаю, если нужно немного в сторону копнуть. |
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#4
|
|
Частый гость![]() ![]() ![]() Группа: Участник Сообщений: 192 Регистрация: 30.10.2005 Пользователь №: 10364 ![]() |
Спасибо за лайк, ща попробую.. Пхп никогда не учил, изучаю его расковыривая чужие коды, нарываюсь на кучу банальных грабель, но ничего, прорвемся )). Поэтому и операторов не знаю, если нужно немного в сторону копнуть. это не пхп ![]() ![]() пиши в личку, еслки грабли будут слишком часто докучать. Удачи. Сообщение отредактировано srv - 10.03.2007 - 00:36 |
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#5
|
|
![]() Crocodile Dundee ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 17947 Регистрация: 5.09.2004 Пользователь №: 4597 ![]() |
|
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#6
|
|
![]() Crocodile Dundee ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 17947 Регистрация: 5.09.2004 Пользователь №: 4597 ![]() |
Господа, помогите еще...
Захотелось получить статистику по базе. Простенькую написал, но хочется автоматизировать до конца. Подскажите вот в чем. Может есть изящное решение (пхп и мускул не учил, поэтому тонкостей не знаю). В базе есть столбец с именами сотрудников. Естественно, у каждого заказа есть свой владелец-сотрудник. Как просто получить массив со всеми сотрудниками, мелькающими во всех заказах? Естественно, чтобы никто не повторялся там =). Можно через вложенный while со сравнением по результатам поиска, если не повторяется сотрудник, присваивать новый элемент массива. Но, некрасиво как-то. Пока ограничился забитием массива вручную и потом по каждому элементу массива получаю нужные данные из базы. Код $Worker['0']='Вася'; Выручайте $Worker['1']='Петя'; $Worker['2']='Фёкла'; $Worker['3']='Прасковья'; $x = 0; while($x <= 3) { $res2 = db_query_ex("SELECT quantity FROM orders WHERE owner = '$Worker[$x]'"); ... ![]() |
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#7
|
|
Звезда форума![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1510 Регистрация: 29.09.2003 Пользователь №: 92 ![]() |
SELECT COUNT(*), w.name FROM orders as o, workers as w WHERE w.id = o.owner GROUP BY w.name;
или без COUNT(*) если не надо считать количество заказов на сотруднега. или вообще SELECT DISTINCT o.owner FROM orders as o; Сообщение отредактировано сплю - 18.10.2007 - 21:39 |
|
|
![]()
Вставить ник | Быстрая цитата | Сообщение
#8
|
|
![]() Crocodile Dundee ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 17947 Регистрация: 5.09.2004 Пользователь №: 4597 ![]() |
Спасибо, сделал на основе DISTINCT, хотя его не рекомендуют юзать, ввиду неоптимизированности.
Честно говоря в первой строке ничего не понял, для чего используются конструкции типа w.name и как их дальше использовать. Чайник я. Надо туториалы читать =). |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 6.07.2025 - 09:17 |