|
|
|
|
|
для: миша
(25.07.2012 в 04:21)
| | Это другое дело, если форма после else, становиться понятно, что она тут не так приляпана, даже, если код был бы не с начала.
Вот только mysql_fetch_array(), do...while, сколько еще раз повторять, что это не хорошо?
>кликая на автора (можно поменятьссылку на text)
Не можно, а нужно. Если вы делаете это исключительно для себя, можете и по автору щелкать, но для других (в частности для меня), это странная логика, не догадался бы как запустить редактирование (без инструкции по эксплуатации).
>Можно выводить и последние комменты.
Не можно, а нужно, если речь идет об редактировании.
Что касается вывода, то код вам показали, и если есть в записях таблиц соответствия параметров запроса, и если в правой таблице у соответствий не пустые значения, значит вывод должен быть. Правда, по уму, запрос должен быть не к двум, а к трем таблицам. У вас должна быть таблица пользователей содержащая их id и имена, а таблица комментариев должна указывать не имя, а id пользователя, которому они принадлежат.
PS. Строковые значения при выводе на страницу необходимо пропускать через функцию htmlspecialchars(). | |
|
|
|
|
|
|
|
для: confirm
(24.07.2012 в 07:47)
| | привожу код.
<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>
|
он рабочий.выводятся комменты, кликая на автора (можно поменятьссылку на text) выводится форма для корректировки сообщения.
Все работает! Хотелось только в ту таблицу выводить и title статьи где расположен коммент.
Можно выводить и последние комменты.
Подробнее вот здесь http://softtime.ru/forum/read.php?id_forum=1&id_theme=87084&page=1 | |
|
|
|
|
|
|
|
для: миша
(24.07.2012 в 05:27)
| | >Далее кликая на конкретно автора или сам текст...
Комментарий - это кто-то добавил к статье этого автора свое видение, и каким это боком щелчок по имени автора связан с переходом на страницу какого-то комментария автору не принадлежащего? Логично, когда щелчок по имени автора приведет вас, например, на страницу его данных, не так ли?
А щелчок по тексту комментария. Ну ладно, комментарий это два, три слова, а если это приличный текст, вы представляете себе текст такой ссылки?
И вообще - кто редактирует и что? Если автор комментария, то ему должны быть доступны для редактирования только его комментарии. Этого у вас не видно (судя по выбору всех записей), следовательно речь может идти об администрировании/модерации.
Если это администрирование, и будь я администратором, я бы помер от такого редактирования, а вместе со мною и моя мышка. Это же как нужно загонять хвостатую, чтобы просмотреть все комментарии и общелкать те, которые необходимо комментировать! Такие вещи лучше делать как групповые операции, но...
Для размышления
А зачем вы выводите список всех комментариев? Если я предполагаю правильно, это администрирование/модерация, то, по логике вещей, вам надо редактировать только те комментарии, которые такую операцию еще не проходили - это новые комментарии. Зачем просматривать те, которые ранее редактировались?
Даже, если выводить список только новых комментариев, то нельзя сбрасывать со счетов возможность того, что их может быть много. Представляете себе такой список-портянку? Может быть все-таки предусмотреть навигацию?
Что есть суть редактирования? Это изменение данных с последующим их обновлением. А поле text формы при изменении данных в нем генерирует событие onchange. Сам браузер, конечно же не производит глубокого анализа, действительно ли данные изменились, и это возможно только сценарием сделать (а нужно ли?), но тем не менее, это инструмент.
Для того чтобы редактировать записи, совсем не обязательно прыгать на другую страницу (тем более открывать окно новое), выводя в ней форму для каждой записи. Достаточно одной страницы работающей в режиме просмотра/редактирования.
В одну форму выводятся записи новых комментариев (учитывая навигацию), которые помещаются в поля формы, каждая в свою. По id этой записи сразу выводится и чекбокс (name=del[] value=id) "Удалить" (если модерация, то такая возможность должна быть), связанный по id с текстовым полем.
Если произошли изменения в поле, то по событию onchange в форму добавляется чекбокс (name=update[] value=id) со значением id текстового поля в котором произошли изменения, и несущий информацию для сервера, что данную запись нужно обновить. Если разотметить этот чекбокс (отменить редактирование), то он удаляется из формы, и данная запись не будет обновлена в базе.
Сервер получит массив записей, которые были помещены в форму, но обновляться будут только те, у которых есть связанные по их id чекбоксы update. Записи, у которых присутствует чекбокс del, соответственно удаляются.
--------
В вашем коде напрочь отсутствует логика, а вы все ошибки правите.
Объясните сначала для чего на этой странице форма, если запрос на редактирование, это запрос к другой странице?
Размышление, это не обязательно "приказ" к действию, хотите редактируйте по одной записи, но выбор редактирования, это не ссылка в виде самого текста записи, а тем более не щелчок по имени автора, это просто ссылка - "Редактировать".
Подумайте сначала о логике своего скрипта, о задаче которую надо решить, и как лучше и удобнее ее решить, и только потом конкретно по каждой строчке кода, которая вызывает ошибку. | |
|
|
|
|
|
|
|
для: Jovidon
(24.07.2012 в 00:55)
| | Этот вариант тоже не работает (не выводит поле text)
А хочу я следующее.
В таблице выводим комменты (с колонками - title - название статьи где размещен коммент, автор, дата и сам коммент - text)
Далее кликая на конкретно автора или сам текст - чтобы выводилось новое окно, в котором происходит редактирования данного коммента. | |
|
|
|
|
|
|
|
для: миша
(22.07.2012 в 22:10)
| | >исправил ошибку.
>вместо $myrow поставил $row
???
попробуй так
<?php
$sql = "SELECT comment.*, universities.*
FROM comment
LEFT JOIN universities
ON comment.post = universities.id_university";
$result = mysql_query($sql) or die("Ошибка : ".mysql_error());
if(mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
echo "<tr>
<td>title</td>
<td>author</td>
<td>date</td>
<td>text</td>
</tr>
<tr>
<td><a href='../post_university.php?id_university=$row[id_university]'>$row[title]</a></td>
<td><a href='comment_edit.php?id=$row[id]'>$row[author]</a></td>
<td>$row[date]</td>
<td>$row[text]</td>
</tr>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: миша
(22.07.2012 в 23:16)
| | Вот этого я не знаю, чего вам исправить, так как я не в курсе, чего вы вообще хотите от этой страницы, кроме ссылок на редактирование. | |
|
|
|
|
|
|
|
для: confirm
(22.07.2012 в 22:32)
| | А что тогда в коде исправить конкретно? | |
|
|
|
|
|
|
|
для: миша
(22.07.2012 в 22:10)
| | И что правильно то? Вот отвлеченно:
у вас есть массив значений 1,2,3,4,5
вы проходите его циклом приравнивая его значений переменной $a, выводя ее в столбец,
а после цикла подставляете эту переменную в качестве атрибута value в поле text формы.
Вопрос - что вы увидите в текстовом поле?
Вот так и у вас. Я вижу, что у вас есть ссылки с параметром id=..., и по имени запрашиваемого скрипта понимаю, что запрос на редактирование. Но что у вас будет обновлять форма, и зачем, которая в качестве значений получает значения последней записи?!
Это что?
if (mysql_num_rows($result) == 0) - 0, это false, достаточно if (!mysql_num_rows($result)).
"No rows found, nothing to print so am exiting" - а не лучше ли сообщать, что записей в базе нет, и почему это сообщение на английском, у вас англичане редактированием занимаются? :) А что же тогда остальное на русском, бедные инглиши... )
Примечание - делайте отступы в коде, ну неужто вам удобно разбираться в таком? Вот мне такое читать просто не охота, думаю не только мне. | |
|
|
|
|
|
|
|
для: confirm
(22.07.2012 в 20:22)
| | исправил ошибку.
вместо $myrow поставил $row
Вы запросом выбираете все записи, а форма для редактирования одна! Спрашивается - а какую именно запись вы редактировать хотите?
Все правильно. Выводим все записи, а далее нажимая на нужную запись - открыается окно для редактирования этой записи.
вот только у меня поле text не выводится
<?php
$sql = "SELECT comment.*, universities.* FROM comment
LEFT JOIN universities ON comment.post = universities.id_university";
$result = mysql_query($sql);
if (!$result)
echo "Ошибка базы данных. MySQL пишет:", mysql_error();
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo "<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
printf ("<a href='../post_university.php?id_university=%s'>%s</a>",$row["id_university"],$row["title"]);
?>
</p></td>
<td><p class='mod'>
<?php
printf ("<a href='comment_edit.php?id=%s'>%s</a>",$row["id"],$row["author"]);
?>
</p></td>
<td><p class='mod'><?=$row["date"];?></p></td>
<td><p class='mod'><?=$row["text"];?></p></td>
</tr>
<?php
}
mysql_free_result($result);
print <<<HERE
|
| |
|
|
|
|
|
|
|
для: миша
(22.07.2012 в 19:25)
| | Делайте в коде отступы, иначе воспринимать его трудно.
Остановитесь пока на проблемах, и обратите внимание на запрос и вывод - вам не кажется ничего странным? Вы запросом выбираете все записи, а форма для редактирования одна! Спрашивается - а какую именно запись вы редактировать хотите? | |
|
|
| |
|