Имеется возможность удалить сам анекдот (и все комментарии к нему удалятся автоматически) - с этим все в порядке, работает. Также можно удалять каждый комментарий в отдельности. Вот с этим проблема. Какой бы комментарий я не собирался удалить - удаляется все время последний в списке.
Вот часть, отвечающая за удаление
if ((isset($_POST['anek'])) && ($_POST['anek'] != "")) {
$deletecommentsSQL = sprintf("DELETE FROM comments WHERE noteid=%s", // Запрос для удаления комментариев, к удаляемому анекдоту
GetSQLValueString($_POST['anek'], "int"));
$deleteSQL = sprintf("DELETE FROM anekdots WHERE id=%s", //Запрос удаления анекдота
GetSQLValueString($_POST['anek'], "int"));
mysql_select_db($database_Anekdots, $Anekdots);
$R = mysql_query("LOCK TABLES comments WRITE, anekdots WRITE", $Anekdots) or die(mysql_error()); //Запрос блокировки таблиц на запись
$Result1 = mysql_query($deletecommentsSQL, $Anekdots) or die(mysql_error()); //Сначала удаляем комментарии
$Result1 = mysql_query($deleteSQL, $Anekdots) or die(mysql_error()); //А потом удаляем саму таблицу
$R = mysql_query("UNLOCK TABLES", $Anekdots) or die(mysql_error()); //Запрос, разблокирующий таблицы на запись
$deleteGoTo = "nimda.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
if ((isset($_POST['com'])) && ($_POST['com'] != "")) {
$deleteSQL = sprintf("DELETE FROM comments WHERE id=%s",
GetSQLValueString($_POST['com'], "int"));
mysql_select_db($database_Anekdots, $Anekdots);
$Result1 = mysql_query($deleteSQL, $Anekdots) or die(mysql_error());
$deleteGoTo = "delete_anekdot.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
На всякий случай наборы записей анекдотов и комментариев к ним:
mysql_select_db($database_Anekdots, $Anekdots);
$query_anekdot = sprintf("SELECT * FROM anekdots WHERE id = %s", GetSQLValueString($colname_anekdot, "int"));
$anekdot = mysql_query($query_anekdot, $Anekdots) or die(mysql_error());
$row_anekdot = mysql_fetch_assoc($anekdot);
$totalRows_anekdot = mysql_num_rows($anekdot);
// Набор записей comments
if (isset($_GET['anekdot'])) {
$colname_comments = $_GET['anekdot'];
}
mysql_select_db($database_Anekdots, $Anekdots);
$query_comments = sprintf("SELECT id, added, avtor, content FROM comments WHERE noteid = %s ORDER BY added ASC", GetSQLValueString($colname_comments, "int"));
$comments = mysql_query($query_comments, $Anekdots) or die(mysql_error());
$row_comments = mysql_fetch_assoc($comments);
$totalRows_comments = mysql_num_rows($comments);
Ну и сами формы удаления:
<form action="" method="POST" name="delete_anekdot" id="delete_anekdot">
<div class="Anekdot_style">
<p><?php echo $row_anekdot['content']; ?></p>
<p><?php echo $row_anekdot['added']; ?></p>
<p>Рэйтинг:<?php echo ' '.$row_anekdot['rating']; ?></p>
<p>
<input type="submit" name="delete" id="delete" value="Удалить анекдот">
</p>
<p>
<input name="anek" type="hidden" id="anek" value="<?php echo $row_anekdot['id']; ?>">
</p>
</div>
</form>
<?php } // Show if recordset not empty ?>
<?php if ($totalRows_comments == 0) { // Show if recordset empty ?>
<p>Комментариев пока что еще нет</p>
<?php } // Show if recordset empty ?>
<?php do { ?>
<form action="" method="POST" name="delete_comment" id="delete_comment">
<div>
<hr>
<h4><?php echo $row_comments['id']; ?> </h4>
<br>
<p><?php echo $row_comments['avtor']; ?></p>
<p><?php echo $row_comments['content']; ?></p>
<br>
<p><?php echo $row_comments['added']; ?>
<p>
<input type="submit" name="delete_c" id="delete_c" value="Удалить коммент"><br>
<br><hr size="3" color="#030303"><br>
<p>
<input name="com" type="hidden" id="com" value="<?php echo $row_comments['id']; ?>">
<?php } // Show if recordset not empty ?>
<br>
<?php } while ($row_comments = mysql_fetch_assoc($comments)); ?>
</div>
</form>
Спасибо)))
Спустя 17 минут, 12 секунд (15.08.2011 - 19:10) neadekvat написал(а):
Делай не форму, а простую ссылку.
Ты присвашиваешь форме id, а форм таких явно не одна - не знаю, в этом ли ошибка, но ссылкой всяко проще управлять, чем сотней форм на странице.
Ты присвашиваешь форме id, а форм таких явно не одна - не знаю, в этом ли ошибка, но ссылкой всяко проще управлять, чем сотней форм на странице.
Спустя 6 минут, 22 секунды (15.08.2011 - 19:16) Invis1ble написал(а):
BlackGhost
Ужас....
Попробуй так:
neadekvat
скорее всего ошибка в том, что тег <form> открывается 100500 раз, а закрывается только по выходу из цикла
Ужас....
Попробуй так:
<?php do { ?>
<form action="" method="POST" name="delete_comment" id="delete_comment">
<div>
<hr>
<h4><?php echo $row_comments['id']; ?> </h4>
<br>
<p><?php echo $row_comments['avtor']; ?></p>
<p><?php echo $row_comments['content']; ?></p>
<br>
<p><?php echo $row_comments['added']; ?>
<p>
<input type="submit" name="delete_c" id="delete_c" value="Удалить коммент"><br>
<br><hr size="3" color="#030303"><br>
<p>
<input name="com" type="hidden" id="com" value="<?php echo $row_comments['id']; ?>">
<br>
</div>
</form>
<?php } // Show if recordset not empty ?>
<?php } while ($row_comments = mysql_fetch_assoc($comments)); ?>
neadekvat
скорее всего ошибка в том, что тег <form> открывается 100500 раз, а закрывается только по выходу из цикла
Спустя 6 минут, 5 секунд (15.08.2011 - 19:22) neadekvat написал(а):
Invis1ble, ага, соглашусь. Но я все-таки думаю, что форма в данном случаи лишний элемент, они созданы для других целей. Например, если понадобиться прикрутить редактирование комментариев, то при работе со ссылками это будет предельно просто реализовать. С формой - хрен знает, возможно ли без костылей.
Спустя 5 минут, 45 секунд (15.08.2011 - 19:28) Invis1ble написал(а):
neadekvat
да, мое имхо такое же. В данном случае форма лишнее, лучше сделать ссылкой.
да, мое имхо такое же. В данном случае форма лишнее, лучше сделать ссылкой.
Спустя 38 минут, 59 секунд (15.08.2011 - 20:07) BlackGhost написал(а):
Всем спасибо! Действительно проблема была в том, что следовало закрыть форму до завершения выхода из цикла.