[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт поиска, изменения, сортировки...
Bladiks
Здравствуйте, уважаемые!

У меня есть таблица, в которой будут данные по книгам в библиотеке. Я пытаюсь сделать форму для библиотекаря... которая сможет редактировать, просматривать и изменять записи в таблице. У меня что-то получилось... но очень криво... как впоять в этот код - поиск? и в таблицу результатов - сортировку по столбцам? Надеюсь на вашу помощь. Мои мучения можно увидеть - http://yic-mfp.ru/lib/update_del_add.php

Код файла:
PHP
<a href="update_del_add.php">обновить
</a>

<
table border=1 align=center>
<
td align=center><B>Удалить</B></td>
<
td align=center><B>Библ. код</B></td>
<
td align=center><B>Издательство</B></td>
<
td align=center><B>Заглавие</B></td>
<
td align=center><B>Анотация</B></td>
<
td align=center><B>Добавить</B></td></tr>

<
form method=get action='update_del_add.php'>
<
tr><td>&nbsp;</td>
<
td><input type=text name='Bibl_shifr'></td>
<
td><input type=text name='Izdatelstvo'></td>
<
td><input type=text name='Zaglavie'></td>
<
td><textarea name='Anotacia'></textarea></td>
<
td><input type=submit name='submit_add' value='Добавить'></td>
</
form>

<?
php
include('config.php'); 
$dbh 
= mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

// Если мы уже нажимали кнопку добавления записи
if(@$submit_add) {
  // Добавляем выбранную запись
  $sql="INSERT INTO Izdanie(Bibl_shifr, Izdatelstvo, Zaglavie, Anotacia) values('$Bibl_shifr', '$Izdatelstvo', '$Zaglavie', '$Anotacia')";
  mysql_query($sql);
};

// Если мы уже нажимали кнопку удаления
if(@$del_radio) {
  // Удаляем выбранную запись
  $sql="delete from Izdanie where (Kod_izdania1='$del_radio')";
  mysql_query($sql);
};


// Если мы уже нажимали кнопку изменения записи
if(@$submit_update) {
  // Обновляем выбранную запись
  $sql="update Izdanie set Bibl_shifr='$Bibl_shifr', Izdatelstvo='$Izdatelstvo', Zaglavie='$Zaglavie', Anotacia='$Anotacia' 
         where (Kod_izdania1='$update')"
;
  mysql_query($sql);
};

// Заносим в переменную <I>$result</I> всю базу
$sql="select * from Izdanie";
$result=mysql_query($sql);
// Узнаем кол-во записей
$rows=mysql_num_rows($result);

for(
$i=0;$i<$rows;$i++) {
  // Устанавливаем курсор на соответствующую позицию
  mysql_data_seek($result,$i);
  // Записываем в ассоциативный массив <I>$arr_guest</I>

  // значения полей таблицы гостевой книги
  $arr_guest=mysql_fetch_array($result);
    echo "<form method=get action='update_del_add.php'>";
  echo "<tr>";
  echo "<input type=hidden name='update' value='".$arr_guest["Kod_izdania1"]."'>";
  echo "<td><input type=radio name='del_radio' value='".$arr_guest["Kod_izdania1"]."'></td>";
  echo "<td><input type=text name='Bibl_shifr' value='".$arr_guest["Bibl_shifr"]."'></td>";
  echo "<td><input type=text name='Izdatelstvo' value='".$arr_guest["Izdatelstvo"]."'></td>";
  echo "<td><input type=text name='Zaglavie' value='".$arr_guest["Zaglavie"]."'></td>";
  echo "<td><textarea name='Anotacia'>".$arr_guest["Anotacia"]."</textarea></td>";
  echo "<td><input type=submit name='submit_update' value='Изменить'>";
  echo "</tr>";
  echo "</form>";
};




Спустя 4 дня, 22 часа, 31 минута, 38 секунд (9.03.2009 - 14:54) Bladiks написал(а):
Товаристчи ну помогите плиз! Могу пива поставить)))

Спустя 11 минут, 4 секунды (9.03.2009 - 15:05) twin написал(а):
Пиво это конечно хорошо. smile.gif Но вот задачу я не понял. Плиз чуть подробнее, что и как сортировать и по каким критериям что искать.

