|
|
|
| Доброго времени суток. Есть форма модерации сообщений, в которой выводятся из mysql имя юзера, его email, тема сообщения, само сообщение, время добавления сообщения и ip, кнопка "удалить сообщение", а так же чекбокс, благодаря которому мы одобряем сообщение, для вывода в основную ленту новостей. Проблема с чекбоксом. Когда пользователь заполняет форму и отправляет ее, чекбоксу присваивается значение 0. Смысл в том, чтобы при постановке "флажка" значение переменной $moderation менялась на 1 и переписывалась в таблице.
<?php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database, $db_server)
or die("Невозможно выбрать базу данных: " . mysql_error());
if (isset($_POST['delete']) && isset($_POST['link']))
{
$link = get_post('link');
$query = "DELETE FROM all_news WHERE link='$link'";
if (!mysql_query($query, $db_server))
echo "Сбой при удалении данных: $query<br>" .
mysql_error() . "<br><br>";
}
if (isset($_POST['moderation']))
{
$moderation = get_post('moderation');
$query = "UPDATE all_news SET moderation='0' WHERE moderation='$moderation' ";
$result = mysql_query($query);
if (!$result) die ("Сбой при доступе к базе данных: " . mysql_error());
}
$query = "SELECT * FROM all_news";
$result = mysql_query($query);
if (!$result) die (": " . mysql_error());
$rows = mysql_num_rows($result);
for ($j = 0 ; $j < $rows ; ++$j)
{
$row = mysql_fetch_row($result);
echo <<<_END
<pre>
<b>Имя</b> $row[0]
<b>Email</b> $row[1]
<b>Наименование новости</b> $row[2]
<b>Текст новости</b> $row[3]
<b>Ссылка на источник</b> $row[4]
</pre>
<form action="moderation.php" method="post">
<input type="hidden" name="delete" value="yes">
<input type="hidden" name="link" value="$row[4]">
<input type="submit" value="DELETE RECORD"><br><br>
</form>
<form action="moderation.php" method="post">
<b>Добавить новость в ленту новостей</b><input type="checkbox" name="moderation" value="$moderation"><br>
<input type="submit">
</form>
_END;
}
mysql_close($db_server);
function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
function moderation($moderation)
{
if ($moderation == "on")
{
$moderation = '1';
}
else $moderation = '0';
}
?>
|
| |
|
|
|
|
|
|
|
для: hakkol
(30.06.2015 в 12:18)
| |
<? php
$query = "UPDATE all_news SET moderation='0' WHERE moderation='$moderation' ";
|
если по русски то
всем записям в таблице all_news где moderation равно (1/0) установить moderation значение 0
|
http://www.spravkaweb.ru/mysql/sql/update | |
|
|
|
|
|
|
|
для: indexer
(01.07.2015 в 13:38)
| | я уже обнаружил это ошибку, после SET ставлю запись moderation='$moderation' а после WHERE moderation='0', в базу данных записываются пустые значения, попробовал в форме изменить value='$moderation' на checkbox='$moderation', если я хоть у одной записи ставлю галочу, то в таблице all_news, значение moderation у всех строк принимает значение 'on'... | |
|
|
|
|
|
|
|
для: hakkol
(01.07.2015 в 15:52)
| | Нужен еще один признак
Например ID записи | |
|
|
|
|
|
|
|
для: indexer
(01.07.2015 в 16:06)
| | подскажите тогда, как задать этот ID? работал с базой кник, там все было удобно сортировать по isbn, а как присваивают ID записям на тех же форумах я не знаю... | |
|
|
|
|
|
|
|
для: hakkol
(01.07.2015 в 16:10)
| |
<? php
$query = "UPDATE all_news SET moderation='$moderation' WHERE moderation='0' AND id='$id_field' ";
|
id это автоинкрементное поле
если вы изначально меняете только те поля у которых moderation=0
то с полем id вы меняете только те поля у которых moderation=0 И id = определенному значению. А id уникально и следовательно меняется только 1 запись. | |
|
|
|
|
|
|
|
для: indexer
(01.07.2015 в 16:21)
| | добавил id в таблицу, добавил в строку AND id='$id', значение $moderation не передаются таблице, как был 0, так и остался 0... | |
|
|
|
|
|
|
|
для: hakkol
(02.07.2015 в 11:46)
| |
выдает сформированный запрос? | |
|
|
|
|
|
|
|
для: indexer
(02.07.2015 в 12:01)
| | да, выдает, но id='' и еще я заметил один косяк со своей стороны - вчера я писал, что в инпуте чекбокса заменил value='$moderation' на checkbox=''$moderation'', хотя хотел на checked=''$moderation'', вообще тогда не понимаю, что за значение 'on' передавалось в таблицу | |
|
|
|
|
|
|
|
для: indexer
(02.07.2015 в 12:01)
| | еще попробовал сделать следующее - сделать инпут скрытой кнопкой, у которого value='1', значение moderation так же не отправляется, убираю "AND id='$id' " и единица отправляется всем полям | |
|
|
|
|
|
|
|
для: indexer
(02.07.2015 в 12:01)
| | Задачу решил, нужно было перед запросом добавить строку $id = get_post('id'); а в форме <input type="hidden" name="id" value="$row[0]"> , до этого просто не передавалось значение ID, теперь все работает | |
|
|
|
|
|
|
|
для: hakkol
(03.07.2015 в 08:25)
| | ....
Еще есть такая штука называется session туда можно отправить id. | |
|
|
|