Jump to content
  • 0

Вопросы по PHP.


Kompilator
 Share

Question

Здравствуйте.

Для создания сайта потребовался PHP, в этой теме буду задавать вопросы знатокам.

Пока справляюсь сам, но вот возник вопрос - при формировании таблицы для отображения данных из БД как лучше выводить HTML ? Т.е. каждый шаг цикла (строка БД) выводить посредством "echo" или накапливать всю таблицу в переменной, а потом сразу-  "echo $text;" ?

Как правильнее, или быстрее исполняется или еще что нибудь ?

Link to comment
Share on other sites

Recommended Posts

  • 0
может я вам Америку открою, но для каждого браузера сессия - своя и она как уже сказали выше хранит свой id в куках браузера и это скажу я вам абсолютно нормальное поведение. вы же можете зайти в вконтакт, или одноклассники, или фэйсбук с разных браузеров одновременно? можете! и что в этом криминального?

Вы не поняли.

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

Link to comment
Share on other sites

  • 0

это вы походу не поняли, еще раз: сессия привязывается к браузеру и не важно, записали вы ее в переменную, или нет.

другое дело записать в бд, но тогда при входе с другого браузера, все-равно сессия создастся по новой и будет иметь уже другое значение.


привели ссылку, теперь хоть понятно о чем речь..., ща посмотрим в чем дело.

Link to comment
Share on other sites

  • 0
ща посмотрим в чем дело.

Выбираете модель в левом меню, должны в таблице появиться данные по этой фаре.

Выбираете модель в правом меню, должны в таблице появиться данные и по этой фаре, но в соседнем столбце.

Данные должны присутствовать в 2-х столбцах.

А когда я открываю другой браузер, сессия перестаёт помнить что в правой колонке таблицы при выборе фары для левой колонки таблицы.

Link to comment
Share on other sites

  • 0
А когда я открываю другой браузер, сессия перестаёт помнить что в правой колонке таблицы при выборе фары для левой колонки таблицы.

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

<?php	$arr_factory = array(); // правда я не знаю какое предназначение выполняет эта переменная, вы же до конца не раскрыли суть	session_start(); // такие вещи всегда надо ставить выше всего остального кода	$idleft = $_GET['idleft'];	$idright = $_GET['idright'];	$_SESSION['left_id'] = // вот в эту сессионную переменную вам нужно записать значение, которое должно вывестись если кликнули на что-то в левой колонке	$_SESSION['right_id']= // вот в эту сессионную переменную вам нужно записать значение, которое должно вывестись если кликнули на что-то в правой колонке	if(!empty($idleft) || !empty($idright)) {		//а вот тут уже можно разбирать массив с этими сессиями типа:		if($idleft == 13) {			foreach($_SESSION['left_id'] as $left-item) {				echo '$left-item['price']';			}		}	}
Link to comment
Share on other sites

  • 0

Понял в чем дело.

Почему то если открытие сессии "session_start();" не в начале кода, а в середине, то данные туда не записываются.

Поставил в самое начало страницы, стало работать.

Проверьте пожалуйста в своих браузерах.

Нормальная работа, это когда отображаются данные сразу двух велофар.

http://велосвет.рф/compare.html

Link to comment
Share on other sites

  • 0

Было бы всё же лучше, если бы в адресной строке сохранялось значение обоих параметров. Таким образом можно было бы дать ссылку.

Вы правы, об этом не подумал, отличная идея.

Спасибо.

Сделал - http://велосвет.рф/compare.html?idright=6&idleft=31, так действительно пользователям удобнее будет друг другу показывать сравнения фар.

Тем более у меня не только характеристики там будут, а ещё и бимшоты (фото как светит).

Только теперь получается сессии и не нужны, разве что если случайно закрыл, при открытии сразу и без параметров, покажет то что было выбрано.

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Здравствуйте !
Очередной день привносит в голову очередные глупые вопросы, один из них таков - посмотрите последнюю строку таблицы, что посередине.

Цифра находится на фоне некого цвета, он различается в зависимости от числа (1-красный ...... 9-зелёный).

Как видите, чтобы этот цветовой фон был хоть какой-то вразумительной ширины, а не в ширину цифры, пришлось поставить дурацкие дефисы по бокам.

Пробелы не отображаются, как лучше "расширить" эту штуку ?

http://велосвет.рф/compare.html?idright=32&idleft=22

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Нашел косяк в отображении боковых раскрывающихся списков.

На мобильных устройствах, в гуглхроме и ещё каком-то планшетном браузере, при "нажатии" пункта меню, пропадает весь список (не всегда), и рамка вокруг него.

Манипуляции с масштабированием и ориентацией (горизонтально-вертикально) возвращают список на место, но не всегда.

Думаю на это забить, а как считает общественность ?

http://велосвет.рф/compare.html?idright=27&idleft=32&navmenur=NiteFighterright&navmenul=Kompilatorleft

Edited by Kompilator
Link to comment
Share on other sites

  • 0
Что-то читаю - читаю гугл и понимаю, средствами JS затолкать в буфер обмена текстовую переменную нельзя ?

так не стоит делать. у посетителя в буфере может что то нужное ему храниться. а вы ему перезапишите 

Link to comment
Share on other sites

  • 0

 

Что-то читаю - читаю гугл и понимаю, средствами JS затолкать в буфер обмена текстовую переменную нельзя ?

https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand

 

Как только заметил, что Хром начал поддерживать команду copy, попробовал. Почему-то не работает. До сих пор. Просто возвращает false :(

Link to comment
Share on other sites

  • 0

Спасибо, но решил не делать манипуляций с буфером.

Вот такой вопрос - можно ли силами JS прочитать положение правого скролла и изменить его по необходимости ?

Link to comment
Share on other sites

  • 0

Спасибо, но решил не делать манипуляций с буфером.

Вот такой вопрос - можно ли силами JS прочитать положение правого скролла и изменить его по необходимости ?

можно

Link to comment
Share on other sites

  • 0

 

можно

Отлично =) !

Я нашел - scrollTop(), но как ни пробовал его в разных вариантах с разных сайтов, никак не получается.

 

scrollTop() это метод jQuery

 

вот почитайте https://learn.javascript.ru/metrics-window

  • Like 1
Link to comment
Share on other sites

  • 0
вот почитайте https://learn.javasc.../metrics-window

Воистину Вы умнейший из мудрецов !

Спасибо, всё теперь работает.

Теперь при выборе различных моделей/размера картинки, после перезагрузки, страница не прыгает в начало.

Создаётся иллюзия, будто она не перезагружается, а изменения происходят в текущей.

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Как я понимаю, при загрузке страницы должен сработать скрипт позиционирования прокрутки.

Я строку - window.scrollTo(0,<?php echo $_GET['scrtop'];?>); вставил в функцию, которая выполняется сразу после загрузки.

startList = function allclose() 			{				window.scrollTo(0,<?php echo $_GET['scrtop'];?>);								for (i=0; i < id_menu.length; i++){										document.getElementById(id_menu[i]).style.display = "none";										if ((id_menu[i]) == "<?php echo $navmenul;?>")						{						document.getElementById(id_menu[i]).style.display = "block";							}					if ((id_menu[i]) == "<?php echo $navmenur;?>")						{						document.getElementById(id_menu[i]).style.display = "block";							}					}						}window.onload=startList;

Эта функция закрывает все открытые пункты меню, но после вставки, функция закрытия перестаёт работать.

Подскажите куда строку скролла вставить, что бы не мешала работе function allclose() ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy