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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: специальный вывод
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:06:19
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Доброго времени суток!
есть прога для сайта автозапчастей :

CODE (html):
скопировать код в буфер обмена
  1.   <form method="get" ACTION="search.php">
  2.           <p>
  3.             <input  type="text" class="inp" name="code"  style="background:whitesmoke;font-weight:bold;padding-top:3px;width:180px"/>
  4.             <input type="submit" class="search-button" value="поиск" style="width:100px"/>
  5.           </p>
  6.             </form>
  7. <?php
  8.  require("db.php");
  9.  $code =$_GET ['code'];
  10.  
  11. $result1 =mysql_query( "SELECT * FROM price WHERE name = '$code' ") or die(mysql_error());
  12.  
  13. {
  14.         ?>
  15.           <table width="100%" border="1" cellpadding="15">
  16.                     <tr>
  17.                         <th width="13%">Фирма</th>
  18.                         <th width="13%">Артикул</th>
  19.                         <th width="47%">Наименование</th>
  20.                         <th width="10%">Цена</th>
  21.                         <th width="7%">Кол-во</th>
  22.                         <th width="9%">Сроки</th>
  23.                 <?php
  24. while($row = mysql_fetch_assoc($result1))      
  25. {      
  26.                                                                        echo '<tr><td>'.$row['art'].'</td>';
  27.                                         echo '<td>'.$row['name'].'</td>';
  28.                                         echo '<td>'.$row['kol'].'</td>';
  29.                                         echo '<td>'.$row['price'].'</td>';
  30.                                         echo '<td>'.$row['val'].'</td>';
  31.                                                                         echo '<td>'.$row['ed'].'</td></tr>';
  32. }              
  33.   ?>
  34.                 </table>
  35.                 <?php
  36.            }
  37. ?>


все работает нормально все выводит.
Но возникла такая проблема- одна и таже деталь может писатся по разному (sr4248 или sr-4248, 2326600 или 23.266.00, w 818/82 или w81882, 12-01-120 или 1201120) . Так же и в прайсах загружаемых в базу данных они могут быть в разном виде но при этом они должны выводится из БД независимо в каком виде были набраны в поиске.
Для этого я немного переписал прогу:

CODE (htmlphp):
скопировать код в буфер обмена
  1.   <form method="get" ACTION="search.php">
  2.           <p>
  3.             <input type="text" class="inp" name="code"  style="background:whitesmoke;font-weight:bold;padding-top:3px;width:180px"/>
  4.             <input type="submit" class="search-button" value="поиск" style="width:100px"/>
  5.           </p>
  6.             </form>
  7. <?php
  8.  require("db.php");
  9.  $code =$_GET ['code'];
  10.  
  11. $pcode1 = str_replace('-', "", $pcode);
  12. $pcode1 = str_replace('/', "", $pcode);
  13. $pcode1 = str_replace('+', "", $pcode);
  14. $pcode1 = str_replace(' ', "", $pcode);
  15. $pcode1 = str_replace('.', "", $pcode);
  16.  
  17. $result1 =mysql_query( "SELECT * FROM price WHERE name = '$code'") or die(mysql_error());
  18.  
  19. {
  20.         ?>
  21.           <table width="100%" border="1" cellpadding="15">
  22.                     <tr>
  23.                         <th width="13%">Фирма</th>
  24.                         <th width="13%">Артикул</th>
  25.                         <th width="47%">Наименование</th>
  26.                         <th width="10%">Цена</th>
  27.                         <th width="7%">Кол-во</th>
  28.                         <th width="9%">Сроки</th>
  29.                 <?php
  30. while($row = mysql_fetch_assoc($result1))      
  31. {      
  32. $p = $row['name'];
  33. $p = str_replace('/', "", $p);
  34. $p = str_replace('+', "", $p);
  35. $p = str_replace(' ', "", $p);
  36. $p = str_replace('.', "", $p);
  37. $p = str_replace('-', "", $p);
  38. if ($pcode1==$p)
  39. {
  40.                                                                        echo '<tr><td>'.$row['art'].'</td>';
  41.                                         echo '<td>'.$row['name'].'</td>';
  42.                                         echo '<td>'.$row['kol'].'</td>';
  43.                                         echo '<td>'.$row['price'].'</td>';
  44.                                         echo '<td>'.$row['val'].'</td>';
  45.                                                                        echo '<td>'.$row['ed'].'</td></tr>';
  46. }
  47. }              
  48.  ?>
  49.                 </table>
  50.                 <?php
  51.            }
  52. ?>


