Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как организовать вывод 10К++ записей? 
:(
    Опции темы
0Z0NE
Дата 12.6.2012, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



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

В общем суть проблемы, у меня есть на данный момент 106 стран, ~900+ областей, и ~10 000 городов в этих областях, вопрос, как наиболее удобно для пользователя и в то-же время не выжимая все соки из сервера вывести эти данные?

на хостинге нету AJAX, а JavaScript пользователь может отключить, в результате чего вся сортировка уйдет в тар-тарары... перезагружать страницы очень нежелательно...

ну как-то так ... есть еще способы как это можно оккуратненько вывести?
PM MAIL   Вверх
bars80080
Дата 12.6.2012, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(0Z0NE @  12.6.2012,  11:42 Найти цитируемый пост)
на хостинге нету AJAX

враки

Цитата(0Z0NE @  12.6.2012,  11:42 Найти цитируемый пост)
а JavaScript пользователь может отключить

если пользователь хочет себя ограничить в возможностях - его личное дело. имхо, так: для тех кто не отключает - использовать ajax, а для тех кто отключил (не более 5% пользователей), предоставить простое поле ввода, а сортировку выполнять на сервере. в случае некорректного ввода - возвращаемся на страницу ввода и сообщение об ошибке
PM MAIL WWW   Вверх
0Z0NE
Дата 12.6.2012, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Цитата

враки


Да, виноват навреное я не совсем понимаю что есть AJAX...

upd: действительно я был немного не прав... но почитав я понял что рано мне еще такие вещи читать...

тогда что остается? Javascript ?

Это сообщение отредактировал(а) 0Z0NE - 12.6.2012, 19:39
PM MAIL   Вверх
Sanchezzz
Дата 12.6.2012, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Если это какие то селект-инпут с погрузкой то да только с AJAX погрузкой данных.
Желательно селект использовать с выбором и поиском что бы пользователь быстро выбрал нужный город и страну рекомендую селект скачать тут chosen.jquery боевой пример работы недавно делал...


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
bars80080
Дата 12.6.2012, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



аякс - это и есть яваскрипт. это всего одна функция на jquery: $.post()
остаётся всего лишь написать серверный скрипт на пхп, который будет выводить необходимую информацию в нужном виде (html, xml, json и т.п.)

а что вообще надо сделать? может уже готовый jquery.autocomplete решит задачу?
PM MAIL WWW   Вверх
0Z0NE
Дата 12.6.2012, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



задача состоит в следующем: ~120 стран пользователь выбирает свою страну => данные отсеиваются и пользователя уже видны(доступны) лишь регионы(области) выбранной страны(которых порядка 900 штук в общем), далее пользователь выбирает нужную ему область, и видит(получает доступ) к городам выбранной области(которые и являются целью всей этой тягомотины, их примерно 10 000 штук), естественно база данных может быть дополнена\отредактированна, но пока хотя-бы с выводом справиться.

Sanchezzz правильно меня понял, буду пока двигатся в направлении  chosen.jquery, хотя JQ как-то не понимаю, но заставлять пользователя перекопать 10К ++ городов в поисках своего .. ну Сами понимаете))

З.Ы. не совсем понял назначение chosen.jquery, это плагин для изменения внешнего вида что-ли? тогда это не то ...

Это сообщение отредактировал(а) 0Z0NE - 12.6.2012, 21:00
PM MAIL   Вверх
Sanchezzz
Дата 12.6.2012, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



выводишь в 1 селект страны

предположим что ты подключил фреймворк jquery и дополнительную  библиотеку chosen.jquery
выводишь в select все страны

клиет часть 
Код

<select class="chzn-select">
<option value="1">Англия</option>
<option value="2">Россия</option>
<option value="3">Германия</option>
</select>

<div id="model_select">Суда загрузим данные по умолчанию этот текст стереть</div>
<div id="model_select2">Суда загрузим данные по умолчанию этот текст стереть</div>

<script>
$(".chzn-select").chosen().change(function(){  // элемент с классом chzn-select применить обертку chosen и задать событие change ( при смене значения ) 
                var id_obj = $(this).val();  // выбранное значение <option val="1">
                var model_name = $(this).find('option[selected]').text();     
                $('#model_select').html('<img src="/media/loading.gif"> Загрузка ...');  // ищу тег с ID="model_select" вставляю в него прелойдер
                $.ajax({
                  url: "/ajax.php",  // на какую страницу идет  запрос 
                  data: {comand:'city' , 'id': id_obj},  // параметры запроса
                  type : 'post', // тип запроса 
                  success: function(data) { //если данные пришли нормально 
                    $('#model_select').html(data); // вставим их внутрь тега с ID="model_select"
                  }
                });
});
</script>            
            


северная часть файл ajax.php
Код

<?
$comand  = !empty($_POST['comand']) ? $_POST['comand'] : 'error';

if($comand=='city'):

