Jump to content
  • 0

Вопросы по PHP.


Kompilator
 Share

Question

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

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

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

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

Link to comment
Share on other sites

Recommended Posts

  • 0
Покажите вашу функцию отправки запроса.
echo '<img src="../images/revedit.png"  class="butt_rev" alt="Кнопка редактирования" title="Изменить" style="cursor:pointer" onclick="scrl(); document.forms[\'test\'].submit();">';

По онклик выполняется сначала - scrl(), в которой подменяется строка - <form action="modsql.html?id=<?php echo $res;?>&scrtop=0" method="post" name="test" onsubmit="return false;">, потом - document.forms[\'test\'].submit(); она и отправляет данные.


Ладно, тут все заморочено.

Решил сделать как и раньше, подставлять просто скрытое поле при клике на кнопку:

function revfrm()	{	scrtop = window.pageYOffset;	document.getElementById('revf').innerHTML='<input type="hidden" name="scrtop" value="'+scrtop+'">';	}

В HTML коде есть такое:

<span id='revscr'></span>

Так вот, если я в document.getElementById('revf').innerHTML пишу - "12345", то текст этот при нажатии появляется на странице.

А если пытаться вставить - "<input type="hidden" name="scrtop" value="'+scrtop+'">", то значение переменной scrtop пустое.

Если явно прописать эту строку в HTML - "<input type="hidden" name="scrtop" value="555">", то значение 555 передаётся исправно.

Получается строка не вставляется ?

Я пытаюсь в фаерфоксе посмотреть "исходный код страницы", там даже при появлении в окне браузера - "12345", в коде этой записи нет, там только - "<span id='revscr'></span>".

Link to comment
Share on other sites

  • 0

Попробуйте предварительно создать элемент 
 

document.createElement('input');

И изменить его параметры через методы доступа к атрибутам и только потом вставлять

 

 

Были похожие проблемы с innerHTML(< ie10). Только при вставке <tr>...<.tr>
Все теги внутри tr исчезали, пришлось явно делать

Сначала insertRow а потом insertCell уже в tr

И все параметры указывать в ручную через setAttribute

Это только в случае если использовать нативный js. с jQuery таких проблем скорее всего нет

Edited by li4e
  • Like 1
Link to comment
Share on other sites

  • 0

li4e, cпасибо, разобрался.

Сделал так:

function revfrm()	{	scrtop = window.pageYOffset;	document.getElementById('revf').innerHTML='<input type="hidden" name="scrtop" value="'+scrtop+'">';	}

В HTML коде вставил:

<span id='revf'></span>

А не работало это потому, что я вставлял <span id='revscr'></span> внутри тега <table></table>, наверное так нельзя и у меня подменная строчка появлялась перед таблицей, вне тега <form></form>, что соответственно не вставлято в массив POST мою переменную.

Link to comment
Share on other sites

  • 0

Ругается база данных:

 

Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

Перевод:

 

Размер строки слишком велико (> 8126). Изменение некоторых столбцов в текст или BLOB или с помощью ROW_FORMAT = динамический или ROW_FORMAT = СЖАТЫЙ может помочь. В нынешнем формате строки, BLOB префикс 768 байт хранится встроенный.

 

Подскажите, можно ли что-то сделать в phpMyAdmin с базой для того, чтобы мои строки влезали в неё ?

Как же так получается, если вся строка БД не может быть более 8126 байт ? нафига тогда тип ячейки TEXT в котором 65535 ?

Создатели mySQL  что, грибов наелись когда такую чушь создавали ?

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Смените тип поля через phpMyadmin. Там увидите много вариантов - 

  1. TINYTEXT
  2. TEXT
  3. MEDIUMTEXT
  4. LONGTEXT

 и т д   Подберите нужный.   

 

Везде TEXT стоит.

Обратился в службу поддержки, говорят для устранения ошибки нужно перейти на более дорогой тариф.

Иначе ограничение в БД :( .

Link to comment
Share on other sites

  • 0

Обратился в службу поддержки, говорят для устранения ошибки нужно перейти на более дорогой тариф.

Иначе ограничение в БД :( .

Может быть, у них доступен SQLite? На него-то они ограничения не навесят.
Link to comment
Share on other sites

  • 0

Карочи, буду переписывать код.

Разбивать таблицу на 3, так как с ограничением в 8 Кб, заведомо точно влезет не более 10-ти записей в строку.

Получится 1-я таблица, все характеристики и прочее, 2-3 таблицы - контент.

В рег.ру говорят, что ничего сделать не могут, внесением изменений в конфигурацию mySQL они не занимаются.

А переходить на более дорогой виртуальный выделенный сервер с моей посещаемостью менее 100 чел. нет смысла.


Резюме.

 

Кто хочет делать большую таблицу как у меня (160 полей в строке), знайте ! у каждого поля есть заголовок, 700 с чем то байт.

Если у вас 100 записей по 10 байт, то проблем не будет, но если более 10-ти с длиной более длины заголовка (например 1 Кб и выше), то будет ошибка, т.к. в 8-ми килобайтный лимит гарантированно вмещается только 10 полных заголовков.

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Я бы просто сменил хостера. Снял бы не дорогой vds и забыл бы об ограничениях.


Кто хочет делать большую таблицу как у меня (160 полей в строке), знайте ! у каждого поля есть заголовок, 700 с чем то байт. Если у вас 100 записей по 10 байт, то проблем не будет, но если более 10-ти с длиной более длины заголовка (например 1 Кб и выше), то будет ошибка, т.к. в 8-ми килобайтный лимит гарантированно вмещается только 10 полных заголовков.

 

Я бы как минимум разбил таблицу на несколько менее объемных. Даже сложно предположить что же там за 160 столбцов.

Link to comment
Share on other sites

  • 0

Я бы как минимум разбил таблицу на несколько менее объемных. Даже сложно предположить что же там за 160 столбцов.

 

 

Данные, контент, тех. характеристики.

Разбил на 3 таблицы, вот основная, в ней теперь осталось только 140 полей.




			
				


	Edited  by Kompilator
	
	

			
		
Link to comment
Share on other sites

  • 0

сделай дамп структуры таблицы и сюда выложи.

CREATE TABLE IF NOT EXISTS `bikelight` (  `id` smallint(6) NOT NULL,  `qimod` tinyint(4) NOT NULL,  `model` varchar(256) NOT NULL,  `factory` varchar(255) NOT NULL,  `lumen1` int(5) NOT NULL,  `lumen2` int(5) NOT NULL,  `lumen3` int(5) NOT NULL,  `lumen4` int(5) NOT NULL,  `lumen5` int(5) NOT NULL,  `lumen1r` int(5) NOT NULL,  `lumen2r` int(5) NOT NULL,  `lumen3r` int(5) NOT NULL,  `lumen4r` int(5) NOT NULL,  `lumen5r` int(5) NOT NULL,  `drvl1` float NOT NULL,  `drvl2` float NOT NULL,  `drvl3` float NOT NULL,  `drvl4` float NOT NULL,  `drvl5` float NOT NULL,  `drva1` float NOT NULL,  `drva2` float NOT NULL,  `drva3` float NOT NULL,  `drva4` float NOT NULL,  `drva5` float NOT NULL,  `wthr` int(5) NOT NULL,  `wthrr` int(5) NOT NULL,  `prlum` float NOT NULL,  `prfar` smallint(128) NOT NULL,  `qi` tinyint(128) NOT NULL,  `qled` tinyint(4) NOT NULL,  `hmass` smallint(4) NOT NULL,  `fmass` smallint(4) NOT NULL,  `led1` varchar(100) NOT NULL,  `led2` varchar(100) NOT NULL,  `tled` smallint(6) NOT NULL,  `waterp` varchar(20) NOT NULL,  `rembut` varchar(10) NOT NULL,  `lcd` varchar(10) NOT NULL,  `tsens` varchar(10) NOT NULL,  `akbsens` varchar(10) NOT NULL,  `qilight` tinyint(4) NOT NULL,  `qigar` tinyint(4) NOT NULL,  `qit` tinyint(4) NOT NULL,  `qicontr` tinyint(4) NOT NULL,  `qiinfo` tinyint(4) NOT NULL,  `kombim1` varchar(255) NOT NULL,  `kombim2` varchar(255) NOT NULL,  `kombim3` varchar(255) NOT NULL,  `kombim4` varchar(255) NOT NULL,  `kombim5` varchar(255) NOT NULL,  `kombim6` varchar(255) NOT NULL,  `kombim7` varchar(255) NOT NULL,  `kombim8` varchar(255) NOT NULL,  `kombim9` varchar(255) NOT NULL,  `kombim10` varchar(255) NOT NULL,  `pathbim1` varchar(255) NOT NULL,  `pathbim2` varchar(255) NOT NULL,  `pathbim3` varchar(255) NOT NULL,  `pathbim4` varchar(255) NOT NULL,  `pathbim5` varchar(255) NOT NULL,  `pathbim6` varchar(255) NOT NULL,  `pathbim7` varchar(255) NOT NULL,  `pathbim8` varchar(255) NOT NULL,  `pathbim9` varchar(255) NOT NULL,  `pathbim10` varchar(255) NOT NULL,  `previev` text NOT NULL,  `thisrev` text NOT NULL,  `doc` text NOT NULL,  `inet1` text NOT NULL,  `inet2` text NOT NULL,  `inet3` text NOT NULL,  `komment` text NOT NULL,  `datepubl` varchar(10) NOT NULL,  `obrazec` text NOT NULL,  `obrshop` text NOT NULL,  `obrshopname` varchar(255) NOT NULL,  `modfmag` text NOT NULL,  `foto1` text NOT NULL,  `foto2` text NOT NULL,  `foto3` text NOT NULL,  `foto4` text NOT NULL,  `foto5` text NOT NULL,  `foto6` text NOT NULL,  `foto7` text NOT NULL,  `foto8` text NOT NULL,  `foto9` text NOT NULL,  `foto10` text NOT NULL,  `foto11` text NOT NULL,  `foto12` text NOT NULL,  `foto13` text NOT NULL,  `foto14` text NOT NULL,  `foto15` text NOT NULL,  `foto16` text NOT NULL,  `foto17` text NOT NULL,  `foto18` text NOT NULL,  `foto19` text NOT NULL,  `foto20` text NOT NULL,  `foto21` text NOT NULL,  `foto22` text NOT NULL,  `foto23` text NOT NULL,  `foto24` text NOT NULL,  `foto25` text NOT NULL,  `foto26` text NOT NULL,  `foto27` text NOT NULL,  `foto28` text NOT NULL,  `foto29` text NOT NULL,  `foto30` text NOT NULL,  `foto31` text NOT NULL,  `foto32` text NOT NULL,  `foto33` text NOT NULL,  `foto34` text NOT NULL,  `foto35` text NOT NULL,  `foto36` text NOT NULL,  `foto37` text NOT NULL,  `foto38` text NOT NULL,  `fotokomm16` varchar(255) NOT NULL,  `fotokomm1` varchar(255) NOT NULL,  `fotokomm2` varchar(255) NOT NULL,  `fotokomm3` varchar(255) NOT NULL,  `fotokomm4` varchar(255) NOT NULL,  `fotokomm5` varchar(255) NOT NULL,  `fotokomm6` varchar(255) NOT NULL,  `fotokomm7` varchar(255) NOT NULL,  `fotokomm8` varchar(255) NOT NULL,  `fotokomm9` varchar(255) NOT NULL,  `fotokomm10` varchar(255) NOT NULL,  `fotokomm11` varchar(255) NOT NULL,  `fotokomm12` varchar(255) NOT NULL,  `fotokomm13` varchar(255) NOT NULL,  `fotokomm14` varchar(255) NOT NULL,  `fotokomm15` varchar(255) NOT NULL,  `ind_akb1` varchar(255) NOT NULL,  `ind_akb2` varchar(255) NOT NULL,  `ind_akb3` varchar(255) NOT NULL,  `ind_akb4` varchar(255) NOT NULL,  `ind_akb5` varchar(255) NOT NULL,  `ind_akb6` varchar(255) NOT NULL,  `ind_pr1` varchar(255) NOT NULL,  `ind_pr2` varchar(255) NOT NULL,  `ind_pr3` varchar(255) NOT NULL,  `ind_pr4` varchar(255) NOT NULL,  `ind_pr5` varchar(255) NOT NULL,  `ind_pr6` varchar(255) NOT NULL,  `ind_u1` varchar(255) NOT NULL,  `ind_u2` varchar(255) NOT NULL,  `ind_u3` varchar(255) NOT NULL,  `ind_u4` varchar(255) NOT NULL,  `ind_u5` varchar(255) NOT NULL,  `ind_u6` varchar(255) NOT NULL,  KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT;
Edited by Kompilator
Link to comment
Share on other sites

  • 0
`foto1` text NOT NULL,  `foto2` text NOT NULL,  `foto3` text NOT NULL,  `foto4` text NOT NULL,  `foto5` text NOT NULL,  `foto6` text NOT NULL,  `foto7` text NOT NULL,  `foto8` text NOT NULL,  `foto9` text NOT NULL,  `foto10` text NOT NULL,  `foto11` text NOT NULL,  `foto12` text NOT NULL,  `foto13` text NOT NULL,  `foto14` text NOT NULL,  `foto15` text NOT NULL,  `foto16` text NOT NULL,  `foto17` text NOT NULL,  `foto18` text NOT NULL,  `foto19` text NOT NULL,  `foto20` text NOT NULL,  `foto21` text NOT NULL,  `foto22` text NOT NULL,  `foto23` text NOT NULL,  `foto24` text NOT NULL,  `foto25` text NOT NULL,  `foto26` text NOT NULL,  `foto27` text NOT NULL,  `foto28` text NOT NULL,  `foto29` text NOT NULL,  `foto30` text NOT NULL,  `foto31` text NOT NULL,  `foto32` text NOT NULL,  `foto33` text NOT NULL,  `foto34` text NOT NULL,  `foto35` text NOT NULL,  `foto36` text NOT NULL,  `foto37` text NOT NULL,  `foto38` text NOT NULL,

божеж ты мой

 

Корочи создавай новую таблицу, к примеру назови её photos

поля:

idbikelight_id value

id - с автоиндексом

bikelight_id  - сюда будешь писать id родительской записи из таблицы bikelight

value - это значение

 

по такому же принципу можешь убрать из основной таблицы столбцы которые повторяются с цифрами.

 

Это даст тебе оптимизацию, когда тебе не нужно получать фотографии ты будешь просто получать записи элемента из bikelight, если же тебе нужны и фотки то выбираешь фотки из таблицы photos по bikelight_id

Link to comment
Share on other sites

  • 0

Это даст тебе оптимизацию, когда тебе не нужно получать фотографии ты будешь просто получать записи элемента из bikelight, если же тебе нужны и фотки то выбираешь фотки из таблицы photos по bikelight_id

 

 

Фото нужны всегда.

Из этой таблицы формируется обзор велофары.

 

Раньше я писал обзоры прямо в HTML, было неудобно что-то найти, поменять. Да и расчёт характеристик из уже известных параметров, такие как время работы в определённом режиме исходя из потребляемой мощности и яркости, КПД и т.п., занимало много времени.

 

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

 

htmlf-1.jpg

 

htmlf-2.jpg

 

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

Страница обзора формируется автоматически, исходя из id запрашиваемой фары. Все данные сгруппированы как мне надо, удобно производить поиск и редактирование.

 

htmlf-3.jpg

Link to comment
Share on other sites

  • 0
  Корочи создавай новую таблицу, к примеру назови её photos поля: id bikelight_id value id - с автоиндексом

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

Link to comment
Share on other sites

  • 0

Проверяю валидатором страницу, он ругается на ошибку, а я в коде в упор её не вижу.

Существует ли хороший редактор, в котором ошибка помечается прямо в тексте ХТМЛ кода ?

Link to comment
Share on other sites

  • 0
Страница обзора формируется автоматически, исходя из id запрашиваемой фары. Все данные сгруппированы как мне надо, удобно производить поиск и редактирование.

 

Проектирование базы данных очень важный момент, и проектировать её нужно до того как начали писать код. Или хотя бы изначально руководствоваться правильными принципами построения.

Link to comment
Share on other sites

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

Ну вот я и спроектировал, всё меня устраивало, а про длину строки не знал. Всего не упомнишь ведь.

Но обошлось, всё наладил, таперь работает.

Link to comment
Share on other sites

  • 0

В самом начале style.css, написано:

table {	  ... 	  box-shadow: 3px 3px 5px rgba(0,0,0,0.5);          ...	         }

Тень под всеми таблицами нужна, все устраивает.

Нужна одна таблица без тени, никак не могу её убрать, пишу так:

.t_sh table {                ...	        box-shadow: none;                ...	    }

И такой ХТМЛ код страницы:

<TABLE class = "t_sh">...</TABLE>

Но тень не пропадает, хотя другие параметры стилей .t_sh table изменяют внешний вид.

Вот страница - http://велосвет.рф/admin/shablon.html?obz=obz1

Подскажите, как стереть эту приставучую тень ?

Link to comment
Share on other sites

  • 0

В самом начале style.css, написано:

table {	  ... 	  box-shadow: 3px 3px 5px rgba(0,0,0,0.5);          ...	         }

Тень под всеми таблицами нужна, все устраивает.

Нужна одна таблица без тени, никак не могу её убрать, пишу так:

.t_sh table {                ...	        box-shadow: none;                ...	    }

И такой ХТМЛ код страницы:

<TABLE class = "t_sh">...</TABLE>

Но тень не пропадает, хотя другие параметры стилей .t_sh table изменяют внешний вид.

Вот страница - http://велосвет.рф/admin/shablon.html?obz=obz1

Подскажите, как стереть эту приставучую тень ?

// instead .t_sh tabletable.t_sh {...}
  • Like 1
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