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

Форум MySQL

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

 

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

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

тема: Удаление записи из базы
 
 автор: juliya   (22.03.2006 в 11:12)   письмо автору
 
 

Доброе утро!
У меня есть файл notebook.php, который выводит записи из базы. Рядом с каждой записью есть ссылка [url]УДАЛИТЬ[/url]. Когда на нее нажимаешь, возникает окошко с подтверждением "Вы действительно хотите удалить запись?". Когда нижимаешь да, то появляется окошко с текстом "Ваша запись удалена" и кнопкой "ОК". После нажатия на "ОК", возвращаемся на notebook.php. Но с этой страницы запись удаляется только после обновления страницы. Вопрос в том, как сделать так, чтобы после нажатия "ОК" мы возврщались на ту же страницу и она сама перезагружалась?
Вот как у меня это сделано:

<? include "connect_db.php";
 
$id $_GET["id"];
function 
delete($id)
{
    
$sql="delete from vsm_notebook  where f_id = $id";
    
$result=mysql_query($sql);
}
$delete delete($id);

 while (
$row mysql_fetch_array($result))
 {
    
$id $row["f_id"];
    
$surname $row["f_surname"];
       
$date_time=$row["f_date_time"];
?>
<script LANGUAGE="javascript">
function voidShowWindow(id){
objSmallWin=window.open("more_detail.php?id="+id,"objSmallWin","toolbar=0, directories=0, status=0, scrollbars=0, resizable=0, menubar=0, width=400, height=350");
}
function startdel(id) 

   if (confirm("Delete record?") ) 
 { 
   parent.location='notebook.php?id='+id; 
   alert("Delete");
 } 

</script>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
    <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
    <tr bgcolor="#F8F8F8">
        <td width="35%" height="20"><b><? print $surname;print "&nbsp;";print $name?></b></td>
        <td width="25%" height="20">
        <a class=link href="Javascript:voidShowWindow(<?php echo $id?>);" ><strong><em>detail>></em></strong></a>
        </td>
        <td width="25%" height="20">
        <a class=link href="Javascript:startdel(<? echo $row[0]; ?> );" ><strong><em>delete</em></strong></a>
        </td>
      </tr>
</table>

   
 
 автор: elenaki   (22.03.2006 в 11:29)   письмо автору
 
   для: juliya   (22.03.2006 в 11:12)
 

BMECTO parent.location='notebook.php?id='+id; -> parent.reload='notebook.php?id='+id;

   
 
 автор: juliya   (22.03.2006 в 12:02)   письмо автору
 
   для: elenaki   (22.03.2006 в 11:29)
 

Попробовала, не получается. Теперь и запись из базы не удаляется. Как еще можно?

   
 
 автор: elenaki   (22.03.2006 в 12:03)   письмо автору
 
   для: juliya   (22.03.2006 в 12:02)
 

sorry - parent.replace='notebook.php?id='+id;

   
 
 автор: juliya   (22.03.2006 в 12:08)   письмо автору
 
   для: elenaki   (22.03.2006 в 12:03)
 

Все равно не удаляется даже из базы.

   
 
 автор: Trianon   (22.03.2006 в 12:09)   письмо автору
 
   для: juliya   (22.03.2006 в 12:02)
 

Покажите, пожалуйста тот скрипт, который рисует первоначальную таблицу со ссылками для удаления. Только полностью.

   
 
 автор: juliya   (22.03.2006 в 12:19)   письмо автору
 
   для: Trianon   (22.03.2006 в 12:09)
 

Так это он и есть. У меня все в одном файле. Я пробовала разделить, но тогда переходит не на ту страницу. Может подскажете как разделить?

   
 
 автор: Trianon   (22.03.2006 в 12:20)   письмо автору
 
   для: juliya   (22.03.2006 в 12:19)
 

Тогда значит он приведен неполностью. У меня, при попытке его запустить, выдается сообщение "Неожиданно достигнут конец файла."

   
 
 автор: juliya   (22.03.2006 в 12:27)   письмо автору
 
   для: Trianon   (22.03.2006 в 12:20)
 

<html>
<head>
    <title>&#199;&#224;&#239;&#232;&#241;&#237;&#224;&#255; &#234;&#237;&#232;&#230;&#234;&#224;</title>
<!--&#209;&#241;&#251;&#235;&#234;&#224; &#237;&#224; &#244;&#224;&#233;&#235; notebook.css, &#241;&#238;&#228;&#229;&#240;&#230;&#224;&#249;&#232;&#233; &#239;&#240;&#232;&#236;&#229;&#237;&#255;&#229;&#236;&#251;&#229; &#241;&#242;&#232;&#235;&#232; -->
<link href="notebook.css" rel=StyleSheet type="text/css">
</head>
<body background="http://it2:8080/MyExamples/notebook/fon.JPG">
    <span class=title1><B>&#199;&#224;&#239;&#232;&#241;&#237;&#224;&#255; &#234;&#237;&#232;&#230;&#234;&#224;</B></span>
    <hr color="#000080">
 <?php
  
include "connect_db.php";
function 
page()
{
    if(empty(
$_GET["page"])){
        
$page 1;
    } else {
if(!
is_numeric($_GET["page"])) die ("&#205;&#229;&#239;&#240;&#224;&#226;&#232;&#235;&#252;&#237;&#251;&#233; &#244;&#238;&#240;&#236;&#224;&#242; &#237;&#238;&#236;&#229;&#240;&#224; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#251;!");
        
$page $_GET["page"];
    }
    return 
$page;
}
function 
sql_query ($onpage$page$table)
{
    
$begin $page*$onpage $onpage// &#238;&#242;&#234;&#243;&#228;&#224; &#237;&#224;&#247;&#232;&#237;&#224;&#242;&#252;
    
$sql "SELECT * FROM ".$table." ORDER BY f_surname LIMIT ".$begin.", ".$onpage;
    
$result mysql_query($sql) or die (mysql_error());
    return 
$result;
}
//&#212;&#243;&#237;&#234;&#246;&#232;&#255; &#237;&#224;&#226;&#232;&#227;&#224;&#246;&#232;&#232;
function navigation ($onpage$page$table)
{
    
$return null;
    
$count mysql_query("SELECT COUNT(*) FROM vsm_notebook") or die (mysql_error());
    
$count mysql_fetch_array($count);// &#241;&#242;&#240;&#238;&#234;&#224; &#240;&#229;&#231;&#243;&#235;&#252;&#242;&#224;&#242;&#224;
    
$count $count[0];// &#234;&#238;&#235;-&#226;&#238; &#241;&#242;&#240;&#238;&#234; &#226; &#225;&#224;&#231;&#229;
               
$pages ceil($count/$onpage);
    if(
$page!==0){
        
$prev "<A class=link HREF=\"?page=".($page-1)."\">&lt;</A>";
    } else {
        
$prev "<";
    }
    if(
$page round($pages-1)){
        
$next "<A class=link HREF=\"?page=".($page+1)."\">&gt;</A>";
    } else {
        
$next ">";
    }
    for(
$i=0$i $pages$i++)
    {
        if(
$i==$page){
            
$return.=($i+1);
        } else {
            
$return.=" <A class=link href=".getenv('PHP_SELF')."?page=".$i.">".($i+1)."</A> ";//--&#212;&#238;&#240;&#236;&#232;&#240;&#243;&#229;&#236; &#241;&#241;&#251;&#235;&#234;&#232;
        
}
    }
    return 
$prev.$return.$next;
}
$onpage 3// &#231;&#224;&#239;&#232;&#241;&#229;&#233; &#237;&#224; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#243;
$table "vsm_notebook"// &#232;&#231; &#234;&#224;&#234;&#238;&#233; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
$page page(); // &#238;&#239;&#240;&#229;&#228;&#229;&#235;&#255;&#229;&#236; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#243;
$result sql_query($onpage$page$table); // sql - &#231;&#224;&#239;&#240;&#238;&#241;
$navigation navigation($onpage$page$table); // &#238;&#239;&#240;&#229;&#228;&#229;&#235;&#232;&#236; &#237;&#224;&#226;&#232;&#227;&#224;&#246;&#232;&#254;
    
$count mysql_query("SELECT COUNT(*) FROM vsm_notebook") or die (mysql_error());
    
$count mysql_fetch_array($count);// &#241;&#242;&#240;&#238;&#234;&#224; &#240;&#229;&#231;&#243;&#235;&#252;&#242;&#224;&#242;&#224;
    
$count $count[0];// &#234;&#238;&#235;-&#226;&#238; &#241;&#242;&#240;&#238;&#234; &#226; &#225;&#224;&#231;&#229;
    
$onpage 3//$p_n_msg; //&#209;&#234;&#238;&#235;&#252;&#234;&#238; &#231;&#224;&#239;&#232;&#241;&#229;&#233; &#226;&#251;&#226;&#238;&#228;&#232;&#242;&#252; &#237;&#224; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#243;
    
$page_link 2// &#215;&#232;&#241;&#235;&#238; &#241;&#241;&#251;&#235;&#238;&#234; &#226;&#238;&#234;&#240;&#243;&#227; &#226;&#251;&#225;&#240;&#224;&#237;&#237;&#238;&#233; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#251;

  
if(empty($_GET["page"])){
        
$page 1;
    } else {
if(!
is_numeric($_GET["page"])) die ("&#205;&#229;&#239;&#240;&#224;&#226;&#232;&#235;&#252;&#237;&#251;&#233; &#244;&#238;&#240;&#236;&#224;&#242; &#237;&#238;&#236;&#229;&#240;&#224; &#241;&#242;&#240;&#224;&#237;&#232;&#246;&#251;!");
        
$page $_GET["page"];
     }
echo 
"<table border=0 width='100%'><tr><td><class=print><strong>&#194;&#241;&#229;&#227;&#238; &#231;&#224;&#239;&#232;&#241;&#229;&#233; - $count</strong></td></tr>";
    
       
$pages ceil($count/$onpage);
       echo 
"<tr><td><class=print><strong>&#202;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#241;&#242;&#240;&#224;&#237;&#232;&#246; - ".$pages."</strong></td></tr>";
       echo 
"<tr><td><class=print><strong>&#209;&#242;&#240;&#224;&#237;&#232;&#246;&#251;: </strong>";

  
$first $count - ($onpage    * ($page 1));
  
$second $count - ($onpage $page) + 1;
  if (
$second 1)
  {
    
$second 1;
  }
  
$number = (int) (($count $onpage) / $onpage    ); 
  
$line "";
  
// &#207;&#240;&#238;&#226;&#229;&#240;&#255;&#229;&#236; &#229;&#241;&#242;&#252; &#235;&#232; &#241;&#241;&#251;&#235;&#234;&#232; &#241;&#235;&#229;&#226;&#224;
  
if($page $page_link 1)
  {
    
$line .= "<a href=".getenv('PHP_SELF')."?page=1>[1]</a>&nbsp;&nbsp;...&nbsp;&nbsp;";
    
// &#197;&#241;&#242;&#252;
    
for($i $page $page_link$i $page$i++)
    {
      
$line .= "&nbsp;<a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a>&nbsp;";
    }
  }
  else
  {
    
// &#205;&#229;&#242;
    
for($i 1$i $page$i++)
    {
      
$line .= "&nbsp;<a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a>&nbsp;";
    }
  }
  
// &#207;&#240;&#238;&#226;&#229;&#240;&#255;&#229;&#236; &#229;&#241;&#242;&#252; &#235;&#232; &#241;&#241;&#251;&#235;&#234;&#232; &#241;&#239;&#240;&#224;&#226;&#224;
  
if($page $page_link $number)
  {
    
// &#197;&#241;&#242;&#252;
    
for($i $page$i<=$page $page_link$i++)
    {
      if(
$page == $i)
        
$line .= "&nbsp;[".$i."]&nbsp;";
      else
        
$line .= "&nbsp;<a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a>&nbsp;";
    }
    
$line .= "&nbsp;...&nbsp;&nbsp;<a href=".getenv('PHP_SELF')."?page=".$number.">[".$number."]</a>&nbsp;";
  }
  else
  {
    
// &#205;&#229;&#242;
    
for($i $page$i<=$number$i++)
    {
        if(
$page == $i)
          
$line .= "&nbsp;[".$i."]&nbsp;";
        else
          
$line .= "&nbsp;<a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a>&nbsp;";
    }
  }
  echo 
$line;
  echo 
"</td></tr></table>";

$id $_GET["id"];
function 
delete($id)
{
    
$sql="delete from vsm_notebook  where f_id = $id";
    
$result=mysql_query($sql);
}
$delete delete($id);

  while (
$row mysql_fetch_array($result))
 {
    
// &#194;&#251;&#242;&#224;&#241;&#234;&#232;&#226;&#224;&#229;&#236; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#229; &#232;&#231; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245;
    
$id $row["f_id"];
    
$surname $row["f_surname"];
    
$name $row["f_name"];
    
$patronymic $row["f_patronymic"];
    
$country $row["f_country"];
    
$city $row["f_city"];
    
$zip $row["f_zip"];
    
$street $row["f_street"];
    
$house $row["f_house"];
    
$flat $row["f_flat"];
    
$home_tel $row["f_home_tel"];
    
$working_tel $row["f_working_tel"];
    
$mobile_tel $row["f_mobile_tel"];
    
$email $row["f_email"];
    
$additional_info $row["f_additional_info"];
    
$date_time=$row["f_date_time"];
?>
<script LANGUAGE="javascript">
function voidShowWindow(id){
objSmallWin=window.open("more_detail.php?id="+id,"objSmallWin","toolbar=0, directories=0, status=0, scrollbars=0, resizable=0, menubar=0, width=400, height=350");
}
function startdel(id) 

   if (confirm("&#194;&#251; &#243;&#226;&#229;&#240;&#229;&#237;&#251; &#247;&#242;&#238; &#245;&#238;&#242;&#232;&#242;&#229; &#226;&#238;&#238;&#225;&#249;&#229; &#243;&#228;&#224;&#235;&#232;&#242;&#252; &#253;&#242;&#243; &#231;&#224;&#239;&#232;&#241;&#252; &#232;&#231; &#225;&#224;&#231;&#251;?") ) 
 { 
   parent.location="notebook_form.php?id="+id; 
   alert("&#199;&#224;&#239;&#232;&#241;&#252; &#243;&#228;&#224;&#235;&#229;&#237;&#224;");
 } 


</script>

<table border="0" width="100%" cellpadding="0" cellspacing="0">
    <tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
    <tr bgcolor="#F8F8F8">
        <td width="35%" height="20"><b><? print $surname;print "&nbsp;";print $name?></b></td>
        <td width="25%" height="20">
        <a class=link href="Javascript:voidShowWindow(<?php echo $id?>);" title="&#207;&#238;&#241;&#236;&#238;&#242;&#240;&#229;&#242;&#252; &#231;&#224;&#239;&#232;&#241;&#252; &#239;&#238;&#228;&#240;&#238;&#225;&#237;&#229;&#229;"><strong><em>&#207;&#238;&#228;&#240;&#238;&#225;&#237;&#229;&#229;>></em></strong></a>
        </td>
        <td width="25%" height="20">
        <a class=link href="Javascript:startdel(<? echo $row[0]; ?> );" title="&#211;&#228;&#224;&#235;&#232;&#242;&#252; &#231;&#224;&#239;&#232;&#241;&#252;"><strong><em>&#211;&#228;&#224;&#235;&#232;&#242;&#252; &#231;&#224;&#239;&#232;&#241;&#252;</em></strong></a>
        </td>
        <td width="15%" valign="bottom" align="right"><p class="date">&#238;&#242;: <b>
        <? print $row["f_date_time"]; ?></b></nobr></td>
    </tr>
    <tr>
        <td width="35%" height="25"><nobr><p class="print">
        <? print "e-mail: <a class=link href=mailto:$email>".$email."</a>"?></nobr></td>
        <td width="25%" height="25">&nbsp;</td>
        <td width="25%" height="25">&nbsp;</td>
        <td width="15%" height="25">&nbsp;</td>
    </tr>
    <tr>
        <td width="35%" height="25"><nobr><p class="print">
        <? print "&#196;&#238;&#236;&#224;&#248;&#237;&#232;&#233; &#242;&#229;&#235;&#229;&#244;&#238;&#237;: ".$home_tel."</a>"?></nobr></td>
        <td width="25%" height="25">&nbsp;</td>
        <td width="25%" height="25">&nbsp;</td>
        <td width="15%" height="25">&nbsp;</td>
    </tr>
    
</table>

<?php
}
?>
</body>
</html>

   
 
 автор: Trianon   (22.03.2006 в 12:53)   письмо автору
 
   для: juliya   (22.03.2006 в 12:19)
 

Первое. Сделать обращение для удаления к другому файлу.

function startdel(id) 

   if (confirm("Delete record?") ) 
         parent.location='delrecord.php?id='+id; 


Второе. Написать другой файл. delrecord.php
<? include "connect_db.php"
   
$id intval($_GET["id"]); 
    
$sql="delete from vsm_notebook  where f_id = $id"
    
$result=mysql_query($sql); 
     
header("Location: http://{$_SERVER['HTTP_HOST']}/notebook.php?reload=1");
?>

Возможно, путь к файлу notebook придется подправить.
Параметр reload=1 - фиктивный, приделан просто для того, чтобы запретить брать страницу из кеша.

   
 
 автор: juliya   (22.03.2006 в 13:05)   письмо автору
 
   для: Trianon   (22.03.2006 в 12:53)
 

Опять ругается на заголовок
Warning: Cannot modify header information - headers already sent by (output started at D:\SERVER\MyExamples\notebook\startdel.php:7) in D:\SERVER\MyExamples\notebook\startdel.php on line 23

   
 
 автор: Trianon   (22.03.2006 в 13:07)   письмо автору
 
   для: juliya   (22.03.2006 в 13:05)
 

там не должно быть 23 строки. Там должно быть только те 6 строк, которые я написал. Никаких <html><head>

   
 
 автор: juliya   (22.03.2006 в 13:14)   письмо автору
 
   для: Trianon   (22.03.2006 в 13:07)
 

Теперь почему пишет "невозможно найти страницу"

   
 
 автор: Trianon   (22.03.2006 в 13:17)   письмо автору
 
   для: juliya   (22.03.2006 в 13:14)
 

Я же написал: Возможно, путь к файлу notebook придется подправить. Сравните адрес, к которому шло обращение при начальном запуске, и адрес, по которому идет обращение после удаления.

   
 
 автор: juliya   (22.03.2006 в 13:24)   письмо автору
 
   для: Trianon   (22.03.2006 в 13:17)
 

Спасибочки! Все заработало!
Теперь вылезло вот такое : еслия не прикрепляю картинку, то мне опять выдает

Warning: fread(): supplied argument is not a valid stream resource in D:\SERVER\MyExamples\notebook_old\notebook_handler1.php on line 287

Warning: fclose(): supplied argument is not a valid stream resource in D:\SERVER\MyExamples\notebook_old\notebook_handler1.php on line 292

Array
(
    [photo] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

)

Для проверки почему не читается файл было добавлено

echo '<pre>'; 
print_r($_FILES); 

А если прикрепляю, то все нормально.

   
 
 автор: Trianon   (22.03.2006 в 13:29)   письмо автору
 
   для: juliya   (22.03.2006 в 13:24)
 

Так Вы ж вроде файл с картинкой читаете?
А какой файл вы собираетесь читать, если не прикрепляеете картинку? :)))

   
 
 автор: juliya   (22.03.2006 в 13:34)   письмо автору
 
   для: Trianon   (22.03.2006 в 13:29)
 

