Все ленты — последние статьи

*Таблицы HTML в примерах

Перевод Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Центр Информационных Технологий, НГТУ

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

 

Подробнее: *Таблицы HTML в примерах

# Заметки о сайтостроении

***

создаем модуль , Положение: пишем в него content-modul

 { loadposition content-modul }

 

****

http://cssdeck.com/labs/17axjoxn  Часы

 

****

 

В общем есть таблица `student` (`id`, `fio`, `grup`, `namenum`, `poz`, `school`, `poditel`, `parent`, `tel`, `sex`)
Подскажите где почитать\посмотреть как сделать, что бы через форму можно было найти по fio и вывести все остальные значения `fio`, `grup`, `namenum`, `poz`, `school`, `poditel`, `parent`, `tel`, `sex`
Собственно просто выборка

 

mysql_select("select * from `student` where `fio` like '%" . mysql_escape_string($_POST['fio']) . "%'");

 

Это поиск по фамилии…

 

<form action="post">
<input type="text" name="fio" />
<input type="submit" />
</form>

 

 

http://www.mysql.ru/docs/man/Fulltext_Search.html

6.8 Полнотекстовый поиск в MySQL

Что касается MySQL 3.23.23, то эта версия MySQL поддерживает полнотекстовый поиск и индексацию. Полнотекстовые индексы в MySQL обозначаются как индексы типа FULLTEXT. Эти индексы могут быть созданы в столбцах VARCHAR и TEXT во время создания таблицы командойCREATE TABLE или добавлены позже с помощью команд ALTER TABLE или CREATE INDEX. Загрузка больших массивов данных в таблицу будет происходить намного быстрее, если таблица не содержит индекс FULLTEXT, который затем создается командой ALTER TABLE (или CREATE INDEX). Загрузка данных в таблицу, уже имеющую индекс FULLTEXT, будет более медленной.

Полнотекстовый поиск выполняется с помощью функции MATCH().

mysql> CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles VALUES
(0,'MySQL Tutorial', 'DBMS stands for DataBase …'),
(0,'How To Use MySQL Efficiently', 'After you went through a …'),
(0,'Optimising MySQL','In this tutorial we will show …'),
(0,'1001 MySQL Trick','1. Never run mysqld as root. 2. …'),
(0,'MySQL vs. YourSQL', 'In the following database comparison …'),
(0,'MySQL Security', 'When configured properly, MySQL …');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles
WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title | body |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison … |
| 1 | MySQL Tutorial | DBMS stands for DataBase … |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)

Функция MATCH() выполняет поиск в естественном языке, сравнивая строку с содержимым текста (совокупность одного или более столбцов, включенных в индекс FULLTEXT). Строка поиска задается как аргумент в выражении AGAINST(). Поиск выполняется без учета регистра символов. Для каждой строки столбца в заданной таблице команда MATCH() возвращает величину релевантности, т.е. степень сходства между строкой поиска и текстом, содержащимся в данной строке указанного в списке оператора MATCH() столбца.

Когда команда MATCH() используется в выражении WHERE (см. пример выше), возвращенные строки столбцов автоматически сортируются, начиная с наиболее релевантных. Величина релевантности представляет собой неотрицательное число с плавающей точкой. Релевантность вычисляется на основе количества слов в данной строке столбца, количества уникальных слов в этой строке, общего количества слов в тексте и числа документов (строк), содержащих отдельное слово.

Поиск возможен также в логическом режиме, это объясняется ниже в данном разделе.

Предыдущий пример представляет собой общую иллюстрацию использования функции MATCH(). Строки возвращаются в порядке уменьшения релевантности.

В следующем примере показано, как извлекать величины релевантности в явном виде. В случае отсутствия выражений WHERE и ORDER BYвозвращаемые строки не упорядочиваются.

mysql> SELECT id,MATCH (title,body) AGAINST ('Tutorial') FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
| 1 | 0.64840710366884 |
| 2 | 0 |
| 3 | 0.66266459031789 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+-----------------------------------------+
6 rows in set (0.00 sec)

Следующий пример — более сложный. Запрос возвращает значение релевантности и, кроме того, сортирует строки в порядке убывания релевантности. Чтобы получить такой результат, необходимо указать MATCH() дважды. Это не приведет к дополнительным издержкам, так как оптимизатор MySQL учтет, что эти два вызова MATCH() идентичны, и запустит код полнотекстового поиска только однажды.

