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

Форум PHP

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

 

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

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

тема: Вывод данных из двух таблиц
 
 автор: миша   (12.07.2012 в 02:23)   письмо автору
 
 

Добрый день (утро)!
Есть скрипт вывода и редактирования комментариев. Выводим в таблице все комменты с 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>

  Ответить  
 
 автор: Zezst   (12.07.2012 в 02:46)   письмо автору
 
   для: миша   (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);

Опечатка?

  Ответить  
 
 автор: миша   (12.07.2012 в 02:58)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: confirm   (12.07.2012 в 12:01)   письмо автору
 
   для: миша   (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. Но сперва один запрос, как сказано выше.

  Ответить  
 
 автор: миша   (14.07.2012 в 16:38)   письмо автору
 
   для: confirm   (12.07.2012 в 12:01)
 

А тут сделаешь один запрос? Данные выводим из двух таблиц.

  Ответить  
 
 автор: миша   (14.07.2012 в 16:51)   письмо автору
 
   для: миша   (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);


в один?

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

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