нужн объединить две таблицы - темы и пользователи по столбцу уник.идентификатор пользователя при этом чтобы результат - название, логин, дата выводились в отдельной странице при помощи метода GET.
по моему запросу выводит ошибка - запрос неверный
$m = mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE id = ".$_GET['id'] );
while($row = mysql_fetch_array($m))
{
echo "<h2>".$row['name'] ."</h2> ";
echo "<p>". $row['description'] ."</p>";
echo "<p>". $row['date'] ."</p>";
echo "<p>". $row['login'] ."</p>";
}
Спустя 2 минуты, 22 секунды (23.04.2011 - 14:56) neadekvat написал(а):
Спустя 19 минут, 46 секунд (23.04.2011 - 15:16) дианитка написал(а):
Warning: mysql_fetch_array()/или mysql_fetch_assoc()/mysql_fetch_row(): supplied argument is not a valid MySQL result resource in %script_addres% on line %line_num%
Спустя 2 минуты, 4 секунды (23.04.2011 - 15:18) neadekvat написал(а):
И?
Спустя 4 минуты, 57 секунд (23.04.2011 - 15:23) дианитка написал(а):
Error in SQL
Query was empty
Query was empty
Спустя 2 минуты, 26 секунд (23.04.2011 - 15:25) DeeKeiD написал(а):
$m = mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE id = ".$_GET['id'] ) or die(mysql_error());
Спустя 2 минуты, 48 секунд (23.04.2011 - 15:28) дианитка написал(а):
column id in where clause is ambiguous
неоднозначное условие? а как правильно?
неоднозначное условие? а как правильно?
Спустя 1 минута, 44 секунды (23.04.2011 - 15:30) DeeKeiD написал(а):
Поле id имеется в обоих столбцах?
Попробуй так :
mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE subjects.id = ".$_GET['id'] ) or die(mysql_error());
Попробуй так :
mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE subjects.id = ".$_GET['id'] ) or die(mysql_error());
Спустя 4 минуты, 36 секунд (23.04.2011 - 15:34) дианитка написал(а):
да, я пробовала так
$m = mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE subjects.id = ".$_GET['id'] );
ошибки уже нет) но не выводится логин
$m = mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE subjects.id = ".$_GET['id'] );
ошибки уже нет) но не выводится логин
Спустя 1 минута, 13 секунд (23.04.2011 - 15:35) DeeKeiD написал(а):
А если WHERE subjects.id заменить на WHERE users.id ?
Спустя 6 минут, 55 секунд (23.04.2011 - 15:42) дианитка написал(а):
ошибки не пишет но ничего не выводит
Спустя 9 минут, 26 секунд (23.04.2011 - 15:52) neadekvat написал(а):
Зачем гадать на кофейной гуще? Надо указывать именно ту таблицу, в которой нужно найти это самое id.
Спустя 2 минуты, 2 секунды (23.04.2011 - 15:54) дианитка написал(а):
я указывала - subjects.id все равно просто не выводится ни тема, ни логин, ни дата
Спустя 11 минут, 37 секунд (23.04.2011 - 16:05) neadekvat написал(а):
"SELECT t1.*, t2.* FROM subjects t1 left join users t2 on t1.user_id = t2.id WHERE t1.id = ".$_GET['id']
* выводит только то, что указано в основной таблице.
Если нужна информация из второй - следует это указывать конкретно.
Спустя 10 минут, 39 секунд (23.04.2011 - 16:16) Invis1ble написал(а):
дианитка
попробуй так:
попробуй так:
$qSubjects =
"SELECT s.*, u.*
FROM `subjects` s
LEFT JOIN `users` u ON u.`id` = s.`user_id`
WHERE s.`id` = " . (int)$_GET['id'] . "
GROUP BY s.`id`";
$rSubjects = mysql_query($qSubjects) or die(mysql_error());
if (mysql_num_rows($rSubjects) > 0)
{
while ($subject = mysql_fetch_assoc($rSubjects))
{
// Вывод данных
}
}
else
echo 'Записей с таким id нет';
Спустя 15 минут, 37 секунд (23.04.2011 - 16:32) neadekvat написал(а):
Invis1ble, зачем GROUP BY s.`id`, если это, по логике, первичный ключ?
Спустя 3 минуты, 16 секунд (23.04.2011 - 16:35) дианитка написал(а):
все равно - ошибки не пишет но и ничего не выдает( с group и без
Спустя 1 минута, 46 секунд (23.04.2011 - 16:37) neadekvat написал(а):
В обоих случаях (и с моим вариантом и с вариантом Инвиза)?
Спустя 14 минут, 22 секунды (23.04.2011 - 16:51) Invis1ble написал(а):
neadekvat
Цитата |
зачем GROUP BY s.`id`, если это, по логике, первичный ключ? |
чесно говоря не уверен, но вроде как если будет несколько записей в users удовлетворять условию ON, то без GROUP BY будет дублирование данных
Спустя 1 минута, 12 секунд (23.04.2011 - 16:52) Invis1ble написал(а):
дианитка
покажи свой код, где
покажи свой код, где
Цитата |
ничего не выдает |
полностью
Спустя 5 минут, 37 секунд (23.04.2011 - 16:58) neadekvat написал(а):
Цитата (Invis1ble @ 23.04.2011 - 17:51) |
то без GROUP BY будет дублирование данных |
Что имеется в виду под "дублированием"? Просто вместо одной строки вернется две или более.
Но связывают обычно по уникальным полям (соответствующим индексам или первичным ключам), чтобы таких ситуаций не было.
Спустя 6 минут, 25 секунд (23.04.2011 - 17:04) Invis1ble написал(а):
neadekvat
не, ну если в ON поле u.`id` - первичный ключ, то да, можно и без группировки. Тогда и цикл while там не к месту. Но я же не экстрасенс, поэтому предусматриваю вариант, что поля не уникальны
не, ну если в ON поле u.`id` - первичный ключ, то да, можно и без группировки. Тогда и цикл while там не к месту. Но я же не экстрасенс, поэтому предусматриваю вариант, что поля не уникальны
Спустя 2 минуты, 55 секунд (23.04.2011 - 17:07) дианитка написал(а):
session_start();
include "bd.php";
echo "Привет ".$_SESSION['user'];
if(isset($_POST['submit'])){
$user_id=0;
if (isset($_SESSION['user_id'])){
$user_id = $_SESSION['user_id'];
}
//$m = mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE subjects.id = ".$_GET['id'] );
/*$query = mysql_query("SELECT * FROM subjects left join users on subjects.user_id = users.id WHERE subjects.id = ".$_GET['id']) or die(mysql_error());
while($row = mysql_fetch_array($query))
{
echo "<h2>".$row['name'] ."</h2> ";
echo "<p>". $row['description'] ."</p>";
echo "<p>". $row['date'] ."</p>";
echo "<p>". $row['login'] ."</p>";
}*/
$qSubjects =
"SELECT s.*, u.*
FROM `subjects` s
LEFT JOIN `users` u ON u.`id` = s.`user_id`
WHERE s.`id` = " . (int)$_GET['id'] . "
";
$rSubjects = mysql_query($qSubjects) or die(mysql_error());
if (mysql_num_rows($rSubjects) > 0)
{
while ($subject = mysql_fetch_assoc($rSubjects))
{
echo "<h2>".$subject['name'] ."</h2> ";
echo "<p>". $subject['description'] ."</p>";
echo "<p>". $subject['date'] ."</p>";
echo "<p>". $subject['login'] ."</p>";
}
}
else
echo 'Записей с таким id нет';
$subject_id = $_GET['id'];
$comment = $_POST['comment'];
$r = mysql_query ("INSERT INTO comments (subject_id,date,user_id,comment,flag) VALUES('$subject_id',NOW(),'$user_id','$comment','show')");
}
<h1 style="color:red;"> Добавление комментария</h1>
<form id="myform2" action="" method="post">
<p>
<label>Текст комментария<br></label>
<textarea name="comment" type="text" size="25" maxlength="25"></textarea>
</p>
<p>
<input type="submit" name="submit" value="Отправить комментарий">
</p></form>
Спустя 1 минута, 33 секунды (23.04.2011 - 17:09) neadekvat написал(а):
Invis1ble, в данном случаи твое group by ничего бы не изменило. Вообще, его надо иначе применять. И не применять "на всякий случай".
Спустя 7 минут, 24 секунды (23.04.2011 - 17:16) Invis1ble написал(а):
дианитка
Странно... Ошибок в логике вывода я не вижу.. Попробуй выполнить запрос в phpMyAdmin
neadekvat
ок, как скажешь
Странно... Ошибок в логике вывода я не вижу.. Попробуй выполнить запрос в phpMyAdmin
neadekvat
ок, как скажешь
Спустя 2 минуты, 30 секунд (23.04.2011 - 17:19) neadekvat написал(а):
$qSubjects =
"SELECT s.*, u.*
FROM `subjects` s
LEFT JOIN `users` u ON u.`id` = s.`user_id`
WHERE s.`id` = " . (int)$_GET['id'] . "
";
$rSubjects = mysql_query($qSubjects) or die(mysql_error());
if (mysql_num_rows($rSubjects) > 0)
{
while ($subject = mysql_fetch_assoc($rSubjects))
{
echo "<h2>".$subject['name'] ."</h2> ";
echo "<p>". $subject['description'] ."</p>";
echo "<p>". $subject['date'] ."</p>";
echo "<p>". $subject['login'] ."</p>";
}
}
else
echo 'Записей с таким id нет';
Замени для тестирования на это:
$qSubjects =
"SELECT s.*, u.*
FROM `subjects` s
LEFT JOIN `users` u ON u.`id` = s.`user_id`
WHERE s.`id` = " . (int)$_GET['id'];
$rSubjects = mysql_query($qSubjects) or die(mysql_error());
if (mysql_num_rows($rSubjects) > 0)
{
while ($subject = mysql_fetch_assoc($rSubjects))
{
print_r($subject); // добавленная строка
echo "<h2>".$subject['name'] ."</h2> ";
echo "<p>". $subject['description'] ."</p>";
echo "<p>". $subject['date'] ."</p>";
echo "<p>". $subject['login'] ."</p>";
}
}
else
echo 'Записей с таким id нет';
Спустя 45 минут, 12 секунд (23.04.2011 - 18:04) дианитка написал(а):
спасибо огромное всем за помощь,
разобралась в чем была ошибка
разобралась в чем была ошибка
Спустя 11 минут, 28 секунд (23.04.2011 - 18:15) Invis1ble написал(а):
дианитка
ну может поделишься, или секрет?
ну может поделишься, или секрет?
Спустя 13 минут, 11 секунд (23.04.2011 - 18:29) дианитка написал(а):
все оказалось очень просто - я не видела нужных мне записей - описания, дату и т.д т.к.
if(isset($_POST['submit'])){ заканчивается в самом конце - т.е. записи появлялись только когда я записывала новый комментарий.
ну а с логином мне очень помогло
print_r($subject); // добавленная строка
if(isset($_POST['submit'])){ заканчивается в самом конце - т.е. записи появлялись только когда я записывала новый комментарий.
ну а с логином мне очень помогло
print_r($subject); // добавленная строка
Спустя 11 минут, 53 секунды (23.04.2011 - 18:40) Invis1ble написал(а):
ясно
_____________
дианка[COLOR=purple]