?>
в зависимости от Id страны грузим из БД все области или города или что там тебе нужно и стоим такой же селект как и первый под другим классом или ID
Предположим вывели нужный селект страны он получился длинным и большим...
<select class="gorod2">
<option value="55">Москва</option>
<option value="232">Питер</option>
<option value="7756">Воронеж </option>
</select>
<script>
$(".gorod2").die(); // убить на всякий случ все событие
$(".gorod2").chosen().change(function(){ 
  // тут делаешь по аналоги с первым селектом и так до бесконечности делаешь такую конструкцию
});
</script>
<?endif; 



?>


Вроде доступно объяснил)





--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
0Z0NE
Дата 12.6.2012, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Sanchezzz, Спасибо большое, сходу возникла пара вопросов:

Код

<div id="model_select">Суда загрузим данные по умолчанию этот текст стереть</div>
<div id="model_select2">Суда загрузим данные по умолчанию этот текст стереть</div>

насколько я понял это контейнеры для будущих select’ов, правильно?

Код

                $('#model_select').html('<img src="/media/loading.gif"> Загрузка ...');  // ищу тег с ID="model_select" вставляю в него прелойдер

в этой строчке меня смущает записть .html, что она означает? у меня все страницы *.php

и еще момент... Вы написали:
Цитата

// тут делаешь по аналоги с первым селектом и так до бесконечности делаешь такую конструкцию


т.е. туда вставлять всю эту конструкцию между тегами <script>? или я чего-то не понял?

Еще раз спасибо, но более основательно буду разбиратся с утра на свежую голову...
PM MAIL   Вверх
Sanchezzz
Дата 13.6.2012, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Цитата

насколько я понял это контейнеры для будущих select’ов, правильно?
 Да 

Цитата

в этой строчке меня смущает записть .html, что она означает? у меня все страницы *.php
 Это JavaScript функция в фреймворке jquery вставляет кусок html кода в дом структуру  + обновляет структуру.

Цитата

тут делаешь по аналоги с первым селектом и так до бесконечности делаешь такую конструкцию

Я думал поймешь дублируешь код и меняешь кусочек параметров 

Код

var id_obj = $(this).val();  // выбранное значение <option val="1">
                var model_name = $(this).find('option[selected]').text();     
                $('#model_select').html('<img src="/media/loading.gif"> Загрузка ...');  // ищу тег с ID="model_select" 
//вставляю в него прелойдер в Будуйщий контейнер для селекта что бы сказать пользователю с меленым интренетом  что у него что то грузится подгружается...
                $.ajax({
                  url: "/ajax.php",  // на какую страницу идет  запрос 
                  data: {comand:'city' , 'id': id_obj},  // параметры запроса, вот тут ты меняешь 
//параметр для каждого типа селекта свое это в PHP в файле Ajax Принимаешь их как $_POST['comand'] ,  $_POST['id'] итд.
                  type : 'post', // тип запроса 
                  success: function(data) { //если данные пришли нормально 
                    $('#model_select').html(data); // контейнер для будущего селекта вставляем Html с JS полученный из файла Ajax
                  }
                });


http://jquery-docs.ru/ Дока на русском))



Это сообщение отредактировал(а) Sanchezzz - 13.6.2012, 06:33


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Fortop
Дата 13.6.2012, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(0Z0NE @  12.6.2012,  20:58 Найти цитируемый пост)
задача состоит в следующем: ~120 стран пользователь выбирает свою страну => данные отсеиваются и пользователя уже видны(доступны) лишь регионы(области) выбранной страны(которых порядка 900 штук в общем), далее пользователь выбирает нужную ему область, и видит(получает доступ) к городам выбранной области(которые и являются целью всей этой тягомотины, их примерно 10 000 штук), естественно база данных может быть дополнена\отредактированна, но пока хотя-бы с выводом справиться.

Можно сделать вообще без Javascript

Подобный функционал реализуется и обычными post запросами
и ифреймами.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
0Z0NE
Дата 13.6.2012, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Цитата

Я думал поймешь дублируешь код и меняешь кусочек параметров 


аа значить я правильно Вас понял =)


Спасибо сейчас буду пытатся

Цитата

Подобный функционал реализуется и обычными post запросами
и ифреймами.

Насколько я помню еще года два назад все в интернете кричали что фреймы - вещь устаревшая, не практичная, и использование их это не есть гуд, помоему фреймы даже для чатов не особо приветствоваались...
PM MAIL   Вверх
Sanchezzz
Дата 13.6.2012, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Цитата

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

WYSIWYG
Виджеты яндекс
Yootube С его html5 плеером)))
MAIL.RU API кое где использует например соц плагин)



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
0Z0NE
  Дата 13.6.2012, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Цитата

 Для разных задач очень хорошо подходит:


Ладно, над фреймами еще подумаю как скучно будет .. а пока у меня как и ожидалось не работает ничего, вроде-бы все правильно, но данные даже не доходят до ajax.php. а если біть совсем точным то даже прелоадер не показывается ...

стала почему-то смушать конструкция вида:
Код

data: {comand:'city' , 'id': id_obj},


немного не понимаю логику,  віходит что переменной command передается 2 параметра?? и к чему тогда id_obj... я запутался :(
Документация не помогла... точнее еще больше запутала там написано:
Цитата

Аргументы:
имя    Строка


уффф...

Бррр...  все мои неудачи были из-за того что я не подключил chosen.jquery ... но подкдючив я чуть не офигел ... обычный select стал похож на обычное input text поле О_о
user posted image

Это сообщение отредактировал(а) 0Z0NE - 13.6.2012, 20:27
PM MAIL   Вверх
Fortop
Дата 13.6.2012, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(0Z0NE @  13.6.2012,  13:08 Найти цитируемый пост)
фреймы - вещь устаревшая, не практичная, и использование их это не есть гуд

Они позволяют работать без JS
Все остальное не имеет значения, если нужно реализовать задачу именно в таких условиях.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
0Z0NE
Дата 16.6.2012, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


HEY4
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 25.4.2012

Репутация: нет
Всего: нет



Решил сделать через JavaScript, и столкнулся с проблемой...

За основу взял скрипт найденный тут на форуме(автор Pretorian), не выходит сделать так что-бы скрипт отсеивал данные и в 3-м поле(сами гороа). делаю так:
Код

<?php
 mysql_select_db("reg", $db); 
 $count_nums = mysql_query("SELECT `country_id` FROM `country`");
?>
//////////////////////////////////////////////////////////////////////////////////////////////////////SELECT REGION
function showSubsection() {
  var optionsString = "";
  switch (fm.list1.value) {
<?php
while($count_id = mysql_fetch_array($count_nums)){
echo('case "'.$count_id[0].'":
       optionsString = 
       ');
       $result_reg = mysql_query("SELECT `name` FROM `region` WHERE `country_id`='".$count_id[0]."'");
       $reg_row = mysql_num_rows($result_reg);
       $iter_reg = 0;
      ?>
      <?php
        while($region = mysql_fetch_array($result_reg)){
          $iter_reg = $iter_reg + 1;
            if($reg_row == $iter_reg){
              $plus_ = '';
            }else{
              $plus_ = '+';
            };
          echo('"<option>'.$region[0].'</option>"'.$plus_);
        };
      ?>
      <?php      
echo('      ;
      document.fm.list2.innerHTML = optionsString;
    break;
');
};
?>
  };
};
//////////////////////////////////////////////////////////////////////////////////////////////////////SELECT REGION
<?php
 mysql_select_db("reg", $db); 
 $count_nums = mysql_query("SELECT `region_id` FROM `region`");
?>
//////////////////////////////////////////////////////////////////////////////////////////////////////SELECT CITY
function showCity() {
  var optionsCity = "";
  switch (fm.list2.value) {
<?php
while($count_id = mysql_fetch_array($count_nums)){
echo('case "'.$count_id[0].'":
       optionsCity = 
       ');
       $result_reg = mysql_query("SELECT `name` FROM `city` WHERE `region_id`='".$count_id[0]."'");
       $reg_row = mysql_num_rows($result_reg);
       $iter_reg = 0;
      ?>
      <?php
        while($region = mysql_fetch_array($result_reg)){
          $iter_reg = $iter_reg + 1;
            if($reg_row == $iter_reg){
              $plus_ = '';
            }else{
              $plus_ = '+';
            };
          echo('"<option>'.$region[0].'</option>"'.$plus_);
        };
      ?>
      <?php      
echo('      ;
      document.fm.list3.innerHTML = optionsCity;
    break;
');
};
?>
  };
};
//////////////////////////////////////////////////////////////////////////////////////////////////////SELECT CITY


и SELECT’ы

Код

<form action="" name="fm">
   <select name="list1" onChange="showSubsection()">
   <option></option>
    <?php
       while($country = mysql_fetch_array($result_country)){
       echo('<option value="'.$country[0].'">'.$country[1].'</option>');
       };
     ?>
   </select>
   <select name="list2" onChange="showCity()">
   <option></option>
   <?php
      while($regi_on = mysql_fetch_array($result_reg)){
      echo('<option value="'.$regi_on[0].'">'.$regi_on[1].'</option>');
      };
    ?>
  </select>
  <select name="list3">
      <option></option>
      <?php
        while($city__ = mysql_fetch_array($result_city_)){
       echo('<option value="'.$city__[0].'">'.$city__[1].'</option>');
       };
      ?>
  </select>
</form>


в блоке "SELECT REGION" все на отлично работает, а вот в блоке "SELECT CITY"  не хочет ...

Пробовал и оба switch в одной функии и в двух ... и как-то не хочет :(

Это сообщение отредактировал(а) 0Z0NE - 16.6.2012, 06:58
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.