Поиск по строкам
1.
Дмитрий (10.02.2010 / 20:28)
Пишу базу телефонных номеров. Интересует вопрос. Как организовать поиск по строкам в файле, чтобы в результате выводило все строки с совпадением? Можно организовать поиск по нескольким ячейкам одновременно?
2.
Дмитрий (10.02.2010 / 20:32)
Допустим файл состоит из таких строк:
Телефон|Фамилия|Имя|Отчечтво|Улица|Дом
Телефон|Фамилия|Имя|Отчечтво|Улица|Дом
Телефон|Фамилия|Имя|Отчечтво|Улица|Дом
Телефон|Фамилия|Имя|Отчечтво|Улица|Дом
Телефон|Фамилия|Имя|Отчечтво|Улица|Дом
Можно организовать поиск по всем ячейкам сразу, и чтобы выводило список со всеми совпадениями, максимальные совпадения - вверху. Если совпали все ячейки - то выводит только 1 эту строку. Как задать такое условие?
3.
ramzes (10.02.2010 / 20:55)
Использовать мускул.
Файлы для такого просто неразумно использовать.
Будет грузить.
4.
Дмитрий (10.02.2010 / 21:12)
3.
ramzes, я не знаю его совсем...
5.
ramzes (10.02.2010 / 21:38)
Это легко.
<?
$sql = new mysqli('localhost','user','password','db') or die('error database connect'); // соединение с сервером
$sql->query("CREATE TABLE numbers (id int(16) NOT NULL AUTO INCREMENT, num int(11), name TEXT, family TEXT, otchestvo TEXT, sity TEXT, street TEXT, PRIMARY KEY (id))"); // создаем таблицу (один раз)
$sql->query("INSERT INTO numbers SET num = '92612374678', name = 'KOLYA';"); // добавляем новую запись
$arr = $sql->query("SELECT * FROM numbers WHERE LIKE '%123%' LIMIT 5;"); // ищем 5 похожих номеров
while($result = $arr->fetch_assoc()){
print_r($result); // выводим результат в цикле
}
примерно вот так. На скорую руку.
6.
Удаленный (10.02.2010 / 21:44)
4.
LondoN_tm,
<?php
$db = file("base.txt");
$num = '1'; //номер ячейки, в которой ищешь. лучше сделать так чем поиск по всем ячейкам
$search = "IVANOV"; //то, что ищешь
for ($i=0; $i<count($db); $i++)
{
$x = explode("|", $db[$i]);
if (strtolower($search)==strtolower($x[$num])) echo '<b>'.($i+1).')</b> '.$x[0].'<br/>';
}
?>
будет выводить все номера, которые записаны на фамилию IVANOV. Но лучше выучи мускул))
7.
ramzes (10.02.2010 / 21:55)
#6 только в цикле мне кажется коунт вызывать это не правильно.
1000 записей - тысяча запусков коунт'а.
если по всем ячейкам искать то
foreach($db as $line){
if(stristr($line,$query)){
echo $line;
}}
примерно так можно, но все таки для такого лучше мускул..
Файлы много памяти жрут
8.
Дмитрий (11.02.2010 / 08:36)
Спасибо большое. Мускул у потихоньку учу, по мере возможности.
Буду пробовать)
Vetas, +1 поставил, Рамзес, извини, пока не набрал 20 плюсов, чтоб тебя отблагодарить...
9.
Артур (11.02.2010 / 08:38)
Мускул, АднАзнАчнА мускул!
URL:
https://visavi.net/topics/5925