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

Форум PHP

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

 

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

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

тема: вывод данных из бд
 
 автор: bool   (27.05.2014 в 21:42)   письмо автору
32.7 Кб
 
 

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

В приложении таблица с ссылками, которые должны переходить на страничку с данными об ученом, причем эти данные должны быть взяты из базы данных

  Ответить  
 
 автор: psychomc   (27.05.2014 в 23:22)   письмо автору
 
   для: bool   (27.05.2014 в 21:42)
 

а как вы выводите список ученых, это ок, тут всё понятно?

  Ответить  
 
 автор: bool   (28.05.2014 в 00:02)   письмо автору
 
   для: psychomc   (27.05.2014 в 23:22)
 

да, с этим я разобралась, всё работает как надо

вот сам код, если нужен

<form class="search_form" method="POST" action="auth.php" >
      <p> Фамилия ученого <input type="text" name="LN" placeholder="Введите фамилию..." required>
    <p> Сортировка
        <select name=sort size=1>
            <option value="last_name">Фамилия</option>
            <option value="publications">Публикации</option>
            <option value="ciitation_index">Индекс цитирования</option>
            <option value="h_index">Индекс Хирша</option> 
        </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>
     <input type=reset value=Очистить>&nbsp;&nbsp;&nbsp;&nbsp;
    <input type=submit name="submit" value=Поиск ></p>

    </form>
<?php
$link 
mysql_connect('localhost','root','1111');
mysql_select_db('chdu'); 
mysql_query("SET NAMES 'cp1251'"); 

$LN $_POST['LN'];
$sort $_POST['sort'];

$i=0;
$query =  "SELECT DISTINCT authors.id_author, authors.last_name,authors.name,authors.patronymic,authors.publications,indexes.ciitation_index,indexes.h_index 
FROM authors,indexes 
WHERE `last_name` like '%"
.$LN."%' AND authors.id_author=indexes.author order by ".$sort." desc";

$result mysql_query($query);    

if (isset(
$_POST['LN'])) {
  echo 
'<table>';
  echo 
'<tr>';
    echo 
'<th>ФИО</th>';    
    echo 
'<th>Фамилия</th>';
    echo 
'<th>Имя</th>';
    echo 
'<th>Отчество</th>';
    echo 
'<th>Публикации</th>';
    echo 
'<th>Индекс цитирования</th>';
    echo 
'<th>Индекс Хирша</th>';
  echo 
'</tr>';

  while (
$row mysql_fetch_assoc($result)){
    
$i++;
    echo 
'<tr>';
    echo 
'<td><a href=info.html>'.$row['id_author'].'</a></td>';
    echo 
'<td>'.$row['last_name'].'</td>';       
    echo 
'<td>'.$row['name'].'</td>';
    echo 
'<td>'.$row['patronymic'].'</td>';
    echo 
'<td>'.$row['publications'].'</td>';
    echo 
'<td>'.$row['ciitation_index'].'</td>';
    echo 
'<td>'.$row['h_index'].'</td>';
     echo 
'</tr>';
 } 
echo 
'</table>';
echo 
'Найдено ученых: '.$i.'.';
}

?>

  Ответить  
 
 автор: confirm   (28.05.2014 в 05:52)   письмо автору
 
   для: bool   (28.05.2014 в 00:02)
 

$LN = $_POST['LN']; 
$sort = $_POST['sort'];


и сразу в запрос:

like '%".$LN."%' AND authors.id_author=indexes.author order by ".$sort."


это инъекция. Необходимо экранировать:

<?
$LN 
mysql_real_escape_string($_POST['LN']); 
$sort mysql_real_escape_string($_POST['sort']);


Для информации: оператор LIKE использует "_" и "%" как спецсимволы, и если таковые будут присутствовать в запросе, то поиск будет некорректным. Более корректно выглядит так:

<?
$LN 
addcslashes(mysql_real_escape_string($_POST['LN']), '%_'); 


Только не перепутайте эту функцию с функцией addslashes

Чтобы иметь возможность получения содержания по выбору из списка, необходимо добавить не просто ссылку (info.html), а с параметром позволяющим сделать этот выбор в базе, то есть ссылка должна содержать идентификатор записи

<?
'<a href=info.html?id='.$row['id_author'].'>'.$row['а_тут_ключ_значения_содержащего_имя_автора'].'</a>';
//тогда
if($id = (int)$_GET['id']) {
    
//запрос по $id к соответствующей таблице вернет информацию о... 

  Ответить  
 
 автор: bool   (28.05.2014 в 09:11)   письмо автору
 
   для: confirm   (28.05.2014 в 05:52)
 

спасибо большое, попробую так сделать...

  Ответить  
 
 автор: bool   (28.05.2014 в 14:39)   письмо автору
 
   для: confirm   (28.05.2014 в 05:52)
 

Премного благодарна, всё работает в лучшем виде))

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

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