Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не могу вытянуть данные из трёх связаных таблиц
 
 автор: davidoff_72   (11.08.2015 в 22:40)   письмо автору
 
 

Не могу вытянуть из трёх связанных таблиц данные


<?php

$qwerty 
mysql_query("SELECT 
                vakans.id_vak, vakans.koment, vakans.id_firm, vakans.id_dol, 
                firm.id_firm, firm.name_firm,
                dolzgnost.id_dol, dolzgnost.name_dol 
                FROM vakans, firm, dolzgnost 
                WHERE vakans.id_firm = firm.id_firm, vakans.id_dol = dolzgnost.id_dol
                 "
);

while(
$res mysql_fetch_array($qwerty)){
    echo 
"$res[koment]".'<br>';


?>

выдает такую ошибку: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\OpenServer\domains\localhost\inodb\vakans.php on line 61 

Подскажите что не так?

  Ответить  
 
 автор: Trianon   (12.08.2015 в 01:55)   письмо автору
 
   для: davidoff_72   (11.08.2015 в 22:40)
 

Вы не проверяете результат работы функции mysql_query() перед дальнейшим употреблением.

  Ответить  
 
 автор: davidoff_72   (12.08.2015 в 03:02)   письмо автору
 
   для: Trianon   (12.08.2015 в 01:55)
 

да, есть такой грех. каюсь.
Но я уже нашел решение - надо было всего лишь AND поставить.
Хотя, может есть какое то более правильное решение по выводу данных из трёх таблиц.

  Ответить  
 
 автор: Trianon   (12.08.2015 в 06:44)   письмо автору
 
   для: davidoff_72   (12.08.2015 в 03:02)
 

при чем тут грех и AND?

Я лишь ответил на ваш вопрос.
Какое именно "не так" порождает указанную диагностику - отсутствие проверки значения, возвращаемого mysql_query() .

  Ответить  
 
 автор: Лена   (17.08.2015 в 14:40)   письмо автору
 
   для: davidoff_72   (12.08.2015 в 03:02)
 

Чтобы найти более правильное решение, надо знать структуру трех таблиц и что вам надо вытягивать.
Я бы использовала соединение таблиц через LEFT JOIN, RIGHT JOIN, INNER JOIN...

И да, вам дали правильный совет, тело запроса лучше писать отдельно и обрабатывать результат mysql_query() отдельно, так намного быстрее ошибку найти, чем гадать на кофейной гуще:

$sql = ".......";
$result = mysql_query($sql)
    or die(mysql_error());

  Ответить  
 
 автор: davidoff_72   (17.08.2015 в 22:53)   письмо автору
 
   для: Лена   (17.08.2015 в 14:40)
 

спасибо. так и приблезительно сделал:

$qwerty = mysql_query("SELECT * FROM `firm` 
JOIN `vakans` ON firm.id_firm=vakans.id_firm 
JOIN `dolzgnost` ON vakans.id_dol=dolzgnost.id_dol
WHERE firm.id_firm = '$id_firm'") or die(mysql_error());


таблица: firm
id_firm (primiry key) 1
name_firm Бианка


таблица: vakans
id_vak (primiry key) 1 2
text какой то коментарий
id_firm (forign key) 1 1
id_dol (forign key) 2 3
(две записи в таблице vakans привязанные к фирме бианка в таблице firm - id_firm)
(две записи в таблице vakans привязанные к фирме бианка в таблице dolzgnost - id_dol)

таблица - dolzgnost
id_dol (primiry key) - 1 2
name_dol менеджер директор
(менеджер id = 1, директор id = 2)

Надо вывести на одну страницу данные по фирме бианка и привезанные к ней должности: менеджер, директор.

Приблизительно должно выглядить так на странице:
Фирма - Бианка
Вакансии:
менеджер
директор

ТО есть на страницу надо вывести название фирмы бианка (таблица firm ), две вакансии (таблица vakans) и должности относящиеся к каждой вакансии (таблица dolzgnost)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования