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

Форум MySQL

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

 

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

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

тема: Скрипт не удаляет данные из базы данных
 
 автор: OLi   (17.04.2010 в 14:29)   письмо автору
 
 

<script type="text/javascript">
function unCheck(X){
var d=document.forms
for(var i=0;i<d.length;i++){
for(var j=0;j<d[i].elements.length;j++){
if('checkbox'==d[i].elements[j].type)d[i].elements[j].checked=1==X?true:false
}
}
}
</script>
<table class="edit_tab">
<form action="#" method="post">

<?php
    $resleft
=mysql_query("select * from Platia",$link);
        if(
mysql_num_rows($resleft)>0){
while ((
$left mysql_fetch_array($resleft))>0){
$k=$k+1;


echo 
"
<tr>
        <td>
$k</td><td>"; echo "<img src=".
        
          
$string substr($left[img_mini], 8)."
        
        >"
;  echo"<td>
        
        
        
        </td>
        <td><input name='id[
$left[id]]' value='$left[id]' type=checkbox />
        
    
        
        </td>
      </tr>"
;


}}else {echo 
"O aan iao iiainoae  ";}
echo
"<input type=\"submit\" value=\"Удалить\" name=\"del\" onclick=\"return confirm ('Удалить?')\">
<input type=\"button\" value=\"Выделить все\" onClick=\"unCheck(1)\">
<input type=\"button\" value=\"Снять выделение\" onClick=\"unCheck(0)\">"
;
    
     
?>

     </form>
   

</table>
  

  
<?php 

if (isset($_POST['del'])){ $id=intval($_POST['id']);
echo 
$id;




$result mysql_query ("DELETE * FROM Platia  WHERE id='$id'");



if (
$result ) {echo "<p>Удалено!</p>";
//echo"<html><head><meta http-equiv='Refresh' content='0; URL=del_articles.php'></head></html>";
}
else {echo 
"<p>Ошибка!</p>";}
         
}
?>

  Ответить  
 
 автор: cheops   (17.04.2010 в 14:34)   письмо автору
 
   для: OLi   (17.04.2010 в 14:29)
 

А какая реакция скрипта на удаление? Почему обработчик формы находится после формы? Ведь данные сначала отобразятся, а лишь потом удаляться и на странице будут выведены не удаленные данные?

PS У нас нет таблицы и мы ситуацию не можем воспроизвести - нужно более подробно описать, что происходит при попытке удаления. В блок if (isset($_POST['del'])) скрипт заходит?

  Ответить  
 
 автор: OLi   (17.04.2010 в 14:41)   письмо автору
 
   для: cheops   (17.04.2010 в 14:34)
 

Скрипт заходит и пишет Удалено!

  Ответить  
 
 автор: OLi   (17.04.2010 в 14:43)   письмо автору
 
   для: OLi   (17.04.2010 в 14:41)
 

Обработчик написал перед формой

  Ответить  
 
 автор: tvv123456   (17.04.2010 в 17:33)   письмо автору
 
   для: OLi   (17.04.2010 в 14:43)
 

Вам не надоедает ставить все эти экранирующие слеши?

echo"<input type=\"submit\" value=\"Удалить\" name=\"del\" onclick=\"return confirm ('Удалить?')\"> 
<input type=\"button\" value=\"Выделить все\" onClick=\"unCheck(1)\"> 
<input type=\"button\" value=\"Снять выделение\" onClick=\"unCheck(0)\">"; 

Я как минимум 2 варианта знаю как здесь без \ можно обойтись

и еще разве нужна звездочка:

mysql_query ("DELETE FROM Platia  WHERE id='$id'"

Какой смысл она имеет в этом запросе?

  Ответить  
 
 автор: cheops   (18.04.2010 в 14:28)   письмо автору
 
   для: OLi   (17.04.2010 в 14:43)
 

Да, действительно, звездочка лишняя. Вообще, чтобы исключить такой класс ошибок нужно ВСЕГДА проверять правильность выполнения SQL-запроса, каким-бы простым он не был. PHP не извещает автоматически об ошибках на стороне MySQL и если их не запрашивать - искать их можно часами. Лучше всегда проверять правильность выполнения запроса - очень много времени экономиться в дальнейшем.

  Ответить  
 
 автор: OLi   (18.04.2010 в 15:35)   письмо автору
 
   для: cheops   (18.04.2010 в 14:28)
 

Убрал звездочку - но не помогло!

  Ответить  
 
 автор: cheops   (18.04.2010 в 15:42)   письмо автору
 
   для: OLi   (18.04.2010 в 15:35)
 

После запроса - поставьте обработчик ошибки - он что-нибудь выводит?
<?php
  $query 
"DELETE FROM Platia  WHERE id='$id'";
  
$result mysql_query ($query);
  if(!
$result)
  {
     echo 
$query."<br>";
     echo 
mysql_error();
     exit();
  }
?>

  Ответить  
 
 автор: OLi   (18.04.2010 в 16:20)   письмо автору
 
   для: cheops   (18.04.2010 в 15:42)
 

Ничего не выводит, у меня правда через include подключается обработчик

  Ответить  
 
 автор: OLi   (18.04.2010 в 18:34)   письмо автору
 
   для: OLi   (18.04.2010 в 16:20)
 

В чем трабл?

  Ответить  
 
 автор: cheops   (19.04.2010 в 13:10)   письмо автору
 
   для: OLi   (18.04.2010 в 18:34)
 

У вас срабатывает этот оператор?
<?php
  
echo "<p>Удалено!</p>";
?>

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

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