mysql> SELECT id, body, MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| id | body | score |
+----+-------------------------------------+-----------------+
| 4 | 1. Never run mysqld as root. 2. … | 1.5055546709332 |
| 6 | When configured properly, MySQL … | 1.31140957288 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)

Для разбивки текста на слова MySQL использует очень простой синтаксический анализатор. ``Словом'' является любая последовательность символов, состоящая из букв, чисел, знаков `'' и `_'. Любое ``слово'', присутствующее в стоп-списке (stopword) или просто слишком короткое (3 символа или меньше), игнорируется.

Каждое правильное слово в наборе проверяемых текстов и в данном запросе оценивается в соответствии с его важностью в этом запросе или наборе текстов. Таким образом, слово, присутствующее во многих документах, будет иметь меньший вес (и даже, возможно, нулевой), как имеющее более низкое смысловое значение в данном конкретном наборе текстов. С другой стороны, редко встречающееся слово получит более высокий вес. Затем полученные значения весов слов объединяются для вычисления релевантности данной строки столбца.

Описанная техника подсчета лучше всего работает для больших наборов текстов (фактически она именно для этого тщательно настраивалась). Для очень малых таблиц распределение слов не отражает адекватно их смысловое значение, и данная модель иногда может выдавать некорректные результаты.

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('MySQL');
Empty set (0.00 sec)

Поиск по слову ``MySQL'' в предыдущем примере не приводит к каким-либо результатам, так как это слово присутствует более чем в половине строк. По существу, данное слово целесообразно трактовать как стоп-слово (т.е. слово с нулевой смысловой ценностью). Это наиболее приемлемое решение — запрос на естественном языке не должен возвращать каждую вторую строку из таблицы размером 1Гб.

Маловероятно, что слово, встречающееся в половине строк таблицы, определяет местонахождение релевантных документов. На самом деле, наиболее вероятно, что будет найдено много не относящихся к делу документов. Общеизвестно, что такое случается слишком часто при попытке найти что-либо в Интернет с помощью поисковых машин. Именно на этом основании подобным строкам должно быть назначено низкое смысловое значение в данном конкретном наборе данных.

В MySQL 4.0.1 возможен полнотекстовый поиск также и в логическом режиме с использованием модификатора IN BOOLEAN MODE.

mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+------------------------------+-------------------------------------+
| id | title | body |
+----+------------------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase … |
| 2 | How To Use MySQL Efficiently | After you went through a … |
| 3 | Optimising MySQL | In this tutorial we will show … |
| 4 | 1001 MySQL Trick | 1. Never run mysqld as root. 2. … |
| 6 | MySQL Security | When configured properly, MySQL … |
+----+------------------------------+-------------------------------------+

Данный запрос вывел все строки, содержащие слово ``MySQL'' (заметьте, 50-процентная пороговая величина здесь не используется), но эти строки не содержат слова ``YourSQL''. Следует отметить, что логический режим поиска не сортирует автоматически строки в порядке уменьшения релевантности. Это видно по результату предыдущего запроса, где строка с наиболее высокой релевантностью (содержащая слово ``MySQL'' дважды) помещена последней, а не первой. Логический режим полнотекстового поиска может работать даже без индекса FULLTEXT, хотя и очень медленно.

В логическом режиме полнотекстового поиска поддерживаются следующие операторы:

+
Предшествующий слову знак ``плюс'' показывает, что это слово должно присутствовать в каждой возвращенной строке.
-
Предшествующий слову знак ``минус'' означает, что это слово не должно присутствовать в какой-либо возвращенной строке.
По умолчанию (если ни плюс, ни минус не указаны) данное слово является не обязательным, но содержащие его строки будут оцениваться более высоко. Это имитирует поведение команды MATCH() … AGAINST() без модификатора IN BOOLEAN MODE.
< >
Эти два оператора используются для того, чтобы изменить вклад слова в величину релевантности, которое приписывается строке. Оператор < уменьшает этот вклад, а оператор > - увеличивает его. См. пример ниже.
( )
Круглые скобки группируют слова в подвыражения.
~
Предшествующий слову знак ``тильда'' воздействует как оператор отрицания, обуславливая негативный вклад данного слова в релевантность строки. Им отмечают нежелательные слова. Строка, содержащая такое слово, будет оценена ниже других, но не будет исключена совершенно, как в случае оператора — ``минус''.
*
Звездочка является оператором усечения. В отличие от остальных операторов, она должна добавляться в конце слова, а не в начале.
"
Фраза, заключенная в двойные кавычки, соответствует только строкам, содержащим эту фразу, написанную буквально.

