Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: PHP вывод данных из MySQL
$result1 =mysql_query("SELECT * FROM price WHERE name = '$code' ") or die(mysql_error());
{
?>
<tablewidth="100%"border="1"cellpadding="15">
<tr>
<thwidth="13%">Фирма</th>
<thwidth="13%">Артикул</th>
<thwidth="47%">Наименование</th>
<thwidth="10%">Цена</th>
<thwidth="7%">Кол-во</th>
<thwidth="9%">Сроки</th>
<?php
while($row = mysql_fetch_assoc($result1))
{
echo '<tr><td>'.$row['art'].'</td>';
echo '<td>'.$row['name'].'</td>';
echo '<td>'.$row['kol'].'</td>';
echo '<td>'.$row['price'].'</td>';
echo '<td>'.$row['val'].'</td>';
echo '<td>'.$row['ed'].'</td></tr>';
}
?>
</table>
<?php
}
?>
все работает нормально все выводит.
Но возникла такая проблема- одна и таже деталь может писатся по разному (sr4248 или sr-4248, 2326600 или 23.266.00, w 818/82 или w81882, 12-01-120 или 1201120) . Так же и в прайсах загружаемых в базу данных они могут быть в разном виде но при этом они должны выводится из БД независимо в каком виде были набраны в поиске.
Для этого я немного переписал прогу:
вроде все работает как надо, но жутко тормозит когда начинаю заполнять БД прайсами.
Есть ли какой нибудь не очень сложный способ исправить эту ситуацию.
Заранее спасибо.Отредактировано модератором: Мелкий, 03 Февраля, 2012 - 13:29:11
Zuldek
Отправлено: 03 Февраля, 2012 - 13:22:32
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
вроде все работает как надо, но жутко тормозит когда начинаю заполнять БД прайсами.
1. Указанный вами код не заполняет бд прайсами поэтому непонятно какое отношения к нему имеет загрузка прайсов и связанные с этим "тормоза".
2. Рекомендую приводить данный перед загрузкой в базу к единому виду, а не обрезать их перед выводом. Потому что в этом случае вам придется произвести эту операцию только один раз, а не каждый раз перед выводом результатов поиска.
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:25:21
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
прайсы уже загружены в БД речь идет о поиске информации в БД по разным запросам. Нужно что бы при поиске детали (sr4248 или sr-4248) выводились все варианты. которые в БД могут быть загружены тоже в разных видах. Так как у разных поставщиков разные прайсы. В некоторых прайсайсах загружаемых в БД номера деталей прописаны сплошником (sr4248 , 2326600 , w81882, 1201120) а в некоторых прописаны в другом виде (sr-4248, 23.266.00, w 818/82, 12-01-120). так же и посетители сайта ищут деталь по разным запросам (sr4248 или sr-4248, 2326600 или 23.266.00, w 818/82 или w81882, 12-01-120 или 1201120) (Добавление)
в прайсе может содержаться до 100000 записей и поэтому прога очень сильно тормозит при поиске.
Мелкий
Отправлено: 03 Февраля, 2012 - 13:30:09
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
0) Индекс по полю name есть?
1) удалять лишние символы вам всё равно придётся на этапе добавления в базу информации. Иначе тупо ничего не будет найдено, кроме тех, что и при внесении не были бы изменены.
----- PostgreSQL DBA
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:32:05
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
Тоесть лучше при заполнении БД привести все прайсы в один вид. (Добавление)
mysql_query("CREATE TABLE IF NOT EXISTS `price` (
`id` int(11) NOT NULL auto_increment,
`art` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`kol` varchar(255) NOT NULL,
`price` varchar(255) NOT NULL,
`val` varchar(255) NOT NULL,
`ed` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1");
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
?>
Реф
Отправлено: 03 Февраля, 2012 - 13:45:06
Частый гость
Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010 Откуда: Реутов, Россия
Помог: 0 раз(а)
konstantinch80 пишет:
mysql_query("CREATE TABLE IF NOT EXISTS `price` (
`id` int(11) NOT NULL auto_increment,
`art` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`kol` varchar(255) NOT NULL,
`price` varchar(255) NOT NULL,
`val` varchar(255) NOT NULL,
`ed` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1");
А кроме varchar ещё типы есть?
----- Думать надо головой, а не головкой!
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:47:25
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
Спасибо за совет! (Добавление)
Реф пишет:
А кроме varchar ещё типы есть?
Думаю есть но я в это еще плохо разбираюсь. Посмотрел вроде под маю задачу подходить и ладно.
Zuldek
Отправлено: 03 Февраля, 2012 - 13:53:28
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
скоро дойдете до LIKE и шаблонов и будет вообще все здорово
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
Реф пишет:
А кроме varchar ещё типы есть?
посоветуйте может есть более подходящий тип для полей ? (Добавление)
Zuldek пишет:
скоро дойдете до LIKE и шаблонов и будет вообще все здорово
уже дошло:
$result3 =mysql_query( "SELECT * FROM price_kuz WHERE $tabl like '%$pcode%'") or die(mysql_error());
а вот в шаблоны я еще пока не въехал.
Реф
Отправлено: 03 Февраля, 2012 - 14:12:52
Частый гость
Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010 Откуда: Реутов, Россия
Помог: 0 раз(а)
konstantinch80 пишет:
может есть более подходящий тип для полей ?
есть
Чтобы конкретно что-то советовать, нужно знать что конкретно вы храните в полях (с примерами и диапазонами).
Например, если цену храните просто как число (без денежных единиц) и диапазон 0 - 99999, то подойдёт UNSIGNED INT(5) (UNSIGNED INT(6), если хотите с запасом).
Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
art name kol price val ed
фирма номер детали название цена наличие сроки
Audi 4z7616051d Пневмобаллон 95085,68 есть 1-2 дня
Audi 4z7698507 ремкомплект 4168,26 есть 1-2 дня
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.