Так можно сделать так,чтобы, если не прикрепляется,то и не читается?

   
 
 автор: Trianon   (22.03.2006 в 13:39)   письмо автору
 
   для: juliya   (22.03.2006 в 13:34)
 

Можно, конечно. Например:

if(isset($_FILES['photo']) && !empty($_FILES['photo']['tmp_name']))
{
       $f = fopen($_FILES['photo']['tmp_name'], ''rb'); 
      // etc...
}

   
 
 автор: juliya   (22.03.2006 в 13:44)   письмо автору
 
   для: Trianon   (22.03.2006 в 13:39)
 

Урааааааа!!!!!! Все работает! Спасибо Вам огромное!
Еще такой вопрос. У меня все записи выводятся по 3 штуки на странице. И когда запись удаляется не с первой страницы, то при обновлении этой страницы мы попадаем всегда на первую. Можно ли сделать так, чтобы попадать на ту же страницу, с которой была удалена запись?
Может в эту строчку в конец чего-нибудь дописать надо другое
header("Location: http://it2:8080/MyExamples/notebook.php?reload=1"); ?

   
 
 автор: Trianon   (22.03.2006 в 13:58)   письмо автору
 
   для: juliya   (22.03.2006 в 13:44)
 

Допишите вместо reload=1 указание номера страницы :) Сразу два зайца полягут :)

   
 
 автор: juliya   (22.03.2006 в 14:04)   письмо автору
 
   для: Trianon   (22.03.2006 в 13:58)
 

У меня страницы называются $page. Но когда дописываю в конец, ругается. Подскажите, как правильно записать?

   
 
 автор: Trianon   (22.03.2006 в 14:15)   письмо автору
 
   для: juliya   (22.03.2006 в 14:04)
 

Горе луковое... Я ж не помню, где у Вас что лежит!
Раз.
function startdel(id, page) 

   if (confirm("Delete record?") ) 
         parent.location='startdel.php?id='+id+'&page='+page; 
}

Два.
...href="Javascript:startdel(<? echo $row[0].','.$page?> );" title=....

Три.

<? include "connect_db.php"
   
$id intval($_GET["id"]); 
   
$page intval($_GET["page"]); 
    
$sql="delete from vsm_notebook  where f_id = $id"
    
$result=mysql_query($sql); 
     
header("Location: http://{$_SERVER['HTTP_HOST']}/путь_к_нотебук/notebook.php?page=$page"); 
?> 

   
 
 автор: juliya   (22.03.2006 в 14:32)   письмо автору
 
   для: Trianon   (22.03.2006 в 14:15)
 

Спасибо, уважаемый Trianon!!!! Все получилось! Ура!!!!

   
Rambler's Top100
вверх

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