Спустя 20 минут, 9 секунд (9.03.2009 - 15:25) Bladiks написал(а):
Искать нужно по всем столбцам таблицы. А вот сортировку - что-б человек в таблице вывода результатов, мог отсортировать уже результаты поиска по столбцу какому-нить, например - по библ. шифру. Я так понимаю это уже какой-нить джава писать придется? (((

Моя ася 464942158

Спустя 7 минут, 26 секунд (9.03.2009 - 15:33) twin написал(а):
Искать по всем столбцам что? То есть нужно одно поле, куда написать искомую фразу и должен выйти результат, если хоть в одном из столбцов такая фраза имеется?
А отсортировать совсем просто, какая еще джава? Только мне не ясно, выводить нужно просто результат или форму для редактирования?
А про пиво - я же в шутку. И аська все равно у меня не работает.

Спустя 8 минут, 32 секунды (9.03.2009 - 15:41) Bladiks написал(а):
Я сделал отдельно поиск http://yic-mfp.ru/lib/search.php, но не знаю как его впаять в форум редактирования. И сортировка нужна уже найденных результатов.
Т.е. человек ввел ключевое слово для поиска. Получил таблицу с результатами и возможностью редактирования. А после этого нажал на название столбца и результаты отсортировались.

И поиск мой очень криво работает(( через раз.

Вот код поиска:
PHP
<table><tr>
<
form method="get" action="search.php">
    <td><input type=text name='search'></td>
    <td><input type=submit name='search' value='Поиск'></td>
</
form>
</
tr></table>
<
table border="1">
<?
php
include('config.php'); 

// Выбор всех полей из таблицы Edithion
$dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

/* Выполнение SQL запроса */ 

$res
=mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Anotacia LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'");
$nums=mysql_num_rows($res);
if ($nums) {  
    echo 
"Найдено: $nums<br /><br />";
    echo "<tr><td><b>Заглавие</b></td>
              <td><b>Автор</b></td>
              <td><b>Анотация</b></td>
              <td><b>Библ. шифр</b></td></tr>"
;
    while ($row=@mysql_fetch_assoc($res)) {
        echo "<tr><td>{$row['Zaglavie']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Anotacia']}</td>
              <td>{$row['Bibl_shifr']}</td></tr>"
;
    }
}else{
    echo "Не найдено";
}

Спустя 11 минут, 31 секунда (9.03.2009 - 15:53) twin написал(а):
Ужос.
PHP
<td><input type=text name='search'></td>
    <
td><input type=submit name='search' value='Поиск'>
Тут одинаковые имена у элементов
Инициализации нету, зря надеешься на глобальные переменные.
Данные не обрабатываются. Конечно работать не будет.

Спустя 39 минут, 39 секунд (9.03.2009 - 16:32) twin написал(а):
Ну для начала хотя бы так:
Свернутый текст
PHP
<table><tr>
<
form method="get" action="search.php">
    <
td><input type=text name='search'></td>
    <
td><input type=submit name='ok' value='Поиск'></td>
</
form>
</
tr></table>
<
table border="1">
<?
php
if(isset($_POST['ok']))
{
include(
'config.php'); 

// Выбор всех полей из таблицы Edithion
$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
/* Выполнение SQL запроса */ 

$res mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Anotacia LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'");
    if (
$res
    {
    
$nums mysql_num_rows($res);  
    echo 
"Найдено: $nums<br /><br />";
    echo 
"<tr><td><b>Заглавие</b></td>
              <td><b>Автор</b></td>
              <td><b>Анотация</b></td>
              <td><b>Библ. шифр</b></td></tr>"
;
        while (
$row mysql_fetch_assoc($res)) 
        {
        echo 
"<tr><td>{$row['Zaglavie']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Anotacia']}</td>
              <td>{$row['Bibl_shifr']}</td></tr>"
;
        }

    }
    else
    {
    echo 
"Не найдено";
    }
}


Спустя 54 минуты, 23 секунды (9.03.2009 - 17:27) Bladiks написал(а):
Спасибо. Но при таком коде он мне выдает в браузер вот это - http://yic-mfp.ru/lib/search.php?search=мой запрос&ok=%CF%EE%E8%F1%EA

Где копать?

Спустя 3 минуты, 6 секунд (9.03.2009 - 17:30) twin написал(а):
HTML
<form method="post" action="search.php">

Спустя 3 минуты, 53 секунды (9.03.2009 - 17:34) Bladiks написал(а):
Спасиба, я не заметил даж...))) поиск поправлен.. а вот как его впаять в http://yic-mfp.ru/lib/update_del_add.php ? ))

Я так понимаю там проблема будет с переменными..

Спустя 21 минута, 9 секунд (9.03.2009 - 17:55) twin написал(а):
Я не совсем понял, что значит впаять. Если надо вместо вывода результатов вывести редактирование, это одно... А можно просто сначала найти, а потом по одному редактировать. Не ясно.

Спустя 5 минут, 49 секунд (9.03.2009 - 18:01) Bladiks написал(а):
Вобщем нужно что-б человек находил книги по своему запросу, видел информацию в таблице, мог сортировать ее по столбцам, и мог ее изменить/удалять... у меня почти все получилось.. кроме поиска и сортировки...(( не силен я в php/sql... третий день про него читаю(((

Спустя 52 минуты, 45 секунд (9.03.2009 - 18:53) twin написал(а):
Ну так просто объеденить эти два файла, и запрос делать для поиска.
Вместо вот этого
PHP
$sql="select * from Izdanie";
поставить это:
PHP
$sql="SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Anotacia LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'";
А сортировать надо оператором ORDER BY.Можно менять их в запросе в зависимости от. Допустим селекта или радиокнопки.
PHP
if(isset($_POST['select']))
{
switch(
$_POST['select'])
{
case 
1:
$order "ORDER BY `Zaglavie`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;
.
.
.
default:
$order NULL;
}
}

$sql="SELECT * FROM Izdanie 
WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' 
OR Anotacia LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'
"
.$order;
Как то так наверно...

Спустя 38 минут, 29 секунд (9.03.2009 - 19:32) Bladiks написал(а):
Эм.. unsure.gif Решил сначала просто форму поиска сделать что-б работала.. хотя-б без сортировки... И чета совсем запутался((( Может такую вещь лучше делать маленькими инклудами в один файл? Типа как модули? А-то чета у мя логика теряется uult-то на середине(((

Вот сделал такую вещь -
PHP
<table><tr>
<
form method="post" action="update_del_add.php">
    <
td><input type=text name='search'></td>
    <
td><input type=submit name='ok' value='Поиск'></td>
</
form>
</
tr></table>



<
table border=1 align=center>
<
td align=center><B>Удалить</B></td>
<
td align=center><B>Библкод</B></td>
<
td align=center><B>Издательство</B></td>
<
td align=center><B>Заглавие</B></td>
<
td align=center><B>Анотация</B></td>
<
td align=center><B>Добавить</B></td></tr>

<
form method=get action='update_del_add.php'>
<
tr><td>&nbsp;</td>
<
td><input type=text name='Bibl_shifr'></td>
<
td><input type=text name='Izdatelstvo'></td>
<
td><input type=text name='Zaglavie'></td>
<
td><textarea name='Anotacia'></textarea></td>
<
td><input type=submit name='submit_add' value='Добавить'></td>
</
form>

<?
php
include('config.php'); 
$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

// Если мы уже нажимали кнопку добавления записи
if(@$submit_add) {
  
// Добавляем выбранную запись
  
$sql="INSERT INTO Izdanie(Bibl_shifr, Izdatelstvo, Zaglavie, Anotacia) values('$Bibl_shifr', '$Izdatelstvo', '$Zaglavie', '$Anotacia')";
  
mysql_query($sql);
};

// Если мы уже нажимали кнопку удаления
if(@$del_radio) {
  
// Удаляем выбранную запись
  
$sql="delete from Izdanie where (Kod_izdania1='$del_radio')";
  
mysql_query($sql);
};


// Если мы уже нажимали кнопку изменения записи
if(@$submit_update) {
  
// Обновляем выбранную запись
  
$sql="update Izdanie set Bibl_shifr='$Bibl_shifr', Izdatelstvo='$Izdatelstvo', Zaglavie='$Zaglavie', Anotacia='$Anotacia' 
         where (Kod_izdania1='$update')"
;
  
mysql_query($sql);
};

// Заносим в переменную <I>$result</I> всю базу
$sql="$sql="SELECT FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Anotacia LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'";";
$result=mysql_query($sql);
// Узнаем кол-во записей
$rows=mysql_num_rows($result);

for(
$i=0;$i<$rows;$i++) {
  
// Устанавливаем курсор на соответствующую позицию
  
mysql_data_seek($result,$i);
  
// Записываем в ассоциативный массив <I>$arr_guest</I>

  // значения полей таблицы гостевой книги
  
$arr_guest=mysql_fetch_array($result);
    echo 
"<form method=get action='update_del_add.php'>";
  echo 
"<tr>";
  echo 
"<input type=hidden name='update' value='".$arr_guest["Kod_izdania1"]."'>";
  echo 
"<td><input type=radio name='del_radio' value='".$arr_guest["Kod_izdania1"]."'></td>";
  echo 
"<td><input type=text name='Bibl_shifr' value='".$arr_guest["Bibl_shifr"]."'></td>";
  echo 
"<td><input type=text name='Izdatelstvo' value='".$arr_guest["Izdatelstvo"]."'></td>";
  echo 
"<td><input type=text name='Zaglavie' value='".$arr_guest["Zaglavie"]."'></td>";
  echo 
"<td><textarea name='Anotacia'>".$arr_guest["Anotacia"]."</textarea></td>";
  echo 
"<td><input type=submit name='submit_update' value='Изменить'>";
  echo 
"</tr>";
  echo 
"</form>";
};






$sql="$sql="

Спустя 1 час, 14 минут, 27 секунд (9.03.2009 - 23:55) Bladiks написал(а):
Цитата (twin @ 9.03.2009 - 19:41)
Вот это что значит, я не понял...
PHP
$sql="$sql="

Спасибо! rolleyes.gif Это запрос в запросе оказался))) А можно еще один глупый вопрос? )

Как сделать радио кнопки , что-б они снимались при повторном нажатии, что-б человек щелкнув второй раз по выбранной строке снимал выделение?
Кнопки у меня прописаны так:
PHP
<input type=radio name='del_radio' value='".$arr_guest["Kod_izdania1"]."'>


Спустя 1 час, 38 минут, 5 секунд (10.03.2009 - 01:34) twin написал(а):
Опять не понял... Видно теряю дар ясновидения... sad.gif Всмысле чтоб радиокнопка работала как чекбокс что ли? Теоретически можно конечно наварочать javascript, но лучше пересмотреть логику под штатные элементы, чем изобретать ненадежный велосипед. Ну попробуй селект использовать к примеру, а первой строчкой напиши "Без сортировки"

Спустя 11 часов, 5 минут (10.03.2009 - 12:39) Bladiks написал(а):
Спасибо. понял, наверно оставлю тогда такое решение. Вот решил немного подредактировать форму редактирования, и теперь не работает добавление записи... не пойму в чем дело... может найдете причину? ))
PHP
<table><tr>
<
form method="post" action="update_del_add.php">
    <
td><input type=text name='search'></td>
    <
td><input type=submit name='ok' value='Поиск'></td>
</
form>
</
tr></table>



<
table border=1 align=center>
<
td align=center><B>Del</B></td>
<
td align=center><B>Бшифр</B></td>
<
td align=center><B>Автор</B></td>
<
td align=center><B>Заглавие</B></td>
<
td align=center><B>Издательство</B></td>
<
td align=center><B>Год</B></td>
<
td align=center><B>Стр.</B></td>
<
td align=center><B>Экз.</B></td>
<
td align=center><B>Стоимость</B></td>
<
td align=center><B>Добавить</B></td></tr>

<
form method=get action='update_del_add.php'>
<
tr><td>&nbsp;</td>
<
td><input name='Bibl_shifr' type=text size="12"></td>
<
td><input type=text name='Avtori'></td>
<
td><input type=text name='Zaglavie'></td>
<
td><input type=text name='Izdatelstvo'></td>
<
td><input name='God_izdania' type=text size="10"></td>
<
td><input name='Kol_stranic' type=text size="5"></td>
<
td><input type=text name='Kol_ekzemplarov' size="5"></td>
<
td><input type=text name='Stoimost'></td>
<
td><input type=submit name='submit_add' value='Добавить'></td>
</
form>

<?
php
include('config.php'); 
$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");

// Если мы уже нажимали кнопку добавления записи
if(@$submit_add) {
  
// Добавляем выбранную запись
  
$sql="INSERT INTO Izdanie(Bibl_shifr, Avtori, Zaglavie, Izdatelstvo, God_izdania, Kol_stranic, Kol_ekzemplarov, Stoimost) values('$Bibl_shifr', '$Avtori', '$Zaglavie', '$Izdatelstvo', '$God_izdania', '$Kol_stranic', '$Kol_ekzemplarov', '$Stoimost',)";
  
mysql_query($sql);
};

// Если мы уже нажимали кнопку удаления
if(@$del_radio) {
  
// Удаляем выбранную запись
  
$sql="delete from Izdanie where (Kod_izdania1='$del_radio')";
  
mysql_query($sql);
};


// Если мы уже нажимали кнопку изменения записи
if(@$submit_update) {
  
// Обновляем выбранную запись
  
$sql="update Izdanie set Bibl_shifr='$Bibl_shifr', Avtori='$Avtori', Zaglavie='$Zaglavie', Izdatelstvo='$Izdatelstvo', God_izdania='$God_izdania', Kol_stranic='$Kol_stranic', Kol_ekzemplarov='$Kol_ekzemplarov', Stoimost='$Stoimost' 
         where (Kod_izdania1='$update')"
;
  
mysql_query($sql);
};

// Заносим в переменную <I>$result</I> всю базу
$sql="SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Izdatelstvo LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'";
$result=mysql_query($sql);
// Узнаем кол-во записей
$rows=mysql_num_rows($result);

for(
$i=0;$i<$rows;$i++) {
  
// Устанавливаем курсор на соответствующую позицию
  
mysql_data_seek($result,$i);
  
// Записываем в ассоциативный массив <I>$arr_guest</I>

  // значения полей таблицы библиотеки
  
$arr_guest=mysql_fetch_array($result);
    echo 
"<form method=get action='update_del_add.php'>";
  echo 
"<tr>";
  echo 
"<input type=hidden name='update' value='".$arr_guest["Kod_izdania1"]."'>";
  echo 
"<td><input type=radio name='del_radio' value='".$arr_guest["Kod_izdania1"]."'></td>";
  echo 
"<td><input type=text name='Bibl_shifr' value='".$arr_guest["Bibl_shifr"]."' size='12'></td>";
  echo 
"<td><input type=text name='Avtori' value='".$arr_guest["Avtori"]."'></td>"
  echo 
"<td><input type=text name='Zaglavie' value='".$arr_guest["Zaglavie"]."'></td>";
  echo 
"<td><input type=text name='Izdatelstvo' value='".$arr_guest["Izdatelstvo"]."'></td>";
  echo 
"<td><input type=text name='God_izdania' value='".$arr_guest["God_izdania"]."' size='10'></td>";
  echo 
"<td><input type=text name='Kol_stranic' value='".$arr_guest["Kol_stranic"]."' size='5'></td>";
  echo 
"<td><input type=text name='Kol_ekzemplarov' value='".$arr_guest["Kol_ekzemplarov"]."' size='5'></td>";
  echo 
"<td><input type=text name='Stoimost' value='".$arr_guest["Stoimost"]."'></td>";
  echo 
"<td><input type=submit name='submit_update' value='Изменить'>";
  echo 
"</tr>";
  echo 
"</form>";
};






mysql_query($sql)or die(mysql_error());

Спустя 22 минуты, 33 секунды (10.03.2009 - 13:16) Bladiks написал(а):
Спасибо! Полезная штука)) везде ее прописал.

а вот теперь у мя вопрос по сортировке. Вы писали сделать как-то так:
PHP
if(isset($_POST['select']))
{
switch(
$_POST['select'])
{
case 
1:
$order "ORDER BY `Zaglavie`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;
.
.
.
default:
$order NULL;
}
}

$sql="SELECT * FROM Izdanie 
WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' 
OR Anotacia LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'
"
.$order;


А как задать $order в виде html ссылки, и что-б она запускала сортировку?

Спустя 10 минут, 36 секунд (10.03.2009 - 13:27) twin написал(а):
PHP
switch($_GET'select'])

HTML
<a href="?select=1" >По заголовкам</a>
<a href="?select=2" >По авторам</a>

Спустя 29 минут, 23 секунды (10.03.2009 - 13:56) Bladiks написал(а):
Спасиба! врде все сделал, а ругается на строку
PHP
switch($_GET'select'])


Вот что сделал:
PHP
<table align="center">
  <
tr>
<
form method="post" action="search.php">
    <
td><input type=text name='search'></td>
    <
td><input type=submit name='ok' value='Поиск'></td>
</
form>
</
tr></table>
<
table border="1" align="center">
<?
php
if(isset($_POST['ok']))
{
include(
'config.php'); 

$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
/* Выполнение SQL запроса */ 
//делаем сортировку
if(isset($_POST['select']))
{
switch(
$_GET'select'])
{
case 
1:
$order "ORDER BY `Zaglavie`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;
.
.
.
default:
$order NULL;
}
}

$res mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Izdatelstvo LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'".$order);
    if (
$res
    {
    
$nums mysql_num_rows($res);  
    echo 
"Найдено: $nums книг.<br /><br />";
    echo 
"<tr>
              <td><b><a href='?select=1'>Библ. шифр</a></b></td>
              <td><b>Автор</b></td>
              <td><b>Заглавие</b></td>              
              <td><b>Издательство</b></td>
              <td><b>Год издания</b></td>
              <td><b>Страниц</b></td>
              </tr>"
;
        while (
$row mysql_fetch_assoc($res)) 
        {
        echo 
"<tr>
              <td>{$row['Bibl_shifr']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Zaglavie']}</td>
              <td>{$row['Izdatelstvo']}</td>
              <td>{$row['God_izdania']}</td>
              <td>{$row['Kol_stranic']}</td>
              </tr>"
;
        }

    }
    else
    {
    echo 
"Не найдено";
    }
}

<td><b><a href='?select=1'>Библшифр</a></b></td>


А вот что, и как, и в какой момент записать в массив?

Спустя 3 минуты, 55 секунд (10.03.2009 - 14:20) Joker написал(а):
а не проще вместо этого
PHP
mysql_query($sql)or die(mysql_error());

Написать такую функцию
PHP
function sql($s)
{
    
$r mysql_query($s);
    if (!
$r)
    {
        echo 
"<br/><br/>SQL: ".$s."<br/>Error: ".mysql_error()."<br/><br/>";
    }
    return 
$r;
}


И использовать её постоянно экономия места и времени же huh.gif

Спустя 5 минут, 24 секунды (10.03.2009 - 14:26) Bladiks написал(а):
Цитата (Joker @ 10.03.2009 - 11:20)
а не проще вместо этого
PHP
mysql_query($sql)or die(mysql_error());

Написать такую функцию
PHP
function sql($s)
{
    $r = mysql_query($s);
    if (!$r)
    {
        echo "<br/><br/>SQL: ".$s."<br/>Error: ".mysql_error()."<br/><br/>";
    }
    return $r;
}


И использовать её постоянно экономия места и времени же huh.gif

Товаристч, спасибо! )))
Если посмотреть выше, то вы поймете, что об этой функции я узнал час назад, а до этого свято веровал что ее в настройках сервера выставлять надо)))

