все равно не могу разобратся никак((( Есть таблица (это упрощенный вариант а то там такое кол-во кода что ппц) таблица дома: id|name выводится в форму: 1 | первый | <url>просмотреть жильцов</url> 2 | второй |<url> просмотреть жильцов</url> и есть таблица жильцов id | name при нажатии на ссылку мне надо получить список проживающих в этом доме. Пробовал сделать через обьединение таблиц но не получается вывести в форму это.SQL запросы то написаны везде а как вывести на страницу результат не могу найти. И обьяснил бы кто проще из чего состоят запросы типа select t_resources.t_name, t_users.t_nick from t_resources inner join t_users on t_users.t_id = t_resources.t_userid
делаешь две таблицы: nomer_doma | imya_doma id | name | nomer_doma в первой таблице номер дома всегда уникален. дальше просто пробегаешь по второй таблице и если его номер дома совпадает с нужным - выводишь этого юзера
Код (PHP): SELECT `us`.*,`hs`.* FROM `users` as `us` INNER JOIN `houses` as `hs` ON `hs`.`id`=`us`.`house_id` WHERE `login`='login' LIMIT 0,1 Это я так примерно показал, как структурируются запросы. Вам же придется составлять, самому!
Добавлено спустя 3 минуты 13 секунд: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in I:\minitender\php\u4ast.php on line 25 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in I:\minitender\php\u4ast.php on line 28 выдает такие ошибки. Значит где то не обозначен массив? В SQL если все прописывать обьединение то оно проходит успешно. остается вопрос вывода через пхп.
брал с вики запрос. JOIN стоит в запросе. А про ОN буду читать искать... Добавлено спустя 15 минут 7 секунд: Код (Text): $query = "SELECT formzakaz FROM formazakaz INNER JOIN tender ON formzakaz.id=tender.forid"; так?))) Добавлено спустя 41 минуту 4 секунды: Код (Text): $sql = "EXPLAIN SELECT * \n" . "FROM\n" . " formzakaz\n" . " INNER JOIN \n" . " tender \n" . " ON formzakaz.id = tender.forid"; вот при выполнении запроса через SQL.через php показывает ошибки(((
Код (PHP): <?php function td($td,$id=null) { $id=($id)?' id="'.$id.'"':''; return'<td'.$id.'> '.$td.' </td>'; } $sql=mysql_query("SELECT `fz`.*,`tr`.* FROM `formzakaz` as `fz` INNER JOIN `trender` as `tr` ON `tr`.id=`fz`.`forid`"); while($array=mysql_fetch_assoc($sql)) { $table.='<tr> '.td($array[''],'one').' '.td($array[''],'tho').' '.td($array[''],'id'.$array['forid']).' </tr>'; } ?> Вывод: Код (PHP): <table> <?=$table?> </table> Сделал как пример... Разберетесь...
`formzakaz` as `fz` Это переименованные таблицы через as, взята первая и последняя (буквы), для своей же удобности. Также вы можете перечислять через " , ", при этом нужно будет убрать " * " Там где хотим не все сразу выводить, а перечислить свои (`fz`.* нужно будет убрать): SELECT `fz`.`id` as `fz_id`,`tr`.`id` as `tr_id` ... Красным выделены колонки которые одинаковые для того, чтобы вывести их уникальными из обеих таблиц, их нужно переименовать через зарезервированное ключевое слово as, иначе может случиться недоразумение. И выводить уже как: array['fz_id'] array['tr_id'] P.S. `tr`.id там где условие ON в запросе нужно тоже добавить " `` "
Все сделал но не могу понять что за ошибка Warning: mysql_fetch_assoc(): supplied resource is not a valid MySQL result resource in I:\minitender\php\u4ast.php on line 27 к БД подключение верное.на всех страницах аналогично все прописано и подключается.
Код (PHP): $sql=mysql_query("SELECT `fz`.*,`tr`.* FROM `formzakaz` as `fz` INNER JOIN `trender` as `tr` ON `tr`.`id`=`fz`.`forid`")or exit(mysql_error().'<br>'.mysql_errno()); Что скажет?
No database selected 1046 мне уже стыдно до нимогу,но я не понимаю что не так)))) Добавлено спустя 11 минут 22 секунды: Код (Text): <?php $db_host="127.0.0.1"; // обычно не нужно изменять $db_user="root"; // имя пользователя БД $db_password=""; // пароль БД $db_name = "zakaz"; // имя БД // соединение с БД $sql = mysql_connect($db_host, $db_user, $db_password) or die (mysql_error()); mysql_query("SET NAMES 'cp1251'"); mysql_query("SET CHARACTER SET 'cp1251'"); function td($td,$id=null) { $id=($id)?' id="'.$id.'"':''; return'<td'.$id.'> '.$td.' </td>'; } $sql=mysql_query("SELECT `fz`.*,`tr`.* FROM formzakaz as `fz` INNER JOIN tender as `tr` ON `fz`.`id`=`tr`.`forid`")or exit(mysql_error().'<br>'.mysql_errno()); while($array=mysql_fetch_assoc($sql)) { $table.='<tr> '.td($array['id'],'one').' '.td($array['forid'],'tho').' '.td($array['id'],'id'.$array['forid']).' </tr>'; } echo '<table> <?=$table?> </table>'; ?> таблицы formzakaz id|name... tender id|forid|name...
Видимо, что - то с подключением не то или базы нет =) Код (PHP): $connect=false; if(!$connect=mysql_connect('localhost','root','password')) { exit(mysql_error().' <> '.mysql_errno()); } else if(!mysql_select_db('dbase',$connect)) { exit(mysql_error().' <> '.mysql_errno()); } else { mysql_set_charset('utf8',$connect); } Код (PHP): function query($query) { global $connect; if($connect && ''!=$query) { return mysql_query($query,$connect); } return false; } Код (PHP): $sql=query("SELECT `fz`.*,`tr`.* FROM `formzakaz` as `fz` INNER JOIN `trender` as `tr` ON `fz`.`id`=`tr`.`forid`");
БД обе есть. я на половине страниц вижу их отображение. ввод данных проходит на ура и правильное отображение тоже.Если убрать код этот и прописать допустим цикл вывода из любой из БД то проходит. А такой вопрос...Вот то что я скинул чуть выше.код это скрипт. я его положил на кнопку и на ней прописал <a href="u4astniki.php?id=' . $sql_data['id'] . '">Участники</a> верно же?
Базы нет... Ну вот даже видно: Код (PHP): // соединение с БД $sql = mysql_connect($db_host, $db_user, $db_password) or die (mysql_error()); mysql_query("SET NAMES 'cp1251'"); А самой бд нет... Поставьте, что я дал и не надо велик изобретать. Сделайте файл с функциями и подключайте когда нужно. А вообще лучше это делать 1 раз, а файлы подключать куда надо после соединений.
Notice: Undefined variable: table in I:\minitender\php\u4ast.php on line 27 все теперь такая ошибка. видимо когда тестил подключение и стер строчку одну))сори что не поверил)))
перед while циклом поставьте: Код (PHP): $table=''; либо там где: Код (PHP): <?=isset($table)?$table:''?> То до цикла не надо будет ставить, а если вы до цикла поставите, то не надо делать isset так и оставить Код (PHP): <?=$table?> И это не ошибка, а нотис, как предупреждение. о том, что переменная не была определена ранее.
ну вот наконец пустое окно без ошибок...чтобы пустоту убрать надо выбирать какие то значения в этой части? Код (Text): "SELECT `fz`.*,`tr`.* Добавлено спустя 57 секунд: "SELECT `fz`.id,`fz`.name,`tr`.forid Добавлено спустя 5 минут 50 секунд: Код (Text): <table> <?=$table?> </table>
Код (Text): <?php $db_host='127.0.0.1';// ваш адрес где находится, хостится ваша база данных $db_login='root';// логин доступ к базе данных $db_pass='';// пароль доступа к базе данных $db_name='zakaz';// Имя базы данных с которой вы хотите работать, так как их может быть множество $db = mysql_connect($db_host,$db_login,$db_pass); if(!$db) echo 'Ошибка подключения'; // Нужно быть уверенным, что подключение удачно mysql_select_db($db_name); mysql_query("SET NAMES 'cp1251'"); mysql_query("SET CHARACTER SET 'cp1251'"); function td($td,$id=null) { $id=($id)?' id="'.$id.'"':''; return'<td'.$id.'> '.$td.' </td>'; } $sql=mysql_query("SELECT `fz`.*,`tr`.* FROM formzakaz as `fz` INNER JOIN tender as `tr` ON `fz`.`id`=`tr`.`forid`")or exit(mysql_error().'<br>'.mysql_errno()); $table=''; echo '<table>'; while($array=mysql_fetch_assoc($sql)) { $table.='<tr style="color:red;"> '.td($array['forid'],'one').' '.td($array['id'],'tho').' '.td($array['name'].'id'.$array['forid']).'</tr>'; } echo ' <?=$table?> </table>'; ?> не знаю...
Жесть( Вы пишете код и не видите? Или не понимаете, что пишете? Код (PHP): mysql_select_db($db_name); А где $db? Код (PHP): mysql_select_db($db_name,$db); Ну вот зачем это: Код (PHP): mysql_query("SET NAMES 'cp1251'"); mysql_query("SET CHARACTER SET 'cp1251'"); Я что получается, просто так написал, чтобы вы не посмотрели? Код (PHP): mysql_set_charset('cp1251',$db); Вы же не понятно куда отдаете подключения =) Там так, тут так пусть, а да сойдет =)