Ниже приведен ряд примеров:

apple banana
находит строки, содержащие по меньшей мере одно из этих слов.
+apple +juice
… оба слова.
+apple macintosh
… слово ``apple'', но ранг строки выше, если она также содержит слово ``macintosh''.
+apple -macintosh
… слово ``apple'', но не ``macintosh''.
+apple +(>pie <strudel)
… ``apple'' и ``pie'', или ``apple'' и ``strudel'' (в любом порядке), но ранг ``apple pie'' выше, чем ``apple strudel''.
apple*
… ``apple'', ``apples'', ``applesauce'', и ``applet''.
"some words"
… ``some words of wisdom'', но не ``some noise words''.

http://www.mysql.ru/docs/man/String_comparison_functions.html

 

6.3.2.1 Функции сравнения строк

Обычно если при выполнении сравнения строк одно из выражений является зависимым от регистра, то сравнение выполняется также с учетом регистра.

expr LIKE pat [ESCAPE 'escape-char']
Функция производит сравнение с шаблоном, используя операции сравнения простых регулярных выражений в SQL. Возвращает 1 (ИСТИНА) или 0 (ЛОЖЬ). Выражение LIKE предусматривает использование следующих двух шаблонных символов в pat:
Символ Описание
% Соответствует любому количеству символов, даже нулевых
_ Соответствует ровно одному символу
mysql> SELECT 'David!' LIKE 'David_';
-> 1
mysql> SELECT 'David!' LIKE '%D%v%';
-> 1
Если требуется исследовать литералы при помощи шаблонного символа, следует предварить шаблонный символ экранирующим символом. Если экранирующий символ конкретно не указывается, то подразумевается применение символа `\':
Строка Описание
\% Соответствует одному символу `%'
\_ Соответствует одному символу `_'
mysql> SELECT 'David!' LIKE 'David\_';
-> 0
mysql> SELECT 'David_' LIKE 'David\_';
-> 1
Для указания конкретного экранирующего символа используется выражение ESCAPE:
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
-> 1
В следующих двух примерах показано, что сравнение строк производится с учетом регистра, если ни один из операндов не является строкой с двоичными данными:
mysql> SELECT 'abc' LIKE 'ABC';
-> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
-> 0
В функции LIKE допускаются даже числовые выражения! (Это расширение MySQL по сравнению с ANSI SQL LIKE.)
mysql> SELECT 10 LIKE '1%';
-> 1
Примечание: поскольку в MySQL применяются правила экранирования в строках, применяемые в языке C (например, `\n'), необходимо дублировать все символы `\', используемые в строках функции LIKE. Например, для поиска сочетания символов `\n' его необходимо указать как `\\n'. Чтобы выполнить поиск символа `\', он должен быть указан как `\\\\' (обратные слеши удаляются дважды: сначала синтаксическим анализатором, а потом — при выполнении сравнения с шаблоном, таким образом остается только один обратный слеш, который и будет обрабатываться).
expr NOT LIKE pat [ESCAPE 'escape-char']
То же, что и NOT (expr LIKE pat [ESCAPE 'escape-char']).
expr REGEXP pat
expr RLIKE pat
Выполняет сравнение строкового выражения expr с шаблоном pat. Шаблон может представлять собой расширенное регулярное выражение. See section G Регулярные выражения в MySQL. Возвращает 1, если expr соответствует pat, в противном случае - 0. ФункцияRLIKE является синонимом для REGEXP, она предусмотрена для совместимости с mSQL. Примечание: поскольку в MySQL используются правила экранирования в строках, применяемые в языке C (например, `\n'), необходимо дублировать все символы `\', используемые в строках функции REGEXP. Что касается версии MySQL 3.23.4, функция REGEXP является независимой от регистра для нормальных строк (т.е. строк не с двоичными данными):
mysql> SELECT 'Monty!' REGEXP 'm%y%%';
-> 0
mysql> SELECT 'Monty!' REGEXP '.*';
-> 1
mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
-> 1
mysql> SELECT "a" REGEXP "A", "a" REGEXP BINARY "A";
-> 1 0
mysql> SELECT "a" REGEXP "^[a-d]";
-> 1
В REGEXP и RLIKE используется текущий набор символов (ISO-8859-1 Latin1 по умолчанию),
expr NOT REGEXP pat
expr NOT RLIKE pat
То же, что и NOT (expr REGEXP pat).
STRCMP(expr1,expr2)
Функция STRCMP() возвращает: 0, если строки идентичны, -1 - если первый аргумент меньше второго (в соответствии с имеющимся порядком сортировки), и 1 - в остальных случаях:
mysql> SELECT STRCMP('text', 'text2');
-> -1
mysql> SELECT STRCMP('text2', 'text');
-> 1
mysql> SELECT STRCMP('text', 'text');
-> 0
MATCH (col1,col2,…) AGAINST (expr)
MATCH (col1,col2,…) AGAINST (expr IN BOOLEAN MODE)
Функция MATCH … AGAINST() используется для полнотекстового поиска и возвращает величину релевантности — степень сходства между текстом в столбцах (col1,col2,…) и запросом expr. Величина релевантности представляет собой положительное число с плавающей точкой. Нулевая релевантность означает отсутствие сходства. Функция MATCH … AGAINST() работает в версиях MySQL 3.23.23 или более поздних. Расширение IN BOOLEAN MODE было добавлено в версии 4.0.1. Более подробное описание и примеры использования приведены в разделе section 6.8 Полнотекстовый поиск в MySQL.

****

Позволю себе запостить пример, приведенный выше, немного исправленный, с использованием mysql, который не рекомендуется к использованию:

$sdd_db_host=''; // ваш хост
$sdd_db_name=''; // ваша бд
$sdd_db_user=''; // пользователь бд
$sdd_db_pass=''; // пароль к бд
$conn = mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass); // коннект с сервером бд
if(!$conn)
{
    throw new Exception('Не удалось подключиться к базе данных! Проверьте параметры подключения');
}
if(!mysql_select_db($sdd_db_name, $conn)) // выбор бд
{
    throw new Exception("Не удалось выбрать базу данных {$ssd_db_name}!");
}
$result = mysql_query('SELECT * FROM `table_name`', $conn); // запрос на выборку
if(!$result)
{
    throw new Exception(sprintf('Не удалось выполнить запрос к БД, код ошибки %d, текст ошибки: %s', mysql_errno($conn), mysql_error($conn)));
}

