|
|
|
| Есть таблица вакансий и таблица резюме. Ниже - раздельный поиск по ним.
$search="менеджер";
// первый запрос
$res1=mysql_query("select nomer,vacancy from vak_list where vacancy LIKE='%$search%' order by 'date' desс");
for ($i=0; $i<mysql_num_rows($res1); $i++){
$nomer=mysql_result($res1,$i,$nomer)
$vacancy=mysql_result($res1,$i,$vacancy)
echo "$vacancy - $nomer - вакансия<br>";
}
//второй запрос
$res2=mysql_query("select nomer,rezume from rez_list where rezume LIKE='%$search%' order by 'date' desс");
for ($i=0; $i<mysql_num_rows($res2); $i++){
$nomer=mysql_result($res2,$i,$nomer)
$rezume=mysql_result($res2,$i,$rezume)
echo "$rezume - $nomer - резюме<br>";
}
|
Вопрос к бывалым: как можно объединить запрос и сделать общий вывод, т.е. чтобы чередовались найденные вакансии и резюме? | |
|
|
|
|
|
|
|
для: Владимир22
(19.12.2008 в 12:18)
| | Объедините запросы через UNION | |
|
|
|
|
|
|
|
для: ronin80
(19.12.2008 в 15:39)
| | Насколько я знаю, UNION объединяет только таблицы с одинаковыми ячейками. Но всё равно ещё раз пробую:
$search="менеджер";
$res=mysql_query("select nomer,vacancy from vak_list where vacancy LIKE='%$search%'
UNION select nomer,rezume from rez_list where rezume LIKE='%$search%' order by 'date' desс");
for ($i=0; $i<mysql_num_rows($res); $i++){
$nomer=mysql_result($res,$i,$nomer) ;
$vacancy=mysql_result($res,$i,$vacancy) ;
$rezume=mysql_result($res,$i,$rezume)
//ЧТО ЗДЕСЬ НАДО ПИСАТЬ??
//echo "$vacancy - $nomer - вакансия<br>"; ИЛИ
//echo "$rezume- $nomer - резюме<br>"; ???
}
| Кроме того пишет:
mysql_result(): supplied argument is not valid.....
И как узнать резюме это вывело или вакансию?
Прошёлся по всему форуму, нигде ничего внятного не нашёл. Помогите! | |
|
|
|
|
|
|
|
для: Владимир22
(19.12.2008 в 16:54)
| | ну добавьте виртуальный столбец с типом
$res=mysql_query("select nomer,vacancy, 1 as type from vak_list where vacancy LIKE='%$search%'
UNION select nomer,rezume, 2 as type from rez_list where rezume LIKE='%$search%' order by 'date' desс");
а затем проверка 1-вакансия, 2-резюме
чёто я насчёт order by date не уверен, это поле есть в обеих таблицах? попробуйте добавьте его в запрос | |
|
|
|
|
|
|
|
для: ronin80
(19.12.2008 в 20:16)
| | Спасибо,ronin80. Но как всё-таки вывести эти вакансии и резюме и как конкретно проверить ЧТО есть вакансия, а что ЧТО резюме. Можно код? | |
|
|
|
|
|
|
|
для: Владимир22
(19.12.2008 в 21:03)
| | Вы предложенный запрос выполнили?
Неужели по результату запроса было не определить где что?
Зачем Вам код? | |
|
|
|
|
|
|
|
для: Trianon
(19.12.2008 в 21:27)
| |
$res=mysql_query("select nomer,vacancy, 1 as type from vak_list where vacancy LIKE='%$search%'
UNION select nomer,rezume, 2 as type from rez_list where rezume LIKE='%$search%' order by 'date' desс");
while($str=mysql_fetch_rows($res){
$vacancy =str['vacancy'];
$rezume =str['rezume'];
if($type==1) $typ="вакансия"; else $typ="резюме";
echo "$vacancy - $rezume -$typ";
}
| Ничего не выходит. Пишет:
mysql_result(): supplied argument is not valid.....
Если кто-то подскажет конкретный и правильный код, буду благодарен. Спасибо заранее. | |
|
|
|
|
|
|
|
для: Владимир22
(19.12.2008 в 22:04)
| | date нужно добавить в списки обеих селектов. И взять в `обратные косые кавычки` а не в 'апострофы' .
в том числе и в указании order by | |
|
|
|
|
|
|
|
для: Trianon
(19.12.2008 в 22:31)
| | Упростил задачу (убрал order и пр.), всё равно выводит ошибку.
$res=mysql_query("select vacancy, 1 as type from vak_list UNION select rezume, 2 as type from rez_list ");
while($str=mysql_fetch_array($res){
$vacancy =str['vacancy'];
$rezume =str['rezume'];
if($type==1) $typ="вакансия"; else $typ="резюме";
echo $typ;
}
| Постоянно выводит ошибку: ...supplied argument is not valid..... Менял mysql_fetch_array на mysql_fetch_row - бесполезно. Таблицы vak_list и rez_list никак не связаны с друг другом и имеют разное кол-во столбцов. И надо просто сделать общий вывод. Подскажите, что не правильно в выводе? | |
|
|
|
|
|
|
|
для: Владимир22
(22.12.2008 в 09:59)
| | во1х, такую ошибку оно выводить не может - функция mysql_result Вами не применяется.
Во2х, всё это происходит потому, что сам SQL-запрос сервер выполнить не смог. В этом случае в $res оказывается false, который Ваш скрипт перед вызовом mysql_result , mysql_fetch_??? и т.п. функций долежн проверять. И при необходимости вызывать и выводить вместо них mysql_error() и завершать выполнение. Всё это Ваш скрипт не делает, поэтому никакой информации о том, из-за чего был отвергнут запрос, не получаете. | |
|
|
|
|
|
|
|
для: Trianon
(22.12.2008 в 10:09)
| | 1. Это я ошибся, насчёт mysql_result - просто перепробовал уже всё.
2. Так какой выход? - ведь упростил же уже всё до предела? По отдельности (без UNION) всё выводится (select vacancy и select rezume)..
Сделал:$ result = mysql_query ($res) or die (mysql_error());
пишет: Query was empty (и что это значит ? - ведь по отдельности всё работает) | |
|
|
|
|
|
|
|
для: Владимир22
(22.12.2008 в 10:12)
| | >Сделал:$ result = mysql_query ($res) or die (mysql_error());
Здесь $res уже равно false. И какой запрос Вы пытаетесь диагностировать? | |
|
|
|
|
|
|
|
для: Trianon
(22.12.2008 в 10:47)
| | Trianon, так что делать... просто замучался уже. Ещё пишет, что у меня ошибка в синтаксисе "Resourse id#5" at line 1. Что такое id#5 ? | |
|
|
|
|
|
|
|
для: Владимир22
(22.12.2008 в 11:03)
| |
$sql = "select vacancy, 1 as type from vak_list UNION select rezume, 2 as type from rez_list ";
$res=mysql_query($sql);
if(!$res) exit("Error in $sql : ".mysql_error());
while($str=mysql_fetch_assoc($res))
{
$rezume = $vacancy =str['vacancy'];
if($type=='1') $typ="вакансия"; else $typ="резюме";
echo $typ;
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.12.2008 в 11:25)
| | Запрос не пустой (mysql_error не ругается) , но выдаёт:
Undefined variable: type... // в строке: if($type=='1')
и штампует в цикле слово "резюме"..... | |
|
|
|
|
|
|
|
для: Владимир22
(22.12.2008 в 16:09)
| | правильно.
Так наверное значение этой переменной тоже нужно перенести из $str ? Не находите? | |
|
|
|
|
|
|
|
для: Trianon
(22.12.2008 в 16:12)
| | Trianon, спасибо, я понял логику UNION и псевдоимён.
Но как оказалось не до конца, и проблема осталась :((
$sql = "select vacancy, 1 as type from vak_list UNION select rezume, 2 as type from rez_list ";
$res=mysql_query($sql);
while($str=mysql_fetch_assoc($res))
{
$type =str['type']; $vacancy =str['vacancy']; $rezume =str['rezume'];
if($type=='1') $rabota=$vacancy; if($type=='2') $rabota= $rezume;
echo $rabota; //выдаёт ошибку
}
|
Не понимает индекс "$rezume" - Undefined variable: rezume Т.е. не может прочитать эти столбцы($rezume) , а вакансии читает. Если запросы поменять местами, то будет читать только резюме. Предполагаю, что это в принципе невозможно с UNION так как объединяются разные столбцы и в данном случае выводится только первый запрос(вакансий). Если я не прав, пожалуйста, поправьте, кто сведущ или подскажите новое или другое решение. | |
|
|
|
|
|
|
|
для: Владимир22
(22.12.2008 в 16:31)
| | Проблема актуальна. Помогите с решением! HELP! | |
|
|
|
|
|
|
|
для: Владимир22
(22.12.2008 в 16:31)
| | и вакансии и резюме у Вас в результате присутствуют под первым именем - str['vacancy']
строку $rezume = $vacancy =str['vacancy']; я написал не просто так. | |
|
|
|
|
|
|
|
для: Trianon
(24.12.2008 в 15:30)
| | А как сделать, чтобы выводило и то, и то - поочерёдно? | |
|
|
|
|
|
|
|
для: Владимир22
(24.12.2008 в 16:11)
| | А кто гарантирует что обе последовательности имеют одинаковую длину?
Поставленной цели (довольно абсурдной с точки зрения здравого смысла) куда проще достичь, выполнив два запроса, и после этого параллельно расхлебав потоки их результатов.
Я пьяна, извините. | |
|
|
|