Спустя 5 минут, 22 секунды (10.03.2009 - 14:31) twin написал(а):
Joker

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

Bladiks
Инициализировать - значит задать начальное значение. Так:

PHP
$select = isset($_GET['select'])?$_GET['select']:NULL;
и использовать уже не $_GET['select'] а $select. А в суперглобальный массив пишуться данные при отправке. Если не нажата кнопка в форме, массива POST не будет совсем. Надо убрать это:
PHP
if(isset($_POST['ok']))
{
для сортировки.




Спустя 19 минут, 34 секунды (10.03.2009 - 14:51) Bladiks написал(а):
эм.. вроде все прописал... массив как я понял уже существует, раз он супер глобальный... но ничего не происходит при нажатии на ссылки, хотя браузер получает ссылки вида search.php?select=1
пример здесь - Воть
PHP
<table align="center">
  <
tr>
<
form method="post" action="search.php">
    <
td><input type=text name='search'></td>
    <
td><input type=submit name='ok' value='Поиск'></td>
</
form>
</
tr></table>
<
table border="1" align="center">
<?
php

include('config.php'); 

$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
/* Выполнение SQL запроса */ 
//делаем сортировку
$select = isset($_GET['select'])?$_GET['select']:NULL;
    if(isset(
$_POST['select']))
{
switch(
$_GET['select'])
{
case 
1:
$order "ORDER BY `Bibl_shifr`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;

case 
3:
$order "ORDER BY `Zaglavie`";
break;

case 
4:
$order "ORDER BY `Izdatelstvo`";
break;

case 
5:
$order "ORDER BY `God_izdania`";
break;

case 
6:
$order "ORDER BY `Kol_stranic`";
break;

default:
$order NULL;
}
}

$res mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Izdatelstvo LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'".$order) or die(mysql_error());
    if (
$res
    {
    
$nums mysql_num_rows($res);  
    echo 
"Найдено: $nums книг.<br /><br />";
    echo 
"<tr>
              <td><b><a href='?select=1'>Библ. шифр</a></b></td>
              <td><b><a href='?select=2'>Автор</a></b></td>
              <td><b><a href='?select=3'>Заглавие</a></b></td>              
              <td><b><a href='?select=4'>Издательство</a></b></td>
              <td><b><a href='?select=5'>Год издания</a></b></td>
              <td><b><a href='?select=6'>Страниц</a></b></td>
              </tr>"
;
        while (
$row mysql_fetch_assoc($res)) 
        {
        echo 
"<tr>
              <td>{$row['Bibl_shifr']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Zaglavie']}</td>
              <td>{$row['Izdatelstvo']}</td>
              <td>{$row['God_izdania']}</td>
              <td>{$row['Kol_stranic']}</td>
              </tr>"
;
        }
    }    
    else
    {
    echo 
"Не найдено";
    }


if(isset($_POST['select']))
{
$res mysql_query("SELECT

Спустя 8 минут, 25 секунд (10.03.2009 - 15:32) Bladiks написал(а):
Инъекцию ввел.. теперь и поиск не работает ((( Где копать?
PHP
<table align="center">
  <
tr>
<
form method="post" action="search.php">
    <
td><input type=text name='search'></td>
    <
td><input type=submit name='ok' value='Поиск'></td>
</
form>
</
tr></table>
<
table border="1" align="center">
<?
php

include('config.php'); 

$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
/* Выполнение SQL запроса */ 
//делаем сортировку
$select = isset($_GET['select'])?$_GET['select']:NULL;
    if(isset(
$_POST['select']))
{
switch(
$_GET['select'])
{
case 
1:
$order "ORDER BY `Bibl_shifr`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;

case 
3:
$order "ORDER BY `Zaglavie`";
break;

case 
4:
$order "ORDER BY `Izdatelstvo`";
break;

case 
5:
$order "ORDER BY `God_izdania`";
break;

case 
6:
$order "ORDER BY `Kol_stranic`";
break;

default:
$order NULL;
}
}

if (isset(
$_POST['select']))
{
$res mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Izdatelstvo LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'".$order) or die(mysql_error());
    if (
$res
    {
    
$nums mysql_num_rows($res);  
    echo 
"Найдено: $nums книг.<br /><br />";
    echo 
"<tr>
              <td><b><a href='?select=1'>Библ. шифр</a></b></td>
              <td><b><a href='?select=2'>Автор</a></b></td>
              <td><b><a href='?select=3'>Заглавие</a></b></td>              
              <td><b><a href='?select=4'>Издательство</a></b></td>
              <td><b><a href='?select=5'>Год издания</a></b></td>
              <td><b><a href='?select=6'>Страниц</a></b></td>
              </tr>"
;
        while (
$row mysql_fetch_assoc($res)) 
        {
        echo 
"<tr>
              <td>{$row['Bibl_shifr']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Zaglavie']}</td>
              <td>{$row['Izdatelstvo']}</td>
              <td>{$row['God_izdania']}</td>
              <td>{$row['Kol_stranic']}</td>
              </tr>"
;
        }
    }    
    else
    {
    echo 
"Не найдено";
    }

}
if(isset($_POST['select']))
{
switch(
$_GET['select'])
И внизу тогда уж надо не $_POST['select']) а $_POST['search'])

Спустя 13 минут, 34 секунды (10.03.2009 - 15:51) Bladiks написал(а):
А.. я чета совсем запутался.. может начать с начала? Я так понимаю, что нужно выдать в sql запрос
PHP
$res mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%$search%' OR Avtori LIKE '%$search%' OR Izdatelstvo LIKE '%$search%' OR Bibl_shifr LIKE '%$search%'".$order) or die(mysql_error());
переменную $order
Для этого нужно использовать ссылку html.
Тогда получается что нужно всего-лишь придумать как прописать в ссылку значение -
PHP
ORDER BY `Bibl_shifr`
? и не придется связываться с свитчами и брейками?

Спустя 22 минуты, 7 секунд (10.03.2009 - 16:13) twin написал(а):
Можно и так, но это крайне ненадежно, совать в базу что то из GET. для того и свич. Причем не просто ненадежно, а вопиюще ненадежно.

Спустя 16 минут, 38 секунд (10.03.2009 - 16:30) Bladiks написал(а):
Тогда помогите пожалуйста разобраться с этими свитчами... sad.gif Не пойму я как они работают.. можно мне описать цепочку на моем примере? пожалуйста..
покажите как надо, с коментариями и я врублюсь))))

Спустя 31 минута, 1 секунда (10.03.2009 - 17:01) twin написал(а):
Да все правильно написано, только вот тут надо бы так:
PHP
switch($select)
{
а если сортировку делать по найденным значениям, то условия поиска нужно сохранять. Допустим в сессии, как нибудь так:
PHP
session_start();
$_SESSION['search'] = isset($_POST['search']):mysql_escape_string($_POST['search']):$_SESSION['search'];
и в запрос соответственно:

PHP
if (isset($_SESSION['search']))
{
$res mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%".$_SESSION['search']."%' OR Avtori LIKE '%".$_SESSION['search'].

Спустя 15 минут, 1 секунда (10.03.2009 - 17:16) Bladiks написал(а):
Цитата (twin @ 10.03.2009 - 14:01)
и в запрос соответственно:

PHP
if (isset($_SESSION['search']))
{
$res = mysql_query("SELECT * FROM Izdanie WHERE Zaglavie LIKE '%".$_SESSION['search']."%' OR Avtori LIKE '%".$_SESSION['search'].

Вот с этим не совсем понял...
Нужно писать еще один запрос? или впихивать в имеющийся?

И еще - он ругается на двоеточие вот здесь -
PHP
$_SESSION['search'] = isset($_POST['search']):mysql_escape_string($_POST['search']):$_SESSION['search'];

Спустя 28 минут, 7 секунд (10.03.2009 - 17:44) twin написал(а):
Правильно ругается. Но если я каждую точку поправлять буду, ты никогда ничего путного не напишешь. Не нужно писать другой запрос. Нужно подумать маленько просто. Поставить себя на место скрипта и представить, что бы ты стал делать, если бы. Вот заполнили мы поле поиска. Нажмали кнопку. Он все нашел. А поле то пустое теперь. Ну и как будет работать запрос? Чего искать то? По этому нужно критерий (искомую фразу) как то сохранить для следующего запроса, уже с сортировкой. Читай про сессии.

Спустя 4 минуты, 45 секунд (10.03.2009 - 17:48) Joker написал(а):
Цитата (twin @ 10.03.2009 - 11:31)
Joker

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

Почему же? помоему проще будет после в функции убрать вывод ошибки и все. и получиться такая функция
PHP
function sql($s)
{
    
$r mysql_query($s);
    return 
$r;
}

Это помоему куда быстрее чем код весь чистить.

Спустя 7 минут, 37 секунд (10.03.2009 - 17:56) twin написал(а):
А зачем лишняя функция, да еще на каждый запрос? Это же сколько ресурсов, если серьёзный скрипт? А чистить не руками же, меньше секунды времени занимает.

Спустя 1 минута, 58 секунд (10.03.2009 - 17:58) Joker написал(а):
Но пока пишешь or die... сколько времени уйдет если очень серьёзный проект? или это тормозить процесс? может я чегото не понимаю.

Спустя 23 минуты, 14 секунд (10.03.2009 - 18:21) twin написал(а):
Ну во первых пишется не везде, а только в проблемных запросах. А во вторых, на одном листинге это делается копипастом. Ни сколько времени это не занимает. А вот отдать заказчику заваленный мусором скрипт...

Спустя 2 минуты, 21 секунда (10.03.2009 - 18:24) Joker написал(а):
Ну одна функция для удобства разработки это муссор? да и заказчики там видят не мусор а набор букв...

Спустя 3 минуты, 7 секунд (10.03.2009 - 18:27) twin написал(а):
С таким подходом к заказчикам ты далеко не уедешь. Да и где же там удобство? Я к примеру давно уже привык не обращать внимания на бантики и смотреть только суть.

Спустя 2 минуты, 54 секунды (10.03.2009 - 18:30) Joker написал(а):
Ну почему же) уже качусь на всех парах)) Ну если заказчики действительно непонимают что я им посылаю)

Спустя 4 минуты, 13 секунд (10.03.2009 - 18:34) twin написал(а):
Просто когда не уважаешь заказчика, считаешь что он лох и бестолочь, и можно ему что угодно впарить, это приводит к тому, что начинаешь деградировать. Нафига что то делать лучше, если и так канает за всю мазуту. Уважаешь заказчика - уважаешь себя.

Спустя 20 часов, 17 минут, 15 секунд (11.03.2009 - 14:51) Bladiks написал(а):
Цитата (twin @ 10.03.2009 - 14:44)
Правильно ругается. Но если я каждую точку поправлять буду, ты никогда ничего путного не напишешь. Не нужно писать другой запрос. Нужно подумать маленько просто. Поставить себя на место скрипта и представить, что бы ты стал делать, если бы. Вот заполнили мы поле поиска. Нажмали кнопку. Он все нашел. А поле то пустое теперь. Ну и как будет работать запрос? Чего искать то? По этому нужно критерий (искомую фразу) как то сохранить для следующего запроса, уже с сортировкой. Читай про сессии.

PHP
$_SESSION['search'] = isset($_POST['search'])?mysql_escape_string($_POST['search']):$_SESSION['search'];

Так наверно, да?


Эх..\читал-читал.. вот тока про сессии везде пишут что нужно зарегистрировать переменную и потом ей пользоватся. Единственый способ который я вижу, это надо в ссылку html как-то вставить предидущее слово для поиска..? Как это осуществить..? ((( и мне кажется вы имели ввиду какое-то более логичное решение... (((

Еще как вариант - может стоит сортировать уже выданые результаты поиска? без повторного запроса к базе? но то-же... с какой стороны к этому подходить?

Не хватает мне опыта для таких вещей(((

Спустя 1 час, 8 минут, 52 секунды (11.03.2009 - 16:00) twin написал(а):
Вообще, как я понял, на нашем форуме не принято обращаться на Вы. А то я правда начинаю себя каким то гуру чувствовать, хотя на самом деле еще только учусь. smile.gif
Ну вот примерно так надо, првда не проверял:
Свернутый текст
PHP
<?php
session_start
();
?>
<table align="center">
  <tr>
<form method="post" action="search.php">
    <td><input type=text name='search'></td>
    <td><input type=submit name='ok' value='Поиск'></td>
</form>
</tr></table>
<table border="1" align="center">
<?php

include('config.php'); 

$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
/* Выполнение SQL запроса */ 
//делаем сортировку
$select = isset($_GET['select'])?$_GET['select']:NULL;

switch(
$select)
{
case 
1:
$order "ORDER BY `Bibl_shifr`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;

case 
3:
$order "ORDER BY `Zaglavie`";
break;

case 
4:
$order "ORDER BY `Izdatelstvo`";
break;

case 
5:
$order "ORDER BY `God_izdania`";
break;

case 
6:
$order "ORDER BY `Kol_stranic`";
break;

default:
$order NULL;
}

$_SESSION['search'] = isset($_POST['search'])?mysql_escape_string($_POST['search']):$_SESSION['search'];

if (isset(
$_SESSION['search']))
{
$res mysql_query("SELECT * FROM Izdanie WHERE 
Zaglavie LIKE '%"
.$_SESSION['search']."%' 
OR Avtori LIKE '%"
.$_SESSION['search']."%' 
OR Izdatelstvo LIKE '%"
.$_SESSION['search']."%' 
OR Bibl_shifr LIKE '%"
.$_SESSION['search']."%'".$order) or die(mysql_error());
    if (
$res
    {
    
$nums mysql_num_rows($res);  
    echo 
"Найдено: $nums книг.<br /><br />";
    echo 
"<tr>
              <td><b><a href='?select=1'>Библ. шифр</a></b></td>
              <td><b><a href='?select=2'>Автор</a></b></td>
              <td><b><a href='?select=3'>Заглавие</a></b></td>              
              <td><b><a href='?select=4'>Издательство</a></b></td>
              <td><b><a href='?select=5'>Год издания</a></b></td>
              <td><b><a href='?select=6'>Страниц</a></b></td>
              </tr>"
;
        while (
$row mysql_fetch_assoc($res)) 
        {
        echo 
"<tr>
              <td>{$row['Bibl_shifr']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Zaglavie']}</td>
              <td>{$row['Izdatelstvo']}</td>
              <td>{$row['God_izdania']}</td>
              <td>{$row['Kol_stranic']}</td>
              </tr>"
;
        }
    }    
    else
    {
    echo 
"Не найдено";
    }

}
Тут важный момент - сессию стартовать надо ДО вывода, лучше прямо первой строкой. Иначе будет нотис.

Спустя 21 минута, 18 секунд (11.03.2009 - 16:21) Bladiks написал(а):
сделал. но всеравно не сортирует... (( может есть какие-то команды для отладки.. что-б посмотреть почему ничего не происходит?
Файл здесь - Поиск

Спустя 7 минут, 7 секунд (11.03.2009 - 16:28) twin написал(а):
Для отладки надо просто выводить значения переменных поэтапно. Вот сейчас надо посмотреть, что в $_SESSION['search']

PHP
$_SESSION['search'] = isset($_POST['search'])?mysql_escape_string($_POST['search']):$_SESSION['search'];
echo 
"Что у нас тут? "$_SESSION['search'];


Спустя 21 минута, 36 секунд (11.03.2009 - 16:50) Bladiks написал(а):
Посмотрел - там нормальный поисковый запрос. ВСе в порядке.. как дальше смотреть? Может свитч ничего не делает?

Спустя 21 минута, 53 секунды (11.03.2009 - 17:12) twin написал(а):
А вот и не в порядке. Переменная сессии должна сохраняться при переходе по ссылке, а она где то теряется. А потому теряется, что это все в разных файлах, как я понял. Так вот сессию надо стартовать в каждом файле.
А если в одном, то попробуй так, без адреса:
HTML
<form method="post" action="">

Спустя 17 минут, 42 секунды (11.03.2009 - 17:30) Bladiks написал(а):
Не помогло((( кстати файл у меня один...
Вот код:
PHP
<?php
session_start
();
?>
<table align="center">
  <tr>
<form method="post" action="">
    <td><input type=text name='search'></td>
    <td><input type=submit name='ok' value='Поиск'></td>
</form>
</tr></table>
<table border="1" align="center">
<?php

include('config.php'); 

$dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к базе.");
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
/* Выполнение SQL запроса */ 
//делаем сортировку
$select = isset($_GET['select'])?$_GET['select']:NULL;

switch(
$select)
{
case 
1:
$order "ORDER BY `Bibl_shifr`";
break;

case 
2:
$order "ORDER BY `Avtori`";
break;

case 
3:
$order "ORDER BY `Zaglavie`";
break;

case 
4:
$order "ORDER BY `Izdatelstvo`";
break;

case 
5:
$order "ORDER BY `God_izdania`";
break;

case 
6:
$order "ORDER BY `Kol_stranic`";
break;

default:
$order NULL;
}

$_SESSION['search'] = isset($_POST['search'])?mysql_escape_string($_POST['search']):$_SESSION['search'];
echo 
"Что там?"$_SESSION['search'];

if (isset(
$_SESSION['search']))
{
$res mysql_query("SELECT * FROM Izdanie WHERE 
Zaglavie LIKE '%"
.$_SESSION['search']."%' 
OR Avtori LIKE '%"
.$_SESSION['search']."%' 
OR Izdatelstvo LIKE '%"
.$_SESSION['search']."%' 
OR Bibl_shifr LIKE '%"
.$_SESSION['search']."%'".$order) or die(mysql_error());
    if (
$res
    {
    
$nums mysql_num_rows($res);  
    echo 
"Найдено: $nums книг.<br /><br />";
    echo 
"<tr>
              <td><b><a href='?select=1'>Библ. шифр</a></b></td>
              <td><b><a href='?select=2'>Автор</a></b></td>
              <td><b><a href='?select=3'>Заглавие</a></b></td>              
              <td><b><a href='?select=4'>Издательство</a></b></td>
              <td><b><a href='?select=5'>Год издания</a></b></td>
              <td><b><a href='?select=6'>Страниц</a></b></td>
              </tr>"
;
        while (
$row mysql_fetch_assoc($res)) 
        {
        echo 
"<tr>
              <td>{$row['Bibl_shifr']}</td>
              <td>{$row['Avtori']}</td>
              <td>{$row['Zaglavie']}</td>
              <td>{$row['Izdatelstvo']}</td>
              <td>{$row['God_izdania']}</td>
              <td>{$row['Kol_stranic']}</td>
              </tr>"
;
        }
    }    
    else
    {
    echo 
"Не найдено";
    }

}
<?
session_start();

$_SESSION['search'] = isset($_POST['search'])?mysql_escape_string($_POST['search']):$_SESSION['search'];
echo "Что у нас тут? ", $_SESSION['search'];
?>
<a href='?'>Ссылка</a><br />
<form method="post" action="">
    <td><input type=text name='search'></td>
    <td><input type=submit name='ok' value='Поиск'></td>
</form>

Спустя 44 минуты, 28 секунд (11.03.2009 - 18:44) Bladiks написал(а):
Запустил, показывает результат поиска...
Вот тока я не понял. зачем
PHP
<a href='?'>Ссылка</a>
нужно, и что мы проверили? ))))
Пример тут

Спустя 5 минут, 58 секунд (11.03.2009 - 18:50) twin написал(а):
Ёмаё. Вот ведь где собака зарылась:
PHP
$search = isset($_POST['search'])?mysql_escape_string($_POST['search']):NULL;
Это зачем сейчас то? Это надо убрать.
А вообще дело не в этом. Попробуй пробел поставить тут, и вообще так::
PHP
$order = " ORDER BY `Bibl_shifr` ASC"

Спустя 9 минут, 31 секунда (11.03.2009 - 18:59) Bladiks написал(а):
О... спасибо! Шикарно! Все работает! )))) Я думал что эта строка нужна для инициализации переменной...

Спустя 4 дня, 19 часов, 22 минуты, 44 секунды (16.03.2009 - 14:22) Bladiks написал(а):
А вот как-бы сделать что-б была возможность пролистывать постранично результаты? Я так понимаю нужно условия какие-то писать?

Спустя 2 часа, 48 минут, 5 секунд (16.03.2009 - 17:10) twin написал(а):
Это нужна функция постраничного вывода. Я могу подарить свой класс, только лишнее уберу, а то он большеват будет.

Спустя 17 часов, 2 минуты, 57 секунд (17.03.2009 - 10:13) Bladiks написал(а):
Буду очень признателен))))

Спустя 15 дней, 4 часа, 20 минут, 37 секунд (2.04.2009 - 13:34) Bladiks написал(а):
Эх... не видать мне класса?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.