Доброго времени суток. Существует две таблицы user и income. В таблице user два поля: id и name(имя человека). В income много полей и одно - author, где хранится id человека из таблицы user. Вопрос, как вывести вместо номера id, соответствующее этому id имя из другой таблицы?
Это простейшее объединение таблиц (гугли join mysql и alias mysql) SELECT `i`.*, `u`.`name` FROM `income` AS `i` LEFT JOIN `user` AS `u` USING(`id`)
сорь не так, а вот так Код (Text): SELECT `i`.*, `u`.`name` FROM `income` AS `i` LEFT JOIN `user` AS `u` ON `i`.`author` = `u`.`id`
А если я вывожу данные из одной таблицы через sql запрос, то мне нужно создать отдельную переменную для смены значений и в выводе таблицы подставить её, правильно понимаю?
через SQL запрос вы ничего никуда не выводите, запрос говорит БД что нужно сделать выборку и сохранить её в буфере сервера базы данных, далее по средствам РНР операторов и драйвера работы с БД вы получаете данные в том виде в каком вам удобно, либо целиком, либо построчно. нужно просто почитать книжек
Видимо в книге я не дошел до таких моментов( Просто сейчас мне возвращается пустое значение и поле остается пустым. Хотя всё вроде также сделал
PHP 7 в подлиннике + куры Хекслета. Я недавно начал изучать, появилась такая потребность в от и спрашиваю как её реализовать. Сам код вывода таблцы: Код (Text): <?php $user = mysql_query("SELECT `i`.*, `u`.`name` FROM `income` AS `i` LEFT JOIN `jos.user` AS `u` ON `i`.`author` = `u`.`id`"); if(isset($data)) { $result = mysql_query("SELECT * FROM `income_expense_history` WHERE DATE(`time`) = \"$data\" "); }else{ $result = mysql_query("SELECT * FROM income_expense_history WHERE DATE(`time`) = \"$date\""); } if (!$result) { die('Неверный запрос: ' . mysql_error()); } /$result - ассоциированный массив, т.е. таблички, у которой есть названия столбцов //узнаем, сколько в массиве $result строчек $n=mysql_num_rows($result); //вывод на страничку в виде таблицы echo "<table border=1 cellspacing=0 cellpadding=2 style=width: 75% align=center> <tr> <th>Время</th> <th>Приход</th> <th>Расход</th> <th>Комментарий</th> <th>Ответственный</th> </tr>"; //вывод построчно for($i=0;$i<$n;$i++) echo "</td><td>",mysql_result($result,$i,time), "</td><td>",mysql_result($result,$i,income), "</td><td>",mysql_result($result,$i,expense), "</td><td>",mysql_result($result,$i,comment), "</td><td>",mysql_result($user,$i, name), "</td></tr>"; echo "</table>"; ?>
Изучать РНР и работать над реальным проектом, это то же самое как делать ремонт там где живёшь. И в том и в другом случае "поуши в говне". Тем паче, что работу с БД необходимо изучать практически в отрыве от РНР (РНР нужен только для вывода результата обучения в браузер).
Это небольшой проект который нужен для реальных задач. Теория это хорошо, но получая реальную задачу и справляясь с ней, мне кажется будет двойная польза
@KevinSmash, и что, в книге "PHP 7 в подлиннике" используют для работы с базами данных функции mysql_*, которых в PHP 7 уже нету? Не-а, совершенно бесполезно пытаться решать не учебные задачи, пока не владеешь инструментом. --- Добавлено --- Код даже комментировать не буду....
@KevinSmash, mysql_* не рекомендованы ещё во времена php 5.4, с 5.6 ругаются deprecated. Я как раз начинал php изучать, когда 5.3 доживала, застал переход.