Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: вывод данных из базы

Добрый день.
Прошу по возможности подсказать, как организовать вывод данных из базы? Я хотел бы сделать это следующим способом:
При открытии страницы выгружает первые десять записей, далее после того как пользователь прокрутил все эти записей и дошел до конца он видел кнопку, например "ЕЩЕ". Жмет и ниже открываются еще десть записей.
Вобщем пока не могу понять с чего начать.
Спасибо.

например php код:
if(isset($_POST['nextpage']){
$cur_page =$_POST['nextpage'] + 1;   // POST запросы, по умолчанию 1 (на начальной странице этот же код, только $cur_page = 1;)
$result_per_page = 10;                                                      // вывод 10 записей
$skip = (($cur_page - 1) * $result_per_page);                       // с какой записи выводим
$total_quary = "SELECT * FROM db_main ORDER BY id DESC";  //начальный ВИД запроса
include_once("connection_db.php"); 
//$result = mysql_query($total_quary);
//$total = mysql_num_rows($result);
//$num_pages = ceil($total/$result_per_page);
$total_quary = $total_quary." LIMIT $skip, $result_per_page"; //конечный ВИД запроса
$result = mysql_query($total_quary);
mysql_close;
//$cur_page = $cur_page + 1;
while($row = mysql_fetch_array($result))
{ 
вывод данных
}
?>
<div id="alertpage<?php echo $cur_page;?>">
<input onclick="subNextPage(<?php echo $cur_page;?>);" class="button" type="submit" name="nextpage" value="ЕЩЕ"/>
<div>
<?php
}
?>


javascript:
var subNextPage = function(e){
//alert(e);
var nextpage = e;				
$.post('http://development/nexttest.php',
{
nextpage:nextpage
},
function(data){
var nextpageBack = data; 
$("#alertpage"+e).fadeOut(300,function(){
$(this).html(nextpageBack).fadeIn(300);
});
}
);
};

HTML:
<div id="alertpage<?php echo $cur_page;?>">
<input onclick="subNextPage(<?php echo $cur_page;?>);" class="button" type="submit" name="nextpage" value="ЕЩЕ"/>
</div>
Ответ: В сети много об этом написано, есть на хабре, ссылок дать не могу, но есть, то есть предлагаются различные способы решения.

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

"SELECT * table WHERE field IN(" . implode(",", keys) . ")"


одним запросом.

Иначе с range что-то будет выбираться не единожды, а что-то может и вообще не показано.

Если нужно что-то собрать, то необязательно "по частям", это можно записать и разом:

$str = implode('separator or none', function() {
    return .....
}, $array)
Вопрос: Вывод данных на страницу из CSV файла

Доброго времени суток уважаемые форумчане. На нашем сайте есть много страниц с описанием услуг. На этих страницах присутствуют таблицы с ценами, некоторые страницы повторяют друг друга(разные сео тексты но суть схожая) и соответственно таблицы дублируются. Когда происходит смена цен, то начинается дикий ад. По этому хочу создать csv таблицу в которую занесу цены(её все же удобнее и быстрее редактировать), а на страницах сайта выводить данные из csv таблицы. Это все преамбула.

Итак к сути: как вывести на страницу сайта значение конкретной ячейки файла? В идеале конечно выводить из этого файла вообще нужную таблицу (но не уверен, что это возможно).
Ответ: Rise, едва ли у него есть там php и админка вообще. )

Sowenak, суть такова. Из екзеля сохраняешь xml, кладешь его на сервер, потом аяксом закачиваешь и юзаешь как объект. XMLHttpRequest изначально и заточен под такие мероприятия.
Вопрос: Изменения при достижении конца страницы! Код прикрепляю

Всем привет! Подскажите пожалуйста (в серпе не нашел), такого либо не запрашиваю, либо я один задался вопросом.

Есть скрипт, который позволяет делать движухи проскролив 100 точек от верха.

