|
|
|
| Доброе утро!
У меня есть файл 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> </td><td> </td><td> </td><td> </td></tr>
<tr bgcolor="#F8F8F8">
<td width="35%" height="20"><b><? print $surname;print " ";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>
|
| |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 11:12)
| | BMECTO parent.location='notebook.php?id='+id; -> parent.reload='notebook.php?id='+id; | |
|
|
|
|
|
|
|
для: elenaki
(22.03.2006 в 11:29)
| | Попробовала, не получается. Теперь и запись из базы не удаляется. Как еще можно? | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 12:02)
| | sorry - parent.replace='notebook.php?id='+id; | |
|
|
|
|
|
|
|
для: elenaki
(22.03.2006 в 12:03)
| | Все равно не удаляется даже из базы. | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 12:02)
| | Покажите, пожалуйста тот скрипт, который рисует первоначальную таблицу со ссылками для удаления. Только полностью. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 12:09)
| | Так это он и есть. У меня все в одном файле. Я пробовала разделить, но тогда переходит не на ту страницу. Может подскажете как разделить? | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 12:19)
| | Тогда значит он приведен неполностью. У меня, при попытке его запустить, выдается сообщение "Неожиданно достигнут конец файла." | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 12:20)
| |
<html>
<head>
<title>Çàïèñíàÿ êíèæêà</title>
<!--Ññûëêà íà ôàéë notebook.css, ñîäåðæàùèé ïðèìåíÿåìûå ñòèëè -->
<link href="notebook.css" rel=StyleSheet type="text/css">
</head>
<body background="http://it2:8080/MyExamples/notebook/fon.JPG">
<span class=title1><B>Çàïèñíàÿ êíèæêà</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 ("Íåïðàâèëüíûé ôîðìàò íîìåðà ñòðàíèöû!");
$page = $_GET["page"];
}
return $page;
}
function sql_query ($onpage, $page, $table)
{
$begin = $page*$onpage - $onpage; // îòêóäà íà÷èíàòü
$sql = "SELECT * FROM ".$table." ORDER BY f_surname LIMIT ".$begin.", ".$onpage;
$result = mysql_query($sql) or die (mysql_error());
return $result;
}
//Ôóíêöèÿ íàâèãàöèè
function navigation ($onpage, $page, $table)
{
$return = null;
$count = mysql_query("SELECT COUNT(*) FROM vsm_notebook") or die (mysql_error());
$count = mysql_fetch_array($count);// ñòðîêà ðåçóëüòàòà
$count = $count[0];// êîë-âî ñòðîê â áàçå
$pages = ceil($count/$onpage);
if($page!==0){
$prev = "<A class=link HREF=\"?page=".($page-1)."\"><</A>";
} else {
$prev = "<";
}
if($page < round($pages-1)){
$next = "<A class=link HREF=\"?page=".($page+1)."\">></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> ";//--Ôîðìèðóåì ññûëêè
}
}
return $prev.$return.$next;
}
$onpage = 3; // çàïèñåé íà ñòðàíèöó
$table = "vsm_notebook"; // èç êàêîé òàáëèöû
$page = page(); // îïðåäåëÿåì ñòðàíèöó
$result = sql_query($onpage, $page, $table); // sql - çàïðîñ
$navigation = navigation($onpage, $page, $table); // îïðåäåëèì íàâèãàöèþ
$count = mysql_query("SELECT COUNT(*) FROM vsm_notebook") or die (mysql_error());
$count = mysql_fetch_array($count);// ñòðîêà ðåçóëüòàòà
$count = $count[0];// êîë-âî ñòðîê â áàçå
$onpage = 3; //$p_n_msg; //Ñêîëüêî çàïèñåé âûâîäèòü íà ñòðàíèöó
$page_link = 2; // ×èñëî ññûëîê âîêðóã âûáðàííîé ñòðàíèöû
if(empty($_GET["page"])){
$page = 1;
} else {
if(!is_numeric($_GET["page"])) die ("Íåïðàâèëüíûé ôîðìàò íîìåðà ñòðàíèöû!");
$page = $_GET["page"];
}
echo "<table border=0 width='100%'><tr><td><class=print><strong>Âñåãî çàïèñåé - $count</strong></td></tr>";
$pages = ceil($count/$onpage);
echo "<tr><td><class=print><strong>Êîëè÷åñòâî ñòðàíèö - ".$pages."</strong></td></tr>";
echo "<tr><td><class=print><strong>Ñòðàíèöû: </strong>";
$first = $count - ($onpage * ($page - 1));
$second = $count - ($onpage * $page) + 1;
if ($second < 1)
{
$second = 1;
}
$number = (int) (($count + $onpage) / $onpage );
$line = "";
// Ïðîâåðÿåì åñòü ëè ññûëêè ñëåâà
if($page - $page_link > 1)
{
$line .= "<a href=".getenv('PHP_SELF')."?page=1>[1]</a> ... ";
// Åñòü
for($i = $page - $page_link; $i < $page; $i++)
{
$line .= " <a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a> ";
}
}
else
{
// Íåò
for($i = 1; $i < $page; $i++)
{
$line .= " <a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a> ";
}
}
// Ïðîâåðÿåì åñòü ëè ññûëêè ñïðàâà
if($page + $page_link < $number)
{
// Åñòü
for($i = $page; $i<=$page + $page_link; $i++)
{
if($page == $i)
$line .= " [".$i."] ";
else
$line .= " <a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a> ";
}
$line .= " ... <a href=".getenv('PHP_SELF')."?page=".$number.">[".$number."]</a> ";
}
else
{
// Íåò
for($i = $page; $i<=$number; $i++)
{
if($page == $i)
$line .= " [".$i."] ";
else
$line .= " <a href=".getenv('PHP_SELF')."?page=".$i.">[".$i."]</a> ";
}
}
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))
{
// Âûòàñêèâàåì ïåðåìåííûå èç áàçû äàííûõ
$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("Âû óâåðåíû ÷òî õîòèòå âîîáùå óäàëèòü ýòó çàïèñü èç áàçû?") )
{
parent.location="notebook_form.php?id="+id;
alert("Çàïèñü óäàëåíà");
}
}
</script>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr><td> </td><td> </td><td> </td><td> </td></tr>
<tr bgcolor="#F8F8F8">
<td width="35%" height="20"><b><? print $surname;print " ";print $name?></b></td>
<td width="25%" height="20">
<a class=link href="Javascript:voidShowWindow(<?php echo $id; ?>);" title="Ïîñìîòðåòü çàïèñü ïîäðîáíåå"><strong><em>Ïîäðîáíåå>></em></strong></a>
</td>
<td width="25%" height="20">
<a class=link href="Javascript:startdel(<? echo $row[0]; ?> );" title="Óäàëèòü çàïèñü"><strong><em>Óäàëèòü çàïèñü</em></strong></a>
</td>
<td width="15%" valign="bottom" align="right"><p class="date">îò: <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"> </td>
<td width="25%" height="25"> </td>
<td width="15%" height="25"> </td>
</tr>
<tr>
<td width="35%" height="25"><nobr><p class="print">
<? print "Äîìàøíèé òåëåôîí: ".$home_tel."</a>"; ?></nobr></td>
<td width="25%" height="25"> </td>
<td width="25%" height="25"> </td>
<td width="15%" height="25"> </td>
</tr>
</table>
<?php
}
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: 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 - фиктивный, приделан просто для того, чтобы запретить брать страницу из кеша. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 13:05)
| | там не должно быть 23 строки. Там должно быть только те 6 строк, которые я написал. Никаких <html><head> | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 13:07)
| | Теперь почему пишет "невозможно найти страницу" | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 13:14)
| | Я же написал: Возможно, путь к файлу notebook придется подправить. Сравните адрес, к которому шло обращение при начальном запуске, и адрес, по которому идет обращение после удаления. | |
|
|
|
|
|
|
|
для: 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);
|
А если прикрепляю, то все нормально. | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 13:24)
| | Так Вы ж вроде файл с картинкой читаете?
А какой файл вы собираетесь читать, если не прикрепляеете картинку? :))) | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 13:29)
| | Так можно сделать так,чтобы, если не прикрепляется,то и не читается? | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 13:34)
| | Можно, конечно. Например:
if(isset($_FILES['photo']) && !empty($_FILES['photo']['tmp_name']))
{
$f = fopen($_FILES['photo']['tmp_name'], ''rb');
// etc...
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 13:39)
| | Урааааааа!!!!!! Все работает! Спасибо Вам огромное!
Еще такой вопрос. У меня все записи выводятся по 3 штуки на странице. И когда запись удаляется не с первой страницы, то при обновлении этой страницы мы попадаем всегда на первую. Можно ли сделать так, чтобы попадать на ту же страницу, с которой была удалена запись?
Может в эту строчку в конец чего-нибудь дописать надо другое
header("Location: http://it2:8080/MyExamples/notebook.php?reload=1"); ? | |
|
|
|
|
|
|
|
для: juliya
(22.03.2006 в 13:44)
| | Допишите вместо reload=1 указание номера страницы :) Сразу два зайца полягут :) | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 13:58)
| | У меня страницы называются $page. Но когда дописываю в конец, ругается. Подскажите, как правильно записать? | |
|
|
|
|
|
|
|
для: 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");
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.03.2006 в 14:15)
| | Спасибо, уважаемый Trianon!!!! Все получилось! Ура!!!! | |
|
|
|