|
|
|
| Добрый день (утро)!
Есть скрипт вывода и редактирования комментариев. Выводим в таблице все комменты с 3 колонками: author, date, text
При нажатии на ссылку author - переходим на редактирования коммента выделенного автора (author).
Все работает.
Вопрос - как вывести еще в одной колонке название статьи, где размещен коммент и чтобы при нажатии на это название был переход на эту статью.
Попытался, но знаний PHP маловато.
Заранее спасибо.
Комменты лежат в таблице comment
CREATE TABLE IF NOT EXISTS `comment` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`post` int(5) NOT NULL,
`author` varchar(30) NOT NULL,
`text` text NOT NULL,
`date` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=135 ;
где post соотвествует id_university статьи
Вот предполагаемый вывод названия статьи, где лежит коммент
<td><?php
$post = $myrow[post];
$result3 = mysql_query("SELECT * FROM universities WHERE id_university='" . mysql_real_escape_string($post) . "'", $db);
$myrow3 = mysql_fetch_array($result);
printf ("<a href='post_university.php?id_university=%s'>%s</a>",$myrow3["id_university"],$myrow3["title"]);
?></td>
|
Нижеприведенный код работает. В него надо включить вышеприведенный код
<table>
<?php
if (!isset($id))
{
$result = mysql_query ("SELECT * FROM comment ORDER by date DESC");
$myrow = mysql_fetch_array($result);
do
{
?>
<tr>
<td align="center">author</td>
<td align="center">date</td>
<td align="center">text</td>
</tr>
<tr>
<td><?php
printf ("<a href='comment_edit.php?id=%s'>%s</a>",$myrow["id"],$myrow["author"]);
?>
</p></td>
<td><?=$myrow["date"];?></td>
<td><?=$myrow["text"];?></td>
</tr>
<?php
}
while ($myrow = mysql_fetch_array ($result));
}
else
{
$result = mysql_query ("SELECT * FROM comment where id=$id");
$myrow = mysql_fetch_array($result);
print <<<HERE
||| тут я вывожу форму которая выводит само сообщения и вносит обновление в БД
HERE;
}
?>
</table>
|
| |
|
|
|
|
|
|
|
для: миша
(12.07.2012 в 02:23)
| |
$result3 = mysql_query("SELECT * FROM universities WHERE id_university='" . mysql_real_escape_string($post) . "'", $db);
$myrow3 = mysql_fetch_array($result);
|
Опечатка? | |
|
|
|
|
|
|
|
для: Zezst
(12.07.2012 в 02:46)
| | да. так надо $myrow3 = mysql_fetch_array($result3)
исправил. заработало
толлько у меня выводит одно и тоже название во всех строках.
мой код
<table border="1" cellspacing="0" cellpadding="4">
<?php
if (!isset($id))
{
$result = mysql_query ("SELECT * FROM comment ORDER by date DESC");
$myrow = mysql_fetch_array($result);
$post = $myrow[post];
echo $post;
do
{
?>
<tr bgcolor="#FFFF99">
<td align="center"><p class='nomistake'>title</p></td>
<td align="center"><p class='nomistake'>author</p></td>
<td align="center"><p class='nomistake'>date</p></td>
<td align="center"><p class='nomistake'>text</p></td>
</tr>
<tr>
<td><p class='mod'>
<?php
$result3 = mysql_query("SELECT * FROM universities WHERE id_university='" . mysql_real_escape_string($post) . "'", $db);
$myrow3 = mysql_fetch_array($result3);
printf ("<a href='../post_university.php?id_university=%s'>%s</a>",$myrow3["id_university"],$myrow3["title"]);
?>
</p></td>
<td><p class='mod'>
<?php
printf ("<a href='comment_edit.php?id=%s'>%s</a>",$myrow["id"],$myrow["author"]);
?>
</p></td>
<td><p class='mod'><?=$myrow["date"];?></p></td>
<td><p class='mod'><?=$myrow["text"];?></p></td>
</tr>
<?php
}
while ($myrow = mysql_fetch_array ($result));
}
else
{
$result = mysql_query ("SELECT * FROM comment where id=$id");
$myrow = mysql_fetch_array($result);
print <<<HERE
форма
HERE;
}
?>
</table>
|
| |
|
|
|
|
|
|
|
для: миша
(12.07.2012 в 02:58)
| | $post = $myrow[post]; - так нельзя делать, нужно так: $post = $myrow['post'];, иначе рано или поздно нарветесь на...
mysql_real_escape_string($post) - mysql_real_escape_string() тут излишне.
Уберите два запроса, сделайте один, получив все необходимое, ну а затем циклом вывод. Гонять базу запросами, это плохо.
Если используете mysql_fetch_array(), то так - mysql_fetch_array($result3, MYSQL_ASSOC);, а еще лучше mysql_fetch_assoc($result).
Цикл do...while выбросить и использовать while, ну совсем не к месту тут do...while. Но сперва один запрос, как сказано выше. | |
|
|
|
|
|
|
|
для: confirm
(12.07.2012 в 12:01)
| | А тут сделаешь один запрос? Данные выводим из двух таблиц. | |
|
|
|
|
|
|
|
для: миша
(14.07.2012 в 16:38)
| | Как объединить эти два запроса
$sql = "SELECT * FROM comment ORDER by date DESC";
$result = mysql_query($sql);
$post = $result['post'];
|
$result3 = mysql_query("SELECT * FROM universities WHERE id_university='$post'", $db);
$myrow3 = mysql_fetch_array($result3);
|
в один? | |
|
|
|