Как, подскажите как сделать так, чтобы движуха была при остатке до конца страницы 100. То есть не пролистав от верха страницы 100, а когда осталось листать до конца страницы 100 точек.

Вот код:

<script>
$(function(){
 $(window).scroll(function() { 
  var top = $(document).scrollTop();
  if (top > 100) $('.floating').addClass('fixed');
  else $('.floating').removeClass('fixed');
 });
});
</script>


Заранее спасибо всем спецам!
Ответ:
Сообщение от рони
Danilkin500,
не осилил ваши тексты, но может это чем поможет.
Осиливать там ничего не нужно) вот самое важное... Не могу с этим разобраться.

Цитата:
все ясно. все это происходит, когда нет четко заданной высоты body
я это убрал:

body{
    height: 2000px;
}



И после началось мигание и зависание.
Но когда прописал, то все ровно стало двигаться. Но вы ведь понимаете, что у страниц высота всегда разная. Как тут быть?
Вопрос: Вывод списка дочерних страниц,пренадлежащих к одому родителю

Ку)Помогите пожалуйста,как можно сделать вывод списка дочерних страниц,пренадлежащих к одому родителю в шаблоне?
К примеру : есть страницы ,у которых общий родитель.Как вывести только их в списке?
Вот так к примеру :
HTML5
1
2
3
4
5
<ul>
<li><a href="ссылка на страницу 1">Страница 1</a><li>
<li><a href="ссылка на страницу 2">Страница 2</a><li>
<li><a href="ссылка на страницу 3">Страница 3</a><li>
</ul>
Заранее спасибо!
Ответ: Ок, а как получить ярлык открытой страницы/поста?
Вопрос: Если пользователь проскроллил до конца страницы

Всем привет, имеется такой код:

$(window).scroll(function(){ 
	if($(window).scrollTop()+$(window).height()>=$(document).height())
	{ 
		console.log('ура! конец страницы!') 
	} 
});


По логике он должен определять, когда пользователь проскроллил до конца страницы, но почему-то консоль выдает текст, когда я даже немного проскроллил вниз, не достигнув конца страницы.
Ответ: KiberQ,
мне нечего добавить, код содержит вставки, без живого макета можно только гадать ... смотрите совет выше, может чем поможет.
Вопрос: Как растянуть элементы DIV до конца страницы независимо от содержимого

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

Есть вобщем-то абсолютно стандартный макет сайта.

Фиксированная шапка высотой 90 пикселей
Под ней основной блок с тремя разделами в ряд:
Левое меню, Центральный блок информации, Блок новостей.

HTML5
1
2
3
4
5
6
<div id = header></div>
<div id = main_block>
  <div id = left_menu>menu</div>
  <div id = center_block>main block</div>
  <div id = right_block>news</div>
</div>
Как бы мне растянуть main_block до конца страницы, используя css? установка его свойства height: 100% никак не изменяет высоту, а даже если изменит, то блок выйдет за пределы страницы на высоту шапки. Установка height в пикселях тоже нежелательна по очевидным причинам.

Сейчас css выглядит так

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#header 
{
      height: 90px;
      background-color: #add991;
}
 
#main_block
{
      display: inline-table;
      width: 100%;
      background-color: blue;
      height: 100%;
}
 
#main_block div
{
      vertical-align: top;
      display: table-cell;
      height: 100%;
}
 
#left_menu{background-color: #4ae1dd;width: 200px;}
#center_block{background-color: #aea097;}
#right_block{background-color:#faefa0;width: 250px;}
То же в песочнице:

Как бы мне решить эту задачу? Заранее большое спасибо.

Добавлено через 9 минут
Хотя тот же самый css запущенный в браузере, не в песочнице, срабатывает, устанавливая высоту в 100%, но как и предполагалось, элементы выходят за пределы страницы на высоту шапки. Нужно чтобы ровно до конца страницы без прокрутки.
Ответ:
Сообщение от renat_dmitriev
Я знаю, потому и пишу, что лишнее. будучи применен к "ul" сдвигает картинки элементов списка на соседний элемент.
Ну это уже Вам, как говорится виднее... Я люблю сразу сносить дефолтные стили броузера, чтобы потом задавать свои и контролировать их размер... Кому как нравится...
Вопрос: В конце страницы не работает блок javascript

Создаю javascript блок в конце страницы - перед < /body >.
Не работает!

Код (Javascript):


<script type="text/javascript">$(function() { alert("1"); }); </script>




Тот же самый код вначале страницы - работает! Как так?!
Ответ:
Ай-яй, какая глупая реклама.
Вопрос: Div до конца страницы

Как сделать, чтобы элемент div был до конца страницы? Height 100% не помогает.
Ответ:
Сообщение от lollipop5012
Height 100% не помогает
Помогает, если допишите:
Код CSS
1
2
3
html, body {
    height: 100%;
}
и 100% высоты для родительских блоков.
Вариант второй - пишем просто:
Код CSS
1
2
3
div {
    height: 100vh;
}
vh, vw и т.д. , но не всеми браузерами.
Вопрос: Как организовать вывод данных

Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
<!doctype html>
<html>
<head>
      <meta charset="utf-8">
      <title>Пример корзины</title>
      <style type="text/css">
.item_box {
  width: 200px;
  padding: 5px;
  border: solid 1px black;
  float: left;
  position: relative;
  top: 10px;
}
.buttons {
  padding: 5px;
  border: solid 1px black;
  float: rigth;
  position: absolute;
  top: 500px;
  left: 40%;
}
.cart_content {
  padding: 5px;
  border: solid 1px black;
  float: rigth;
  position: absolute;
  top: 600px;
  left: 40%;
}
</style>
</head>
<body>
<div class="item_box">
        <h3 class="item_title">Flash Kingston 50 mb</h3>
  <p>Выберите объём флеш-накопителя</p>
  <p><input name="val1" type="radio" data-price="18" data-param="8 GB" value="7" checked> 8 GB</p>
  <p><input name="val1" type="radio" data-price="20" data-param="16 GB" value="8"> 16 GB</p>
  <p><input name="val1" type="radio" data-price="22" data-param="32 GB" value="9"> 32 GB</p>
  <p><input name="val1" type="radio" data-price="24" data-param="64 GB" value="10"> 64 GB</p>
  <!--p><input type="submit" value="Выбрать"></p-->
  <p>Укажите количество:</p>
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">18</span>$</p>
  <button class="add_item">Добавить в корзину</button>
</div>
<div class="item_box">
        <h3 class="item_title">Mouse Razer V3</h3>
  <p>Укажите количество:</p>
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">43</span>$</p>
  <button class="add_item" data-id="11">Добавить в корзину</button>
</div>
<div class="item_box">
        <h3 class="item_title">Flash ADATA 32 mb/40 mb</h3>
  <p>Выберите объём флеш-накопителя</p>
  <p><input name="val2" type="radio" data-price="24" data-param="8 GB" value="12" checked> 8 GB</p>
  <p><input name="val2" type="radio" data-price="26" data-param="16 GB" value="13"> 16 GB</p>
  <p><input name="val2" type="radio" data-price="30" data-param="32 GB" value="14"> 32 GB</p>
  <p><input name="val2" type="radio" data-price="32" data-param="64 GB" value="15"> 64 GB</p>
  <!--p><input type="submit" value="Выбрать"></p-->
  <p>Укажите количество:</p>
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">24</span>$</p>
  <button class="add_item">Добавить в корзину</button>
</div>
<div class="item_box">
        <h3 class="item_title">LAN Hub  10 ports</h3>
  <p>Укажите количество:</p>
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">44</span>$</p>
  <button class="add_item" data-id="16">Добавить в корзину</button>
</div>
<div class="item_box">
        <h3 class="item_title">Router D-Ling 100 mb/s 4 ports</h3>
  <p>Укажите количество:</p>
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">11</span>$</p>
  <button class="add_item" data-id="17">Добавить в корзину</button>
</div>
<div class="item_box">
        <h3 class="item_title">Local Cabel</h3>
  <p>Выберите длину кабеля</p>
  <p><input name="length" type="radio" data-price="38" data-param="50 метров" value="18" checked> 50 метров</p>
  <p><input name="length" type="radio" data-price="41" data-param="100 Метров" value="19"> 100 Метров</p>
  <p><input name="length" type="radio" data-price="43" data-param="150 метров" value="20"> 150 метров</p>
  <!--p><input type="submit" value="Выбрать"></p><p>Укажите длину:</p-->
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">30</span>$</p>
  <button class="add_item">Добавить в корзину</button>
</div>
<div class="item_box">
        <h3 class="item_title">Клавиатура Logitech 23215hs2</h3>
  <p>Укажите количество:</p>
  <p><input class="amount" value="1" size="5" maxlength="3"></p>
  <p>Цена: <span class="item_price">5</span>$</p>
  <button class="add_item" data-id="21">Добавить в корзину</button>
</div>
<div class="buttons">
        <button id="checkout">Оформить заказ</button>
  <button id="clear_cart">Очистить корзину</button>
</div>
<div class="cart_content">
        <div id="cart_content"></div>
</div>
<script>
(function(e){ 
 e.closest = e.closest || function(css){ 
   var node = this;
  
   while (node) { 
      if (node.matches(css)) return node; 
      else node = node.parentElement; 
   } 
   return null; 
 } 
})(Element.prototype);
var d = document,
    itemBox = d.querySelectorAll('.item_box'), // блок каждого товара
    cartCont = d.getElementById('cart_content'); // блок вывода данных корзины
// Функция кроссбраузерной установка обработчика событий
function addEvent(elem, type, handler) {
    if (elem.addEventListener) {
        elem.addEventListener(type, handler, false);
    } else {
        elem.attachEvent('on' + type, function() {
            handler.call(elem);
        });
    }
    return false;
}
// Получаем данные из LocalStorage
function getCartData() {
    return JSON.parse(localStorage.getItem('cart'));
}
// Записываем данные в LocalStorage
function setCartData(o) {
    localStorage.setItem('cart', JSON.stringify(o));
    return false;
}
// Добавляем товар в корзину
function addToCart(e) {
    this.disabled = true; // блокируем кнопку на время операции с корзиной
    var cartData = getCartData() || {}, // получаем данные корзины или создаём новый объект, если данных еще нет
        parentBox = this.parentNode, // родительский элемент кнопки "Добавить в корзину"
        itemId = this.getAttribute('data-id'), // ID товара
        itemTitle = parentBox.querySelector('.item_title').innerHTML, // название товара
        itemPrice = parentBox.querySelector('.item_price').innerHTML, // стоимость товара
                                itemAmount = +(parentBox.querySelector('.amount').value || 1); // Кол-во
                if (!itemId) {
                        var param = parentBox.querySelector('input[type=radio]:checked');
                        if (!param) {
                                alert('Выберите тип товара');
                                return false;
                        }
                        itemId = param.value;
                        itemTitle += ' (' + param.getAttribute('data-param') + ')';                     
                }
                /* ------------- */
    if (cartData.hasOwnProperty(itemId)) {
        cartData[itemId][2] += itemAmount; // Тут подставили переменную и если тексбокс пуст, то +1
    } else {
        cartData[itemId] = [itemTitle, itemPrice, itemAmount]; // И  тут подставили переменную
    }
    if (!setCartData(cartData)) { // Обновляем данные в LocalStorage
        this.disabled = false; // разблокируем кнопку после обновления LS
    }
    var cartData = getCartData(), // вытаскиваем все данные корзины
        totalItems = '',
        totalCount = 0,
        totalSum = 0;
    // если что-то в корзине уже есть, начинаем формировать данные для вывода
    if (cartData !== null) {
        totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th><th></th></tr>';
        for (var items in cartData) {
            totalItems += '<tr>';
            for (var i = 0; i < cartData[items].length; i++) {
                if (i == 1) {
                    totalItems += '<td align="right">' + cartData[items][i] + '</td>';
                } else {
                    totalItems += '<td>' + cartData[items][i] + '</td>';
                };
            }
            totalSum += cartData[items][1] * cartData[items][2];
            totalCount += cartData[items][2];
            totalItems += '<td><span class="del_item" data-id="' + items + '"></span></td>';
            totalItems += '</tr>';
        }
        totalItems += '<tr><td><strong>Итого</strong></td><td align="right"><span id="total_sum">' + totalSum + '</span>$</td><td><span id="total_count">' + totalCount + '</span> шт.</td><td></td></tr>';
        totalItems += '</table>';
        cartCont.innerHTML = totalItems;
    } else {
        cartCont.innerHTML = 'В корзине пусто!';
    }
    return false;
}
// Устанавливаем обработчик события на каждую кнопку "Добавить в корзину"
for (var i = 0; i < itemBox.length; i++) {
    addEvent(itemBox[i].querySelector('.add_item'), 'click', addToCart);
}
// Открываем корзину со списком добавленных товаров
function openCart(e) {
    var cartData = getCartData(), // вытаскиваем все данные корзины
        totalItems = '',
        totalCount = 0,
        totalSum = 0;
    // если что-то в корзине уже есть, начинаем формировать данные для вывода
    if (cartData !== null) {
        totalItems = '<table class="shopping_list"><tr><th>Наименование</th><th>Цена</th><th>Кол-во</th><th></th></tr>';
        for (var items in cartData) {
            totalItems += '<tr>';
            for (var i = 0; i < cartData[items].length; i++) {
                if (i == 1) {
                    totalItems += '<td align="right">' + cartData[items][i] + '</td>';
                } else {
                    totalItems += '<td>' + cartData[items][i] + '</td>';
                };
            }
            totalSum += cartData[items][1] * cartData[items][2];
            totalCount += cartData[items][2];
            totalItems += '<td><span class="del_item" data-id="' + items + '"></span></td>';
            totalItems += '</tr>';
        }
        totalItems += '<tr><td><strong>Итого</strong></td><td align="right"><span id="total_sum">' + totalSum + '</span>$</td><td><span id="total_count">' + totalCount + '</span> шт.</td><td></td></tr>';
        totalItems += '</table>';
        cartCont.innerHTML = totalItems;
    } else {
        cartCont.innerHTML = 'В корзине пусто!';
    }
    return false;
}
/* Открыть корзину */
addEvent(d.getElementById('checkout'), 'click', openCart);
/* Очистить корзину */
addEvent(d.getElementById('clear_cart'), 'click', function(e) {
    localStorage.removeItem('cart');
    cartCont.innerHTML = 'Корзина очишена.';
});
[].forEach.call(document.querySelectorAll('.item_box input[type=radio]'), function(inp){
        addEvent(inp, 'change', function(){
                var parentBox = this.closest('.item_box');
                parentBox.querySelector('.item_price').textContent = this.getAttribute('data-price');
                parentBox.querySelector('.amount').value = 1;
        })
});
</script>
</body>
</html>


Теперь хочу чтоли создать отдельную страничку. На которую будет заходить по клику, оформить заказ. Там нужно буддет ввести имя, фамилию, например способ оплаты выбрать, и способ доставки, а так же мыло. И чтобы оно либо на почту(Так прощу) Или на сервер(так сложнее) Отправляло данные. То что он выбрал в корзине+ его данные. Это реально сделать даже используя пхп?
Ответ: Что у вас не получается?
Вопрос: Javascript-код для вывода дерева элементов страницы, с которой этот код запущен

Всем привет. Возникла трудность при изучении javascript, а именно с темой, связанной с DOM. Не могу справиться со следующей задачей: написать Javascript-код для вывода дерева элементов страницы, с которой этот код запущен.
Если кто поможет, буду благодарен.
Ответ: Спасибо, то что надо)