Не удалят запись из базы данных

Uglik

Старатель
Регистрация
8 Окт 2008
Сообщения
350
Реакции
14
Подскажите в чем пробелама...
есть форма :
HTML:
<form action="edit.php"  method="post">
<strong>Название: </strong>: <br /><input type="text" name="title" size="100%" value="<?=$article[title]?>"><br />
<strong>Текст: </strong>: <br /><textarea name="article" cols="100%" rows="20" ><?=$article[article]?></textarea><br />
<input type="hidden" name="id" value="<?=$article[id]?>"><br />
 <input type="submit" name="edit" value="Редактировать"><input type="submit" name="delete" value="Удалить">
</form>
из формы данные передаються в котралер :
PHP:
// редактирум статью
if($_POST[edit]) {
	$id = $_POST[id];
	$title = $_POST[title];
	$article = $_POST[article];
	$edit = article_edit($id, $title, $article);
	if ($edit = TRUE) {
		Header('Location:editor.php');
	}
}
// удоляем статью
if($_POST[delete]) {
	$id = $POST[id];
	$delete = article_delete($id);
	if($delete == TRUE) {
		#Header('Location:editor.php');
	}
}
include('theme/edit.php');
при нажатии на кнопек редактировать данные успешно редактируються... при нажатии на кнопку удалить нет! Вот функция article_delete
PHP:
function article_delete($id) {
	// подгатовка
	$id = intval($id);
	if($id < 1)
		return false;
	// sql запрос на удаление статьи 
	$sql = "DELETE FROM articles WHERE id = '%d'";
	$query = sprintf($sql, $id);
	$result = mysql_query($query);
	if(!$result)
		die(mysql_error());
	return true;
	mysql_close();
}
В чем касяк не могу понять... sql запрос вроде правильно составил
 
по ходу должно быть так:
$sql = "DELETE FROM articles WHERE `id` = ' ".$id." ' ";
 
MONtrade dino - в пхп коде всё верно, это функция sprintf для подстановки переменных в строку по формату.

Выведите информацию о пост запросе print_r($_POST); + проверьте условия выполняются?
+
PHP:
   if ($edit = TRUE) {
если в коде тоже один знак = то это ошибка.
 
А само mysql подключение где-нибудь инициализируется? Какая ошибка вылазиет?
Закрытие подключения вижу: mysql_close();
А где mysql_connect() ?
 
А само mysql подключение где-нибудь инициализируется? Какая ошибка вылазиет?
Закрытие подключения вижу: mysql_close();
А где mysql_connect() ?

вот весь код котролера... поключение есть, если бы не было, то и редактирование не работало бы

PHP:
// Подключаемся к базе данным
require_once('config.php');
// подключаем функции
require_once('function.php');

// если передан id просто выводим в форме редактируемую статью

if(!$_POST) {

$id = $_GET[id] or die("Не был передат id стати");
$article = full_article($id);
}


// редактирум статью

if($_POST[edit]) {
	$id = $_POST[id];
	$title = $_POST[title];
	$article = $_POST[article];
	
	$edit = article_edit($id, $title, $article);
	if ($edit = TRUE) {
		Header('Location:editor.php');
	}

}


// удоляем статью
if($_POST[delete]) {
	$id = $POST[id];
	
	$delete = article_delete($id);
	if($delete == TRUE) {
		#Header('Location:editor.php');
	}
}

include('theme/edit.php');
 
А не удаляет инфу только после редактирования или постоянно?
 
А не удаляет инфу только после редактирования или постоянно?
Да вообще не удоляет... вообще не могу понять в чем дело... капирую sql запрос и напрямую вбиваю через phpmyadmin все ОК. через функцию не хочет.
 
Попробуй посмотреть передается ли ид в функцию:
PHP:
function article_delete($id) { 
    // подгатовка 
    $id = intval($id); 

echo "id=".$id;  

    if($id < 1) 
        return false; 
    // sql запрос на удаление статьи  
    $sql = "DELETE FROM articles WHERE id = '%d'"; 
    $query = sprintf($sql, $id); 
    $result = mysql_query($query); 
    if(!$result) 
        die(mysql_error()); 
    return true; 
    mysql_close(); 
}
 
это делается поэтапном деббагом- после каждого сомнительного условия выводим инфомацию,

PHP:
echo "<pre>";
print_r($_POST);
if($_POST[delete]) { 

echo "delete run\n";
    $id = $POST[id]; 
    $delete = article_delete($id); 
    if($delete == TRUE) { 
        #Header('Location:editor.php'); 
    } 
}



function article_delete($id) { 
    // подгатовка 
echo "delete $id";
    $id = intval($id); 
    if($id < 1) {

echo "NOT delete $id < 1";
        return false; 
}

    // sql запрос на удаление статьи  
 $sql = "DELETE FROM articles WHERE id = '%d'"; 
   echo    $query = sprintf($sql, $id); 
    $result = mysql_query($query); 
echo "delete OK!";
    if(!$result) 
        die(mysql_error()); 
    return true; 
    mysql_close(); 
}
Всё - смотрим где прервётся и почему. Возможно ИД как то не так отсылается (и в форму не так пишется), возможно delete в пост запросе отсутствует.
есть вероятность что sql запрос выполняется но таблица другая.
 
Назад
Сверху