выполнить функцию и открыть в том же месте

visionp

Новичок
Имеется табличка в каждой строке которой есть кнопка для удаления этой записи с БД, после удаления страничка перезагружается и естественно отображается с первой строки, как сделать так чтобы если удаляем, например, 100-ю строку, после выполнения функции страница отображалась с того места где нажали кнопку?..

function delete_item()
{
global $c;
$f = OCIParse($c, "delete from senior WHERE fio=:bind1 AND senior LIKE :bind2");
OCIBindByName($f, ":bind1", $_REQUEST['fio']);
OCIBindByName($f, ":bind2", $_REQUEST['senior']);
OCIExecute($f);
OCICommit($c);
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}
 
Последнее редактирование:

vasinsky

Новичок
а $c аргументом передать в функцию не получается?

а вы как строки выводите? с пагинацией?

если да - то можно сохранять страницу при редиректе
если нет - то указывайте якорь в строке (<a name="43">...</a>) и при редиректе указывайте в url #number - вас прокрутит после редиректа

только якорь не той строки что удалили (её же не будет уже), а ближайший

ну а можете
+ node.js + куча всего -чтоб не скучно было. (сарказм)
 

visionp

Новичок
Да вот в том то и дело что сам изначально и думал сделать я якорем, но почему-то не срабатывает якорь(((
Вот функция которая строит таблицу:

function show_list() {
global $c;

$t = OCIParse($c, "select distinct fio from senior order by fio");
oci_define_by_name($t, 'FIO', $fio1);
oci_execute($t);
while (oci_fetch($t)) {$mass[] = $fio1;}

$s = OCIParse($c, "select fio, senior from senior order by senior, fio");
oci_define_by_name($s, 'FIO', $fio);
oci_define_by_name($s, 'SENIOR', $senior);
echo '<table align="left"><thead><tr><td>Руководитель</td><td>Сотрудник</td><td colspan="4">Действия</td></tr></thead><tbody>';
oci_execute($s);
while (oci_fetch($s)) {
echo '<tr >';
echo '<form name="editform'.$i.'" action="'.$_SERVER['PHP_SELF'].'?action=update&fio='.$fio.'" method="POST">';
echo '<td><input name="title" type="text" size="25" maxlength="50" value="'.$senior.'" /></td>';
echo '<td><select name="description" size="1"><option selected="selected" value="'.$fio.'">'.$fio.'</option>';
foreach ($mass as &$value)
{echo '<option value="'.$value.'">'.$value.'</option>';}
echo '</select></td>';
echo '<a name="'.$i.'"></a>';
echo '<td><input type="submit" value="Сохранить" id="button"></td></form>';
echo '<td id="act" onClick="window.open(\''.$_SERVER['PHP_SELF'].'?action=delete&fio='.$fio.'&senior='.$senior.'%&jakor='.$i.'\', \'_parent\')">Удалить</td>';
echo '</tr>';
$i++;
}
echo '</tbody></table>';
}



А вот функция удаления записи:

function delete_item()
{
global $c;
$f = OCIParse($c, "delete from senior WHERE fio=:bind1 AND senior LIKE :bind2");
OCIBindByName($f, ":bind1", $_REQUEST['fio']);
OCIBindByName($f, ":bind2", $_REQUEST['senior']);
OCIExecute($f);
OCICommit($c);
$p=$_REQUEST['jakor']-1;
header( 'Location: '.$_SERVER['PHP_SELF']."#".$p);
die();
}


В итоге ссылка вида http://localhost/index.php#73 не работает... Что делаю не так?
 

visionp

Новичок
после редиректа - эта строка уже не выводиться (ОНА УДАЛЕНА) - и соответственно якорь тоже не пишется. я же сказал - ближайший якорь
Так я так изначально и делал, ссылка ведет на предыдущий якорь.
$p=$_REQUEST['jakor']-1;
header( 'Location: '.$_SERVER['PHP_SELF']."#".$p);
 

vasinsky

Новичок
как у тебя url выглядит - когда редирект прошёл? и как он выглядил до редиректа
 

visionp

Новичок
Согласен, по правильному не выходит, приходится через id.
Чего якорь не срабатывает и совершенно не понимаю почему, сохранял страничку в виде html, в редакторе добавлял якоря в произвольных местах, но увы не работают именно с этой страницой((((
 

visionp

Новичок
Спасибо, но думаю пора мне изучать еще и варианты на JavaScript, jQuery, Ajax...
 
Сверху