вроде все работает как надо, но жутко тормозит когда начинаю заполнять БД прайсами.
Есть ли какой нибудь не очень сложный способ исправить эту ситуацию.
Заранее спасибо.


Отредактировано модератором: Мелкий, 03 Февраля, 2012 - 13:29:11
 
 Top
Zuldek
Отправлено: 03 Февраля, 2012 - 13:22:32
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. вроде все работает как надо, но жутко тормозит когда начинаю заполнять БД прайсами.

1. Указанный вами код не заполняет бд прайсами поэтому непонятно какое отношения к нему имеет загрузка прайсов и связанные с этим "тормоза".
2. Рекомендую приводить данный перед загрузкой в базу к единому виду, а не обрезать их перед выводом. Потому что в этом случае вам придется произвести эту операцию только один раз, а не каждый раз перед выводом результатов поиска.
 
 Top
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:25:21
Post Id


Новичок


Покинул форум
Сообщений всего: 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 записей и поэтому прога очень сильно тормозит при поиске.
 
 Top
Мелкий Супермодератор
Отправлено: 03 Февраля, 2012 - 13:30:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




0) Индекс по полю name есть?
1) удалять лишние символы вам всё равно придётся на этапе добавления в базу информации. Иначе тупо ничего не будет найдено, кроме тех, что и при внесении не были бы изменены.


-----
PostgreSQL DBA
 
 Top
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:32:05
Post Id


Новичок


Покинул форум
Сообщений всего: 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 */;

?>
 
 Top
Реф
Отправлено: 03 Февраля, 2012 - 13:45:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 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 ещё типы есть? Радость


-----
Думать надо головой, а не головкой!
 
 Top
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:47:25
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Спасибо за совет!
(Добавление)
Реф пишет:
А кроме varchar ещё типы есть?

Думаю есть но я в это еще плохо разбираюсь. Посмотрел вроде под маю задачу подходить и ладно.
 
 Top
Zuldek
Отправлено: 03 Февраля, 2012 - 13:53:28
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)





скоро дойдете до LIKE и шаблонов и будет вообще все здорово Радость

(Отредактировано автором: 03 Февраля, 2012 - 13:53:46)

 
 Top
konstantinch80
Отправлено: 03 Февраля, 2012 - 13:59:19
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Реф пишет:
А кроме varchar ещё типы есть?

посоветуйте может есть более подходящий тип для полей ?
(Добавление)
Zuldek пишет:
скоро дойдете до LIKE и шаблонов и будет вообще все здорово

уже дошло:
$result3 =mysql_query( "SELECT * FROM price_kuz WHERE $tabl like '%$pcode%'") or die(mysql_error());
а вот в шаблоны я еще пока не въехал.
 
 Top
Реф
Отправлено: 03 Февраля, 2012 - 14:12:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 159
Дата рег-ции: Июль 2010  
Откуда: Реутов, Россия


Помог: 0 раз(а)




konstantinch80 пишет:
может есть более подходящий тип для полей ?

есть

Чтобы конкретно что-то советовать, нужно знать что конкретно вы храните в полях (с примерами и диапазонами).
Например, если цену храните просто как число (без денежных единиц) и диапазон 0 - 99999, то подойдёт UNSIGNED INT(5) (UNSIGNED INT(6), если хотите с запасом).

(Отредактировано автором: 03 Февраля, 2012 - 14:14:30)



-----
Думать надо головой, а не головкой!
 
 Top
konstantinch80
Отправлено: 03 Февраля, 2012 - 14:23:57
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




art name kol price val ed
фирма номер детали название цена наличие сроки
Audi 4z7616051d Пневмобаллон 95085,68 есть 1-2 дня
Audi 4z7698507 ремкомплект 4168,26 есть 1-2 дня

такой вид таблицы
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB