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

Форум PHP

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

 

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

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

тема: Небольшая непонятка с PHP
 
 автор: bibika   (04.06.2010 в 06:13)   письмо автору
 
 

Всем доброго времени суток
Сижу уже около недели над такой проблемой. На страницу выводится выборка с базы данных около 100 тыс записей, все работает нормально, прикрутил постраничную навигацию, но проблема в том как пользователю перейти на 25122 запись? Для этого прикрутил переход на конкретную запись и дальнейшее ее редактирование в новом окне, но как сделать переход на эту запись в первом окне. Нижу приведу скороченный код. Всем спасибо за ответы.


<div class="header"><h1 align="center">База даних "Гербарій судинних рослин" (LWS) <br />Державного природознавчого музею НАН України</h1>
</h1></div>

<?
 $query 
"SELECT * FROM $table order by inv_n asc";
 
$result mysql_query($query);
 
$num_rows mysql_num_rows($result);
  
// Переменная хранит число сообщений выводимых на станице 
$num 1
// Извлекаем из URL текущую страницу 
$page $_GET['page']; 
$total=$num_rows/$num;
$total=ceil($total); 
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю

//    НАВІГАЦІЯ

//Теперь надо организовать навигацию. Формируем составляющие будущей навигации.
//Коды стрелки «в начало» и «назад» поместим в одну переменную, также поступим и со стрелками «в конец» и «вперед».
// Проверяем нужны ли стрелки назад
$pervpage "<a href= ./resyna_e.php?page=1><img id='nav' class='tooltip' src='block/icons/up.png' 
        title='Перший запис' /></a>"
;                

$page_left="<a href= ./resyna_e.php?page=". ($page 1) ."><img id='nav' class='tooltip' src='block/icons/left.png' title='На запис наліво' /></a>";
// Проверяем нужны ли стрелки вперед
$nextpage " <a href= ./resyna_e.php?page=". ($page 1) ."><img id='nav' class='tooltip' src='block/icons/right.png'  
title='На запис вправо' /></a>
<a href= ./resyna_e.php?page=" 
.$total"><img id='nav' class='tooltip' src='block/icons/down.png' title='Останній запис' /></a>";
// Находим две ближайшие станицы с обоих краев, если они есть
//if($page - 3 > 0) $page3left = " <a href= ./form_edit.php?page=". ($page - 3) .">". ($page - 3) ."</a> | ";
//if($page - 2 > 0) $page2left = " <a href= ./form_edit.php?page=". ($page - 2) .">". ($page - 2) ."</a> | ";
//if($page - 1 > 0) $page1left = "<a href= ./form_edit.php?page=". ($page - 1) .">". ($page - 1) ."</a> | ";
//if($page + 3 <= $total) $page2right = " | <a href= ./form_edit.php?page=". ($page + 3) .">". ($page + 3) ."</a>";
//if($page + 2 <= $total) $page2right = " | <a href= ./form_edit.php?page=". ($page + 2) .">". ($page + 2) ."</a>";
//if($page + 1 <= $total) $page1right = " | <a href= ./form_edit.php?page=". ($page + 1) .">". ($page + 1) ."</a>";
// Вывод меню
//@print($pervpage.$page3left.$page2left.$page1left."<b>".$page."</b>".$page1right.$page2right.$page3right.$nextpage);
echo"<br /><br />";
//просте меню просто кнопки
//@print($pervpage.$page3right.$nextpage);


//ВИВІД ТАБЛИЦІ З ДАНИМИ

if(empty($page) or $page 0$page 1;
  if(
$page $total$page $total;
  
$start $page $num $num;
 
$result mysql_query("SELECT * FROM $table order by inv_n asc LIMIT $start$num");
 
// В цикле переносим результаты запроса в массив $postrow $msg=array();
 
while ( $msg[] = mysql_fetch_array($result))
 
?>
 
 
<div class="main" style="position:relative;top:-25px;">
<span>
<!--Здесь идет переход на нужную запись-->
 <form action="goto3.php" method=POST>
 Введіть номер запису <input onClick="this.className='onm'" class="tooltip" type="text" 
  name="inv_n" size="7" title="Введіть номер запису" />
<input type="submit" value="Перейти до запису" />
  </form>


 </span>
<!-- Здесь вывод информации с БД-->
<form action="update.php" method=POST>
<!--Icons-->
 <div style="border:solid 1px red;margin-top:5px;margin-bottom:5px;background-color:gray;height:45px;">
 <input id="nav" type="image" src="block/icons/save.png" alt="Зберегти запис" class="tooltip" title="Зберегти запис"> 
<? @print($pervpage.$page_left.$nextpage);?>&nbsp;&nbsp;
<a href="select.php"><img class="tooltip" id="nav" src="block/icons/select_all.png" title="Вибрати всі записи" /></a>
<a href="#"><img class="tooltip" id="nav" src="block/icons/printer.png" title="Друкувати вибрану картку" /></a>
&nbsp;&nbsp;&nbsp;
<a href="#"><input class="tooltip" id="nav" type="image" src="block/icons/delete.png" title="Видалити запис" /></a> 
 

 <span style="position:relative;width:40%;top:0px;left:-160px;*left:-220px;">
 
 <span style=";" class="bttn_act"><a href="resyna.php" style="text-decoration:none;color:black;position:relative">Додати запис</a></span>
<span style="" class="bttn_nact"><a href="resyna_e.php?page=1" style="text-decoration:none;color:black;*width:140px;">Редагувати записи</a></span>
<span style="*width:170px;position:relative;" class="bttn_act"><a href="search.php" style="text-decoration:none;color:black;">Пошук в базі даних</a></span>
<!--<a href="javascript:closeWindow();">Close Window</a>-->
 </span>
</div>

<!--Icons-->
<div class="left">
<!--Left-->
<div class="block">
<span class="klass">Ідентифікаційна частина (нумерація об'єкта)</span>
<br>
Інвентарний номер
<? for($i 0$i $num$i++)
{
?>
<input type="hidden" name="id" <? echo 'value="'.$msg[$i]['id'].'" />'?> 
<span style="position:relative;left:25px;">
<input onClick="this.className='onm'" type="text" name="inv_n" <? echo 'value="'.$msg[$i]['inv_n'].'" />';?></span>
</div>
<div class="block" style="top:5px;position:relative;height:200px;*height:240px;">
<span class="klass">Дефініційна частина (визначення, назва  об'єкта)</span>
<br>
Відділ
<span style="position:relative;left:130px;">
<input onClick="this.className='onm'" type="text" name="h_taxon" id="HTaxon" <? echo 'value="'.$msg[$i]['h_taxon'].'" />';?>
</span>
<br />

<input type="text" name="photo" <? echo 'value="'.$msg[$i]['photo'].'" />';?>
<input type="text" name="map" <? echo 'value="'.$msg[$i]['map'].'" />';}?>
</div>
</div>
<!--Right-->
</form>
</div>


  Ответить  
 
 автор: sim5   (04.06.2010 в 06:19)   письмо автору
 
   для: bibika   (04.06.2010 в 06:13)
 

А что означает "сделать переход на эту запись в первом окне" - отображение ссылки на эту запись в навигаторе в первых его числах?

  Ответить  
 
 автор: bibika   (04.06.2010 в 07:18)   письмо автору
 
   для: sim5   (04.06.2010 в 06:19)
 

Это трудно пояснить словесно. В первом окне идет интерфейс правки информации в БД. Поскольку в ней много записей, я решил сделать переход на отдельную запись, чтоб пользователь не жал 100 раз на кнопку далее чтоб перейти на 100 запись и ее поправить. Но пока у меня вышло только вывести эту запись в новое окно (это первая форма в коде), а я спрашивал есть ли возможность отобразить эту запись в первом окне и ее поправить.

То есть такой алгоритм пользователь вводит номер записи например 100, жмет перейти, и в этом же окне она отображается для следующей правки.

Спасибо за скорый ответ

  Ответить  
 
 автор: sim5   (04.06.2010 в 07:26)   письмо автору
 
   для: bibika   (04.06.2010 в 07:18)
 

Ну делайте переход на эту же страницу, но с добавлением формы для редактирования. Если же без перехода, то либо средствами Ajax, либо с помощью iframe, под соответсвующей записью можно открыть форму для редактирования.

  Ответить  
 
 автор: bibika   (04.06.2010 в 07:56)   письмо автору
 
   для: sim5   (04.06.2010 в 07:26)
 

>Ну делайте переход на эту же страницу, но с добавлением формы для редактирования. Если же без перехода, то либо средствами Ajax, либо с помощью iframe, под соответсвующей записью можно открыть форму для редактирования.

Спасибо за ответ. Проблема в том, что на этой странице уже есть форма для редактирования, в которую помещены все записи от 1 и до конца доступные для редактирования. А я спрашиваю возможно ли параллельно с выводом этих записей получив от пользователя номер записи вывести ее в этой же форме?

  Ответить  
 
 автор: sim5   (04.06.2010 в 08:02)   письмо автору
 
   для: bibika   (04.06.2010 в 07:56)
 

Да кто вам запрещает держать форму для ввода записи?
Вы открываете страницу, и проверяете:
если пришел запрос на редактирование (например, $_POST['num']), то выводите форму для редактирования, а нет, значит нет.
Далее без всяких условий выводите форму для ввода номера и остальное содержимое страницы.
Это разве трудно реализовать?

  Ответить  
 
 автор: neadekvat   (04.06.2010 в 08:46)   письмо автору
 
   для: bibika   (04.06.2010 в 06:13)
 

Какой у вас первичный ключ в бд?
Чаще используется "id", отсюда и будем-с отталкиваться:
Когда выводите все записи, ставьте в ссылку с указанием этого id, например edit.php?id=$id, где $id - это переменная, содержащая первичный ключ из бд

В edit.php добавляете к запросу WHERE id = $id, вот так и вытащите нужную запись.
Если вам все это известно, то, даже прочитав другие посты, я не понимаю, в чем у вас проблема.

  Ответить  
 
 автор: bibika   (04.06.2010 в 09:54)   письмо автору
 
   для: neadekvat   (04.06.2010 в 08:46)
 

Да спасибо. Уже разобрался. Еще раз спасибо за ответы.

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

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