Есть в файле test.php такая строчка запроса к таблице:
$query = "SELECT * FROM $worktable WHERE resp_person='$person' ODER BY $sort";
Из этого:
$worktable узазана выше
$person берётся из формы (<INPUT TYPE="text" NAME="person" SIZE="15"> ) Указано в до <?php ... ?>
$sort берётся из формы (<SELECT NAME="sort"> след. строка <OPTION VALUE="name">Name) и т.д. указано до <?php ... ?>
Отсюда вопросы:
1. При запуске страницы sql выдаёт ошибку (You have an error in your SQL syntax near '' at line 1), т.к. изначально у $sort и $person нет значений
(но если запускать страницу test.php?sort=name&person=AAA , то работает.) Я пытался установить в теле, что $person и $sort раны значениям name и AAA соответственно, но потом они уже не меняются. Как сделать так, что бы просто при запуске test.php один раз изначально устанавливались необходимые значения, но потом при подставление из формы значения переменная менялась?
2. Какое значение необходимо подставить в <INPUT TYPE="text" NAME="person" SIZE="15">, что бы выбирались все ячейки, на не только те, которые есть в таблице? (Для конкретизации - в таблице есть, например, Иванов и Петров. Если у форме указать Иванов, то появятся только те row (забыл, как на русском), в которых resp_person равен "Иванов". С этим проблем нет, но если я хочу увидеть всех? Пытался ставить *, но судя по всему sql ищет персону с именем *... Помогите, плиз).
>но потом они уже не меняются. Как сделать так, что бы
>просто при запуске test.php один раз изначально устанавливались необходимые значения, но
>потом при подставление из формы значения переменная менялась?Кхм... Элементарно - в начале скрипта пишешь:
if(!$sort) $sort="name";
if(!$person) $person="AAA";И делов-то! :)
Насчет пункта 2: попробуй убрать кавычки вокруг $person. Напиши просто:
$query = "SELECT * FROM $worktable WHERE resp_person=$person ODER BY $sort";
Тогда звездочка должна прокатить.
>if(!$sort) $sort="name";
>if(!$person) $person="AAA";
>
>И делов-то! :)>Насчет пункта 2: попробуй убрать кавычки вокруг $person. Напиши просто:
>
>$query = "SELECT * FROM $worktable WHERE resp_person=$person ODER BY $sort";>Тогда звездочка должна прокатить.
Друг - ты мой спаситель! Первый вариант проканал на все 100%, но вот второй без кавычек такое выдаёт:
You have an error in your SQL syntax near '* ORDER BY Name' at line 1
>>$query = "SELECT * FROM $worktable WHERE resp_person=$person ODER BY $sort";
>вот второй без кавычек такое выдаёт:
>You have an error in your SQL syntax near '* ORDER BY
>Name' at line 1Хмм... Попробуй тогда так:
$query="SELECT * FROM $worktable HAVING resp_person REGEXP $person ORDER BY $sort";Сорри, под рукой мускуля нет - проверить не могу :(
$query = "SELECT * FROM $worktable WHERE resp_person=$person ODER BY $sort";Друг, спасибо огромное - я немножко модифицировал твой первый совет и всё получилось! Запрос оставил аналогичным, но добавил в скрипт 2 строчки:
if(!$person)$rerson="'*'";
if(!$person=="*")$person="'*'";Спасибо ещё раз, друг - оказывается всё дело в этих двух строчках, а я уж несколько дней бился и не мог сойти с "мёртвой" точки.
if(!$person)$rerson="'*'";
if(!$person=="*")$person="'*'";$query = "SELECT * FROM $worktable WHERE rperson='$person' && project='$projectn' ODER BY $sort";
А вот поспешил я немного... Заметил прикол - когда в запросе указано resp_person='$person', то почему-то сортировка именно по этому параметру не работает. У меня в таблице ( http://wgint.pwt.ru/ctr/ct.php ) достаточно большое количество столбцов, но при этом сортировка работает на каждый, кроме того, который в запросе используется. Т.к. у меня в запросе используются 2 параметра ($rperson и $projectn), то, к сожалению, сортировка по этим параметрам не работает. Друг, если есть идеи, подскажи, плиз. Вот эти 2 столбца мне больше всего сортировать-то и надо...
Спасибо!
>if(!$person)$rerson="'*'";
>if(!$person=="*")$person="'*'";
>
>$query = "SELECT * FROM $worktable WHERE rperson='$person' && project='$projectn' ODER BY
>$sort";
>
>А вот поспешил я немного... Заметил прикол - когда в запросе указано
>resp_person='$person', то почему-то сортировка именно по этому параметру не работает. У
>меня в таблице ( http://wgint.pwt.ru/ctr/ct.php ) достаточно большое количество столбцов, но
>при этом сортировка работает на каждый, кроме того, который в запросе
>используется. Т.к. у меня в запросе используются 2 параметра ($rperson и
>$projectn), то, к сожалению, сортировка по этим параметрам не работает. Друг,
>если есть идеи, подскажи, плиз. Вот эти 2 столбца мне больше
>всего сортировать-то и надо...
>
>Спасибо!
1) Ты с написанием слова ORDER не ошибся? У тебя написано ODER...
2) Со звёздочками можешь не парится, просто не пиши в запросе WHERE и всё:
===
if ((!$person) or ($person eq "*")) {
$query = "SELECT * FROM $worktable ORDER BY $sort";
} else {
$query = "SELECT * FROM $worktable WHERE rperson='$person' && project='$projectn' ORDER BY $sort";
}
===
И ещё, после того места, где выполняется $query вставь строчку:
echo mysql_error();
посмотри чего покажет, может там имена не совпадают или ещё что-нить...
и offtopic:
1) когда выводишь таблицу, проверяй на наличие значений в переменных (во всех) и если их нет, заменяй на & bsp; (без пробела после &)- таблица станет намного читабельней :) (если не стала, заменяй на "<font color=background_fon>.</font>" - короче, выводишь в ячейку что-нить закрашенное цветом фона):
if (!$date) $date="& bsp;";
2) <table cellspacing=1> - тоненькие границы между ячейками