while($row = mysql_fetch_array($result))
{
    echo '<p>Запись id='.$row['id'].'. Текст: '.$row['text'].'</p>';// выводим данные
}

**********

 

привязать к выводу внешний css-файл, например сменить шрифт выводимой скриптом информации

 

<html>
<head>
<link rel="stylesheet" href="/ie.css">
</head>
<body>

<?php /* код… */ ?>

</body>
</html>

 

   ***************

 

 

 

 

*jqGrid: редактирование табличных данных с помощью inline редакторов (mysql+php+css+jQuery)

С подключением баз таблица

Демо. http://demosites.simplecoding.org/jqgrid/

Исходники скачать 

В одной из прошлых статей (jQuery Grid Plugin — "продвинутое" решение для создания таблиц) я рассказывал об использовании jqGrid для создания таблиц.

jqGrid представляет собой плагин к библиотеке jQuery предназначенный для работы с таблицами. С его помощью можно создавать многостраничные таблицы, выполнять сортировку и, конечно, редактировать данные.

Подробнее: *jqGrid: редактирование табличных данных с помощью inline редакторов (mysql+php+css+jQuery)

*DataTables -это плагин для javascript-библиотеки jQuery, сортировка таблиц и постраничный вывод

DataTables — это плагин для javascript-библиотеки jQuery. Инструмент очень гибок, и позволяет вам производить расширенное взаимодействие между таблицами HTML.

Пришлось повозится с ним, на многих сайтах они не рабочие, я сделал два архива один рабочий и хлам с другими статьями.

Первоисточник вроде http://www.datatables.net/ И он падла стал вроде платный в новых версиях, выложил что рабочее и бесплатно

Добавлю несколько статей с разных источников, начиная с лучших

Подробнее: *DataTables -это плагин для javascript-библиотеки jQuery, сортировка таблиц и постраничный вывод

*Анимированное сортирование таблиц JS

Этот плагин позволяет вам анимировано сортировать таблицы на основе содержимого/значения, по убыванию и так далее. Различные td перелетают на новые позиции, создавая привлекательный эффект. Плагин также поддерживает совпадения по REGEXP.

Материал уже утерян в интернет, нашел только на рабочем сайте одном и сохранил целую страницу + исходики что нужно без демо СКАЧАТЬ

Сортирует по кликам названия таблицы, анимация эффектная.