Возможно ли это? Надо, например, при выборе элемента из списка отобразить только соответствующие этому элементу значения. Например, выбрав одну из клиник из списка клиник, получить записи, относящиеся только к ней.
работающий php-код, в целом, выглядит так:
<?php
print $body;
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' ORDER BY Фирма";
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'";
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Пример страницы (списка как такового пока нет):
http://www.medorginfo.ru/clinic/f_ds/exxray
Спустя 2 часа, 41 минута (1.06.2010 - 22:02) vagrand написал(а):
Ну а почему нет? Добавляй в условие where дополнительные параметры фильтрации и будет тебе счастье
Спустя 7 минут, 18 секунд (1.06.2010 - 22:09) drlipodron написал(а):
я не совсем понял; в программировании не силен; я умею, конечно, where указать, но это будет "статично", а надо, чтоб пользователь "щелкал" по названию клиники - и происходила фильтрация; а так - сколько ж мне сраниц придется создавать...
не обязательно (даже этого вовсе не нужно) по клинике в ячейке таблицы; клиники могут быть вынесены в "выпадающий" список. Или просто, сбоку от таблицы будут перечислены.
не обязательно (даже этого вовсе не нужно) по клинике в ячейке таблицы; клиники могут быть вынесены в "выпадающий" список. Или просто, сбоку от таблицы будут перечислены.
Спустя 54 минуты, 55 секунд (1.06.2010 - 23:04) Gabriel написал(а):
drlipodron
ну почему сразу статически?
допустим название клиники является ссылкой при клике на ссылку добавляется параметр в урл который следом экранируется и запихивается в условия запросов.
ну почему сразу статически?
допустим название клиники является ссылкой при клике на ссылку добавляется параметр в урл который следом экранируется и запихивается в условия запросов.
Спустя 1 час, 34 минуты, 50 секунд (2.06.2010 - 00:39) drlipodron написал(а):
Вот, что получается...
Но где-то ошибка. Не работает.
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника2</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
if (!empty($_POST['clinic'])) { echo $_POST['clinic']; };
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic' ORDER BY Фирма";
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic'";
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Но где-то ошибка. Не работает.
Спустя 1 день, 17 часов, 8 минут, 10 секунд (3.06.2010 - 17:47) drlipodron написал(а):
"Бьюсь" третий день. Помогите, плиз!
Мне кажется, подобных форм на сайтах довольно много (хотя, м.б. я и не прав), м.б. кто-нибудь сталкивался, знает, как они делаются?
Мне кажется, подобных форм на сайтах довольно много (хотя, м.б. я и не прав), м.б. кто-нибудь сталкивался, знает, как они делаются?
Спустя 11 часов, 30 минут, 35 секунд (4.06.2010 - 05:17) andrey написал(а):
А что выводит, какую-то ошибку? Или вообще ничего?
Может стоит прописать перед запросом:
Может стоит прописать перед запросом:
$clinic=$_POST['clinic'];
Спустя 13 минут, 26 секунд (4.06.2010 - 05:31) drlipodron написал(а):
Да, я уже прописывал. Сечас еще раз проверил - пустая страница. точнее, только выпадающий список имеется. даже при первой загрузке страницы. выбор элемента, Нажатие на кнопку приводит только к перезагрузке страницы и появлению соответствующей надписи под списком (это ожидалось), а вот самой таблицы как не было, так и нет.
Спустя 4 минуты, 54 секунды (4.06.2010 - 05:36) drlipodron написал(а):
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника1</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
if (!empty($_POST['clinic'])) { echo $_POST['clinic']; };
if(!($node = menu_get_object()))
return;
$clinic=$_POST['clinic'];
$count_per_page = 10;
$sql = "SELECT Столбец1, Столбец2, Столбец3 FROM Таблица WHERE Столбец5='%s' and WHERE Столбец2='$clinic' ORDER BY Столбец2";
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Столбец5='%s' and WHERE Столбец2='$clinic'";
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Медицинская услуга' , 'Мед. компания' , 'Цена услуги');
$rows[] = array($row->Столбец1, $row->Столбец2, $row->Столбец3);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Такой вот кодик...
Спустя 4 часа, 29 минут, 21 секунда (4.06.2010 - 10:05) SlavaFr написал(а):
не хочу вдаватся в пхп-код, но я такой БД не знаю где бы это работало
тоесть
....WHERE Столбец5='%s' and WHERE Столбец2='$clinic' .....
тоесть
Цитата (drlipodron) |
я умею, конечно, where указать, ... |
не совсем соответствует действительности.
Спустя 6 часов, 13 минут, 20 секунд (4.06.2010 - 16:18) drlipodron написал(а):
почему нет? в таблице есть значение, равное параметру clinic (создан список); заполнитель '%s' прекрасно отрабатывается, если нет второго "where".
а вот второе "where" без заполнителя s не отрабатывается - запрос тоже "не проходит" - отображается только мой выпадающий список...
на грамотное составление запроса (самостоятельное) я, конечно, не претендую - есть достаточно много статей, взглянув на которые запрос можно написать (т.е. видоизменить запрос "под себя");
а вот что быть с передачей параметра в запрос? он-то не передается! а почему? что не правильно? БД можно и не знать, но факт: запрос
отрабатывается прекрасно. как еще, кроме передачи параметра clinic, можно решить задачу - фильтрация???
если это поможет, то cms drupal.
P.S. да, насчет второго слова "where",вроде, лишнее. убрал. но результат тот же...
а вот второе "where" без заполнителя s не отрабатывается - запрос тоже "не проходит" - отображается только мой выпадающий список...
на грамотное составление запроса (самостоятельное) я, конечно, не претендую - есть достаточно много статей, взглянув на которые запрос можно написать (т.е. видоизменить запрос "под себя");
а вот что быть с передачей параметра в запрос? он-то не передается! а почему? что не правильно? БД можно и не знать, но факт: запрос
<?php
print $body;
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' ORDER BY Фирма";
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'";
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
отрабатывается прекрасно. как еще, кроме передачи параметра clinic, можно решить задачу - фильтрация???
если это поможет, то cms drupal.
P.S. да, насчет второго слова "where",вроде, лишнее. убрал. но результат тот же...
Спустя 2 часа, 31 минута, 56 секунд (4.06.2010 - 18:50) Gabriel написал(а):
также при отправке пост запроса можно попробовать вывести содержание самого запроса и посмотреть чего там в нем.
попробовать провести его в БД через консоль/какй-то интерфейс и сравнить результаты.
ЗЫ можно попробовать добавит в форму action="" хоть и пустой.
попробовать провести его в БД через консоль/какй-то интерфейс и сравнить результаты.
ЗЫ можно попробовать добавит в форму action="" хоть и пустой.
Спустя 3 часа, 19 минут, 33 секунды (4.06.2010 - 22:10) drlipodron написал(а):
Gabriel, т.е., по сути, Вы считаете, что код правилен?
Я-то связываю его нерабочесть с наличием какой-то ошибки. Но я - не спец; это лишь мое предположение.
Если правилен, то м.б. логика запроса нарушена (?):
грузится страница, на которой есть форма. по умолчанию на ней уже выбран какой-то элемент, напимер "Клиника1". Я так понимаю, до нажатия кнопки, он в запрос отправлен не будет - в запросе будет "ноль". М.б. это и есть камень преткновения?
Но далее я ведь делаю попытку фильтрации: нажимаю кнопку - и ничего не меняется. М.б. в связи с тем, что отбиралось "из ничего", т.к. на первом этапе уже "ноль" был?
Если все связано с "нулем", когда страница загружена первый раз, то как обработать в запросе отсутствие параметра? т.е. сделать так, что если он выбран - запрос шел одним путем, т.е. с параметром clinic; а если нет - то без него.
Я-то связываю его нерабочесть с наличием какой-то ошибки. Но я - не спец; это лишь мое предположение.
Если правилен, то м.б. логика запроса нарушена (?):
грузится страница, на которой есть форма. по умолчанию на ней уже выбран какой-то элемент, напимер "Клиника1". Я так понимаю, до нажатия кнопки, он в запрос отправлен не будет - в запросе будет "ноль". М.б. это и есть камень преткновения?
Но далее я ведь делаю попытку фильтрации: нажимаю кнопку - и ничего не меняется. М.б. в связи с тем, что отбиралось "из ничего", т.к. на первом этапе уже "ноль" был?
Если все связано с "нулем", когда страница загружена первый раз, то как обработать в запросе отсутствие параметра? т.е. сделать так, что если он выбран - запрос шел одним путем, т.е. с параметром clinic; а если нет - то без него.
Спустя 48 минут, 7 секунд (4.06.2010 - 22:58) Igrok написал(а):
Может быть попробовать так:
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника2</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
$and = '';
if (!empty($_POST['clinic']))
{
echo $_POST['clinic'];
$and = " AND Фирма='$clinic' ";
};
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
/* $sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic' ORDER BY Фирма"; */
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
/* $sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic'"; */
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'".$and;
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Спустя 54 минуты, 21 секунда (4.06.2010 - 23:52) drlipodron написал(а):
При пустом параметре clinic - обычный вывод таблицы. А как только отправляю "post - только форма выбора остается.
Спустя 1 час, 28 минут, 38 секунд (5.06.2010 - 01:21) twin написал(а):
Вооот. К вопросу о пользе всякой ереси. которую так принято восхвалять. А именно про фреймворки, друпалы, дле, и прочее г дерьмо. Вместе с ООП подходом и PDO принципами.
Не вникал сильно - ибо кака. Но как то так наверняка.
Не вникал сильно - ибо кака. Но как то так наверняка.
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Столбец5='%s' AND Столбец2='%s'";или что то рядом.
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title, $clinic);
Спустя 6 часов, 45 минут, 20 секунд (5.06.2010 - 08:06) Игорь_Vasinsky написал(а):
ну что ты мучаешься... говорят же - организуй поиск с запросами ко всем возможным столбцам - если в какой либо запрос пустой - игнорируй его.. чем больше юзер задаст данных - тем точнее результат он получить.. хочет - пускай ищет сразу и по названию и по адресу и по цене.. - он же сам формирует запрос..кого винить то..
т.е. как те и описали выше делай запрос с условием and (мож и or - для вывода схожих результатов)
т.е. как те и описали выше делай запрос с условием and (мож и or - для вывода схожих результатов)
where name = "$name" and where citi = "$citi" and where price = "$price"
Спустя 1 час, 37 минут, 3 секунды (5.06.2010 - 09:43) drlipodron написал(а):
да я поиск и хочу организовать. но вот что-то не получается. при передаче параметра из списка (то же, наверняка и из строки, набранной пользователем было бы) выдается сам список+то, что набрал/выбрал пользователь, под списком; без таблицы. если уж по одному столбцу не ищется, то по нескльким что будет...
перепробовал все варианты. итог один...
на всякий случай, напишу последний. м.б. где-то не то сделал, а сам не вижу...
сама "тестовая страница" находится по адр. medoginfo<dot>ru/node/1666
перепробовал все варианты. итог один...
на всякий случай, напишу последний. м.б. где-то не то сделал, а сам не вижу...
сама "тестовая страница" находится по адр. medoginfo<dot>ru/node/1666
<form method='post'>
<select name="clinic">
<option value="Клиника1">Клиника1</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
$and = '';
if (!empty($_POST['clinic']))
{
echo $_POST['clinic'];
$and = " AND Фирма='$clinic' ";
};
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' AND Фирма='%s'";
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title, $clinic);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Спустя 12 часов, 10 минут, 38 секунд (5.06.2010 - 21:54) Igrok написал(а):
drlipodron
А точно $clinic соответствует Фирма в таблице результата запроса?
Может быть идет какое-то переопределение, например, в функции pager_query.
Можно попробовать выполнить код с учетом проверки соответствия $clinic и Фирма:
Если выйдет "Найдено соответствие", то скорее всего где-то идет переопределение. Возможно имеет смысл проанализировать функцию pager_query. А если "Не найдено соответствие", то $clinic не соответстует Фирма в Таблица.
А точно $clinic соответствует Фирма в таблице результата запроса?
Может быть идет какое-то переопределение, например, в функции pager_query.
Можно попробовать выполнить код с учетом проверки соответствия $clinic и Фирма:
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника2</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
$and = '';
if (!empty($_POST['clinic']))
{
echo $_POST['clinic'];
$and = " AND Фирма='$clinic' ";
$clinic=$_POST['clinic'];
}
if(!($node = menu_get_object()))
return;
/* Проверка на соответствие префикс CH */
$CHdb = mysql_connect("имя_сервера", "логин", "пароль") or die("MySQL Error: ".mysql_error()); // Соединнение с базой.
mysql_select_db("имя базы данных",$CHdb)or die("ERROR: Не удалось выбрать базу даных!!!"); // Выбор базы данных
$CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица WHERE Имя='%s'",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
if(in_array($clinic, $CHfirms))
echo "Найдено соответствие";
else
echo "Не найдено соответствие";
///////////////////////////////////
$count_per_page = 10;
/* $sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic' ORDER BY Фирма"; */
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
/* $sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic'"; */
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'".$and;
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Если выйдет "Найдено соответствие", то скорее всего где-то идет переопределение. Возможно имеет смысл проанализировать функцию pager_query. А если "Не найдено соответствие", то $clinic не соответстует Фирма в Таблица.
Спустя 13 минут, 1 секунда (5.06.2010 - 22:07) drlipodron написал(а):
Спасибо за анализ!
"Не найдено соответствие"...
Странно. Названия клиник точь-в-точь скопированы с таблицы.
Параметр clinic, ведь берется из списка, да? И устанавливается равным значению "Фирма" из таблицы. Как может не быть соответствия?..
Может, это соответствие должно как-то в коде определяться иначе?
думал, кодировка м.б. подводит. но, вроде, не должна - все в utf-8
Поигрался с одинарными кавычками - если убрать все, то сообщение о соответствии не выводится. Но добиться "найдено соответсвие" пока не смог.
"Не найдено соответствие"...
Странно. Названия клиник точь-в-точь скопированы с таблицы.
Параметр clinic, ведь берется из списка, да? И устанавливается равным значению "Фирма" из таблицы. Как может не быть соответствия?..
Может, это соответствие должно как-то в коде определяться иначе?
думал, кодировка м.б. подводит. но, вроде, не должна - все в utf-8
Поигрался с одинарными кавычками - если убрать все, то сообщение о соответствии не выводится. Но добиться "найдено соответсвие" пока не смог.
Спустя 34 минуты, 23 секунды (5.06.2010 - 22:41) Igrok написал(а):
Немного не там вставил проверку.
При первом проходе $clinic пуста.
Поэтому может выдать несоответствие.
Правильнее втавить вот так:
Если выйдет несоответствие. Не могу точно сказать почему.
Я недавно начал изучать php. Самому еще многое непонятно. Может быть я где-то ошибся в коде.
При первом проходе $clinic пуста.
Поэтому может выдать несоответствие.
Правильнее втавить вот так:
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника2</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
$and = '';
if (!empty($_POST['clinic']))
{
echo $_POST['clinic'];
$and = " AND Фирма='$clinic' ";
$clinic=$_POST['clinic'];
/* Проверка на соответствие префикс CH */
$CHdb = mysql_connect("имя_сервера", "логин", "пароль") or die("MySQL Error: ".mysql_error()); // Соединнение с базой.
mysql_select_db("имя базы данных",$CHdb)or die("ERROR: Не удалось выбрать базу даных!!!"); // Выбор базы данных
$CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица WHERE Имя='%s'",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
if(in_array($clinic, $CHfirms))
echo "Найдено соответствие";
else
echo "Не найдено соответствие";
///////////////////////////////////
}
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
/* $sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic' ORDER BY Фирма"; */
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
/* $sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic'"; */
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'".$and;
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Если выйдет несоответствие. Не могу точно сказать почему.
Я недавно начал изучать php. Самому еще многое непонятно. Может быть я где-то ошибся в коде.
Спустя 41 минута, 22 секунды (5.06.2010 - 23:23) drlipodron написал(а):
Несоответствие сохраняется. По таблице все верно. "Фирма" точно содержит те названия, которые передаются параметром "clinic".
этот кусок кода я убирал, т.к. без подключенной базы сайт просто не работает; она подключается в настройках. Таблица БД выбирается ниже.
$CHdb = mysql_connect("имя_сервера", "логин", "пароль") or die("MySQL Error: ".mysql_error()); // Соединнение с базой.
mysql_select_db("имя базы данных",$CHdb)or die("ERROR: Не удалось выбрать базу даных!!!"); // Выбор базы данных
этот кусок кода я убирал, т.к. без подключенной базы сайт просто не работает; она подключается в настройках. Таблица БД выбирается ниже.
Спустя 10 часов, 10 минут, 57 секунд (6.06.2010 - 09:34) Igrok написал(а):
Цитата |
этот кусок кода я убирал, т.к. без подключенной базы сайт просто не работает; она подключается в настройках. Таблица БД выбирается ниже. |
Да, все правильно.
Цитата |
Параметр clinic, ведь берется из списка, да? И устанавливается равным значению "Фирма" из таблицы. Как может не быть соответствия?.. |
Посмотрел страницу вашего сайта http://www.medorginfo.ru/clinic/f_ds/exxray
В выводимой таблице в колонке "Мед.компания" (насколько понял это и есть Фирма из таблицы Таблица) встречаются такие названия как:
Городская Покровская больница
Дорожная клиническая больница
СПб ГУЗ Городская Мариинская больница
СПб Медицинская Академия Последипломного Образования
и т.д.
В то время как в списке "Клиники" (насколько понял из него берется параметр $clinic) названия несколько другие:
Гинекология
Дерматология
Хирургия
и т.д.
Если я понял все правильно, то соответствие не наблюдается.
Спустя 2 минуты, 43 секунды (6.06.2010 - 09:36) drlipodron написал(а):
Нет, меню "Клиники" и параметр clinic не связаны между собой никак. Фирма=Мед.компания, это верно. А параметр clinic берется из выпадающего меню, которое видно на др. странице - medoginfo<dot>ru/node/1666 (так, для теста создана).
Просто сам клик на меню "клиники" выводит список клиник.
А там уже - подразделы, на которые разбиты все выполняемые им услуги. Это так, для объяснения логики. В любом случае, пункты меню сайта в создаваемом коде не принимает никакого участия.
Просто сам клик на меню "клиники" выводит список клиник.
А там уже - подразделы, на которые разбиты все выполняемые им услуги. Это так, для объяснения логики. В любом случае, пункты меню сайта в создаваемом коде не принимает никакого участия.
Спустя 1 час, 28 минут, 25 секунд (6.06.2010 - 11:05) drlipodron написал(а):
хорошо. пусть с этим не выходит ничего.
а если сделать так:
разместить в блоке список компаний (опять-таки выпадающий может быть, а м.б. и нет - не суть; список-то изначально определн); по клику на одной из них пользователь переходит на ДРУГУЮ страницу, где отображаются записи, относящиеся только к ней.
Т.е. я хочу к уже выполненному запросу добавить "where Фирма='Клиника1'", без всяких параметров (ну, чтоб не было путаницы, на моей тестовой страницы это соответствовало бы, скажем "where Фирма='Городская Покровская больница'".
Не знаю, понятно ли объяснил, что хочу. Пока не знаю как это сделать. Буду "копать", только не знаю "докопаюсь" ли; поэтому заранее прошу помощи. Просто невозможно без этого. Надо.
а если сделать так:
разместить в блоке список компаний (опять-таки выпадающий может быть, а м.б. и нет - не суть; список-то изначально определн); по клику на одной из них пользователь переходит на ДРУГУЮ страницу, где отображаются записи, относящиеся только к ней.
Т.е. я хочу к уже выполненному запросу добавить "where Фирма='Клиника1'", без всяких параметров (ну, чтоб не было путаницы, на моей тестовой страницы это соответствовало бы, скажем "where Фирма='Городская Покровская больница'".
Не знаю, понятно ли объяснил, что хочу. Пока не знаю как это сделать. Буду "копать", только не знаю "докопаюсь" ли; поэтому заранее прошу помощи. Просто невозможно без этого. Надо.
Спустя 34 минуты, 19 секунд (6.06.2010 - 11:39) Igrok написал(а):
У вас опечатка в ссылке на тестовую страницу medorginfo<dot>ru/node/1666
А если вывести полученный массив фирм, чтобы посмотреть его наполнение:
print_r($CHfirms);
Т.е. получается такой код:
И Фирма в таблице Таблица какой имеет тип?
А если вывести полученный массив фирм, чтобы посмотреть его наполнение:
print_r($CHfirms);
Т.е. получается такой код:
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника2</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
$and = '';
if (!empty($_POST['clinic']))
{
echo $_POST['clinic'];
$and = " AND Фирма='$clinic' ";
$clinic=$_POST['clinic'];
/* Проверка на соответствие префикс CH */
$CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица WHERE Имя='%s'",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
print_r($CHfirms);
if(in_array($clinic, $CHfirms))
echo "Найдено соответствие";
else
echo "Не найдено соответствие";
///////////////////////////////////
}
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
/* $sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic' ORDER BY Фирма"; */
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
/* $sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic'"; */
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'".$and;
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
И Фирма в таблице Таблица какой имеет тип?
Спустя 10 минут, 18 секунд (6.06.2010 - 11:50) drlipodron написал(а):
да, опечатался....
сейчас проверю.
Фирма: тип = "text"
Опять что-то не то: список (массив фирм) вообще не выводится.
сейчас проверю.
Фирма: тип = "text"
Опять что-то не то: список (массив фирм) вообще не выводится.
Спустя 1 час, 22 минуты, 34 секунды (6.06.2010 - 13:12) Igrok написал(а):
Можно попробовать вместо print_r($CHfirms);
var_dump($CHfirms);
И если получится: var_dump($CHcheck);
var_dump($CHfirms);
И если получится: var_dump($CHcheck);
Спустя 1 минута, 48 секунд (6.06.2010 - 13:14) drlipodron написал(а):
ответ на
var_dump($CHfirms);:
bool(false)
а на var_dump($CHcheck); :
resource(94) of type (mysql result)
var_dump($CHfirms);:
bool(false)
а на var_dump($CHcheck); :
resource(94) of type (mysql result)
Спустя 27 минут, 17 секунд (6.06.2010 - 13:41) Igrok написал(а):
Странно, тогда лучше оставить print_r($CHfirms);
А запрос можно переписать с четким условием и посмотреть что будет выведено
Может кто-то из форумчан что подскажет?
Понятно, что код написан не совсем хорошо.
Но в чем ошибка? По идее все должно отрабатывать правильно.
А запрос можно переписать с четким условием и посмотреть что будет выведено
$CHcheck = mysql_query("SELECT Фирма FROM Таблица WHERE Фирма ='%Helix, Лабораторная служба Хеликс%'",$CHdb); // Запрос
Может кто-то из форумчан что подскажет?
Понятно, что код написан не совсем хорошо.
Но в чем ошибка? По идее все должно отрабатывать правильно.
Спустя 1 минута, 22 секунды (6.06.2010 - 13:43) drlipodron написал(а):
а, запрос я уже переписывал. правда, на вывод, а не на проверку. вывелось все, что надо.
сейчас посмотрим как с проверкой будет.
сейчас посмотрим как с проверкой будет.
Спустя 4 минуты, 28 секунд (6.06.2010 - 13:47) drlipodron написал(а):
вывод тот же:
bool(false)
Не найдено соответствие
а вот без %:
Helix, Лабораторная служба ХеликсArray ( [CompanyName] => Helix, Лабораторная служба Хеликс ) resource(94) of type (mysql result) Найдено соответствие
а, ну, вроде, правильно ведь: % - для оператора Like ведь, а тут "=".
но таблицы нет.
хотя, если в $and подставить название лаборатории, то все выводится правильно.
bool(false)
Не найдено соответствие
а вот без %:
Helix, Лабораторная служба ХеликсArray ( [CompanyName] => Helix, Лабораторная служба Хеликс ) resource(94) of type (mysql result) Найдено соответствие
а, ну, вроде, правильно ведь: % - для оператора Like ведь, а тут "=".
но таблицы нет.
хотя, если в $and подставить название лаборатории, то все выводится правильно.
Спустя 1 час, 10 минут, 37 секунд (6.06.2010 - 14:58) Igrok написал(а):
Да, вместо "=" надо было LIKE написать.
А если выполнить этот код:
А если выполнить этот код:
<form method='post'>
<select name="clinic"> <!--выпадающий список-->
<option value="Клиника1">Клиника2</option>
<option value="Клиника2">Клиника2</option>
<option value="Клиника3">Клиника3</option>
</select>
<input name="Submit" type='submit' value='Отправить'>
</form>
<?php
$and = '';
if (!empty($_POST['clinic']))
{
$clinic=trim($_POST['clinic']);
echo $clinic;
$and = " AND Фирма='$clinic' ";
/* Проверка на соответствие префикс CH */
$CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица WHERE Имя='%s'",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
print_r($CHfirms);
if(in_array($clinic, $CHfirms))
echo "Найдено соответствие";
else
echo "Не найдено соответствие";
///////////////////////////////////
}
if(!($node = menu_get_object()))
return;
$count_per_page = 10;
/* $sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic' ORDER BY Фирма"; */
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
/* $sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s' and WHERE Фирма='$clinic'"; */
$sql_count = "SELECT COUNT(*) FROM Таблица WHERE Имя='%s'".$and;
$result = pager_query($sql,$count_per_page, 0, $sql_count, $node->title);
$rows = array();
while($row = db_fetch_object($result)){
$header = array('Название по прайсу', 'Мед. компания', 'Цена услуги');
$rows[] = array($row->Название, $row->Фирма, $row->Цена);
}
$output = theme('table', $header, $rows, array());
$output .= theme('pager', NULL, $count_per_page, 0);
print $output;
?>
Спустя 10 минут, 2 секунды (6.06.2010 - 15:08) drlipodron написал(а):
"Не найдено соответствие"...
Спустя 3 минуты, 52 секунды (6.06.2010 - 15:12) drlipodron написал(а):
Проблема, я так понял, в обмене данными между Post и запросом - не отсылается он почему-то туда:
Ребята, спасибо, что пытаетесь помочь. Цены Вам нет!
- пост принимает параметр и выводит данные на экран
- параметр $and написан верно - прямое указание лаборатории/клиники выводит данные только о ней.
- если вместо прямого указания поставить то, что содержит post, запрос не выполняется.
Ребята, спасибо, что пытаетесь помочь. Цены Вам нет!
Спустя 3 часа, 56 минут, 9 секунд (6.06.2010 - 19:08) Igrok написал(а):
Почему-то $clinic не соответствует Фирма в Таблица.
Может быть попробовать искать по LIKE
Т.е.
Если не получится, то попробовать добавить:
Если не получится, то возможно что-то с кодировкой
(может использовать функцию convert_cyr_string)
Может быть попробовать искать по LIKE
Т.е.
$and = " AND Фирма LIKE '%$clinic%' ";
Если не получится, то попробовать добавить:
$clinic=trim($_POST['clinic']);
$clinic=substr($clinic,5,5);
Если не получится, то возможно что-то с кодировкой
(может использовать функцию convert_cyr_string)
Спустя 26 минут, 18 секунд (6.06.2010 - 19:34) drlipodron написал(а):
да, я тоже уже подумываю о кодировке. но может ли быть такое, если сайт настроен на выдачу в utf-8, таблица сохранена в utf-8, а php работает в другой кодировке (т.е. в post данные хранятся не в utf-8)? надо посмотреть, возможно, задам вопрос провайдеру - php же его, вроде.
не, я уже взглянул - выдается, что utf-8 и в Local Value, и в Master Value. Единственно, везде (в БД) стоит utf8_unicode_ci, а в php - utf-8
не, я уже взглянул - выдается, что utf-8 и в Local Value, и в Master Value. Единственно, везде (в БД) стоит utf8_unicode_ci, а в php - utf-8
Спустя 3 часа, 12 минут, 8 секунд (6.06.2010 - 22:46) Igrok написал(а):
Может попробовать после соединения с БД
mysql_query("SET NAMES utf8");
Спустя 9 минут, 40 секунд (6.06.2010 - 22:56) drlipodron написал(а):
без динамики...
Спустя 28 минут, 34 секунды (6.06.2010 - 23:24) Igrok написал(а):
А если написать
Что выводит
CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
Что выводит
print_r($CHfirms);?
Спустя 8 минут, 51 секунда (6.06.2010 - 23:33) drlipodron написал(а):
Helix, Лабораторная служба ХеликсArray ( [CompanyName] => СПб ГУЗ Городская Мариинская больница ) Не найдено соответствие
Вот это забавно! Как так получается???
Вот это забавно! Как так получается???
Спустя 6 минут, 55 секунд (6.06.2010 - 23:40) Igrok написал(а):
Странно.
А если написать
Что выводит
?
А если написать
CHcheck = mysql_query("SELECT * FROM Таблица",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
Что выводит
print_r($CHfirms);
?
Спустя 7 минут, 16 секунд (6.06.2010 - 23:47) drlipodron написал(а):
Выводится 1я строка моей таблицы. И ничего больше. Названия столбцов и значения.
Спустя 11 часов, 56 минут, 2 секунды (7.06.2010 - 11:43) Igrok написал(а):
Ошибся.
mysql_fetch_assoc - обрабатывает ряд результата запроса и возвращает ассоциативный массив.
Т.е. обрабатыавет только один ряд.
А для обхода и отображения всего результата запроса необходимо делать это в цикле:
mysql_fetch_assoc - обрабатывает ряд результата запроса и возвращает ассоциативный массив.
Т.е. обрабатыавет только один ряд.
А для обхода и отображения всего результата запроса необходимо делать это в цикле:
CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица",$CHdb); // Запрос
while ($CHfirms = mysql_fetch_assoc($CHcheck))
{
print_r($CHfirms);
}
Спустя 1 минута, 37 секунд (7.06.2010 - 11:45) drlipodron написал(а):
а, понял. я как раз начал читать про ассоциативные массивы; но насчет "одного ряда" еще не прочитал.
перечислило все фирмы, но "Не найдено соответствие"
перечислило все фирмы, но "Не найдено соответствие"
Спустя 1 час, 1 секунда (7.06.2010 - 12:45) drlipodron написал(а):
что-то сообщения лишние не удалить....
Спустя 9 часов, 16 минут, 16 секунд (7.06.2010 - 22:01) Igrok написал(а):
Попробуйте следующее.
Первой строкой написать:
Переменной $and присвоить:
И вывести текст запроса:
Напишите что будет выведено.
Первой строкой написать:
<form action="" method="post">
Переменной $and присвоить:
$and = " AND Фирма LIKE '%$clinic%' ";
И вывести текст запроса:
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
echo $sql;
Напишите что будет выведено.
Спустя 26 минут, 40 секунд (7.06.2010 - 22:28) drlipodron написал(а):
Helix, Лабораторная служба ХеликсНе найдено соответствиеSELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' AND Фирма LIKE '%%' ORDER BY Фирма
Спустя 12 минут, 37 секунд (7.06.2010 - 22:41) Igrok написал(а):
А если так
И вывести текст запроса:
$and = " AND Фирма = ".$clinic;
echo $and;
И вывести текст запроса:
$sql = "SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s'".$and." ORDER BY Фирма";
echo $sql;
Спустя 4 минуты, 48 секунд (7.06.2010 - 22:45) drlipodron написал(а):
Helix, Лабораторная служба Хеликс AND Фирма = Не найдено соответствие
SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' AND Фирма = ORDER BY Фирма
SELECT Название, Фирма, Цена FROM Таблица WHERE Имя='%s' AND Фирма = ORDER BY Фирма
Спустя 30 минут, 17 секунд (7.06.2010 - 23:16) drlipodron написал(а):
Все! Класс. Спасибо. ПОлучилось!
Мы переписывали код друг с друга:
А надо сначала переменную объявить, а потом запрос писать)))) Потому и значение clinic пустым оказалось.
На каком-то определенном этапе понял, что рядом "топчемся", но что ТАК...
Мы переписывали код друг с друга:
if (!empty($_POST['clinic']))
{
echo $_POST['clinic'];
$and = " AND Фирма='$clinic' ";
[b] $clinic=$_POST['clinic'];[/b]
/* Проверка на соответствие префикс CH */
$CHdb = mysql_connect("имя_сервера", "логин", "пароль") or die("MySQL Error: ".mysql_error()); // Соединнение с базой.
mysql_select_db("имя базы данных",$CHdb)or die("ERROR: Не удалось выбрать базу даных!!!"); // Выбор базы данных
$CHcheck = mysql_query("SELECT DISTINCT Фирма FROM Таблица WHERE Имя='%s'",$CHdb); // Запрос
$CHfirms = mysql_fetch_assoc($CHcheck);
if(in_array($clinic, $CHfirms))
echo "Найдено соответствие";
else
echo "Не найдено соответствие";
///////////////////////////////////
}
А надо сначала переменную объявить, а потом запрос писать)))) Потому и значение clinic пустым оказалось.
if (!empty($_POST['clinic']))
{
echo $_POST['$clinic'];
[b]$clinic=$_POST['clinic'];[/b]
$and = " AND CompanyName = '$clinic'";
/*echo $and;*/
/* Проверка на соответствие префикс CH */
$CHcheck = mysql_query("SELECT DISTINCT CompanyName FROM TabClinNode"); // Запрос
while ($CHfirms = mysql_fetch_assoc($CHcheck))
{
/* print_r($CHfirms);*/
}
if(in_array($clinic, $CHfirms))
echo "Найдено соответствие";
else
echo "Не найдено соответствие";
///////////////////////////////////
}
На каком-то определенном этапе понял, что рядом "топчемся", но что ТАК...
Спустя 1 минута, 12 секунд (7.06.2010 - 23:17) drlipodron написал(а):
Еще раз спасибо за помощь. Без Вас я бы точно не справился.
Спустя 5 минут, 47 секунд (7.06.2010 - 23:23) Gabriel написал(а):
echo $_POST['$clinic'];странный кускок какойто
if(in_array($clinic, $CHfirms)) echo "Найдено соответствие"; else echo "Не найдено соответствие"; /////////////////////////////////// }
а использовать mysql_num_rows() низя использовать?
Спустя 6 часов, 43 минуты, 34 секунды (8.06.2010 - 06:06) drlipodron написал(а):
Так, по минимуму у меня все готово.
Вот с "динамикой" только не могу никак разобраться.
Выводится array (вместо списка) - и все тут... Помогите, еще раз, пожалуйста.
Страница тестовая та же.
P.S. Post я заменил на Get, т.к. иначе при "листании" страниц фильтр сбивается.
Вот с "динамикой" только не могу никак разобраться.
Выводится array (вместо списка) - и все тут... Помогите, еще раз, пожалуйста.
Страница тестовая та же.
P.S. Post я заменил на Get, т.к. иначе при "листании" страниц фильтр сбивается.
<title>Выбор мед. компании</title>
<body bgcolor="#ffffff" text="#000000" Iink="#cbda74" vlink="#808040" alink="#808040">
<?
$list = db_query("SELECT Distinct Фирма from Таблица where Имя='%s' ORDER BY Фирма", $node->title);
$firms = array();
while($firm = db_fetch_object($list)){
$firms[] = array($firm->Фирма);
}
"<form method='GET'><select name='clinic'><option>Выберите мед. компанию:</option>";
$x = 0;
while ( $x < sizeof ($firms) ) {
print "<option value=";
echo "{$firms[$x]}";
print ">";
echo "{$firms[$x]}";
print "</option>";
$x++;
}
?>
</select>
<input type="submit" value="Выбрать">
</form>
Спустя 5 часов, 28 минут, 50 секунд (8.06.2010 - 11:35) SlavaFr написал(а):
<<<Выводится array (вместо списка) - и все тут... Помогите, еще раз, пожалуйста.>>>
ты же сам туда array вводишь
$firms[] = array($firm->Фирма);
а в общем советую в принудительном порядке включить
error_reporting(E_ALL)
и mysql_error() использовать.
http://phpforum.ru/index.php?showtopic=2459
http://de3.php.net/manual/en/function.mysql-error.php
так как это является первой помощю при поиске ошибок.
ты же сам туда array вводишь
$firms[] = array($firm->Фирма);
а в общем советую в принудительном порядке включить
error_reporting(E_ALL)
и mysql_error() использовать.
http://phpforum.ru/index.php?showtopic=2459
http://de3.php.net/manual/en/function.mysql-error.php
так как это является первой помощю при поиске ошибок.
Спустя 1 час, 33 минуты, 1 секунда (8.06.2010 - 13:08) Gabriel написал(а):
$firms[] = $firm->Фирма;
Спустя 1 час, 29 минут, 56 секунд (8.06.2010 - 14:38) Igrok написал(а):
Понятно.
Пожалуйста
Пожалуйста
Спустя 2 часа, 19 минут, 15 секунд (8.06.2010 - 16:57) drlipodron написал(а):
Цитата (Gabriel @ 8.06.2010 - 10:08) |
$firms[] = $firm->Фирма; |
Так форма заполняется правильно, но фильтрация не идет - пропадает вся таблица, вместе с формой.
Спустя 6 минут, 50 секунд (8.06.2010 - 17:04) Gabriel написал(а):
Цитата |
Так форма заполняется правильно |
!==
Цитата |
но фильтрация не идет - пропадает вся таблица, вместе с формой |
тоесть форма есть но ее кабэ нету?
Спустя 3 часа, 35 минут, 28 секунд (8.06.2010 - 20:40) drlipodron написал(а):
ну да, вроде.
так, как у меня было, можно было через
вывести в таблицу список компаний в таблице.
а так - отсутствие этого списка.
так, как у меня было, можно было через
$output = theme('table', $header, $firms, array());
print $output;
вывести в таблицу список компаний в таблице.
а так - отсутствие этого списка.
Спустя 2 часа, 35 минут, 6 секунд (8.06.2010 - 23:15) drlipodron написал(а):
готово.
изменил формирование самого списка (списал с какого-то сайта):
Сразу все заработало как надо. Оставил, как и посоветовали (т.к. мой "вариант", если его можно таковым назвать, просто не работает):
Спасибо всем еще раз.
изменил формирование самого списка (списал с какого-то сайта):
$x = 0;
while
( $x < sizeof ($firms) ) :
"<option value='$firms[$x]'>$firms[$x]";
$x++;
endwhile;
Сразу все заработало как надо. Оставил, как и посоветовали (т.к. мой "вариант", если его можно таковым назвать, просто не работает):
$firms[] = $firm->Фирма;
Спасибо всем еще раз.