-
Posts
214 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Posts posted by Kompilator
-
-
Карочи, буду переписывать код.
Разбивать таблицу на 3, так как с ограничением в 8 Кб, заведомо точно влезет не более 10-ти записей в строку.
Получится 1-я таблица, все характеристики и прочее, 2-3 таблицы - контент.
—
В рег.ру говорят, что ничего сделать не могут, внесением изменений в конфигурацию mySQL они не занимаются.
А переходить на более дорогой виртуальный выделенный сервер с моей посещаемостью менее 100 чел. нет смысла.
Резюме.
Кто хочет делать большую таблицу как у меня (160 полей в строке), знайте ! у каждого поля есть заголовок, 700 с чем то байт.
Если у вас 100 записей по 10 байт, то проблем не будет, но если более 10-ти с длиной более длины заголовка (например 1 Кб и выше), то будет ошибка, т.к. в 8-ми килобайтный лимит гарантированно вмещается только 10 полных заголовков.
-
Смените тип поля через phpMyadmin. Там увидите много вариантов -
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
и т д Подберите нужный.
Везде TEXT стоит.
Обратился в службу поддержки, говорят для устранения ошибки нужно перейти на более дорогой тариф.
Иначе ограничение в БД .
-
Ругается база данных:
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 что, грибов наелись когда такую чушь создавали ?
-
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 мою переменную.
-
Покажите вашу функцию отправки запроса.
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>".
-
Заголовки при запросе указываете?
Нет, не указываю.
Вставил Вашу строчку в функцию JS, вообще не выполняется ничего, или синтаксическая ошибка или ещё что-то.
-
Теперь такая беда.
В HTML написано такое:
<span id='revscr'><form action="modsql.html?id=<?php echo $res;?>&scrtop=0" method="post" name="test" onsubmit="return false;"></span>
В JS написано:
function scrl(){ var scrtop = window.pageYOffset; document.getElementById('revscr').innerHTML='<form action="modsql.html?id=<?php echo $res;?>&scrtop='+scrtop+'" method="post" name="test" onsubmit="return false;">';}
Т.е. если жмут на обычную submit, то строка заключенная в <span id='revscr'></span>, остается без изменений.
Если жмут другой кнопкой, то строка подменяется на новую, с другим значением переменной scrtop.
Так вот при нажатии другой кнопки отправляется пустая форма, т.е. там в POST штук 30 значений, и все они не определены.
Как побороть такое ?
-
как вариант страница закэшировалась в браузере, обновляйте страницу через ctrl+F5 , а не просто F5, и страница будет запрошена с сервера, а не взята из кэша.
Наверное, про контрл не знал, спасибо.
-
Что за чертовщина, уже не в первый раз замечаю странную особенность.
Как только задаю тут вопрос, в 80% случаев практически сразу сам нахожу решение,
А в этот раз больше, задал вопрос (2-мя постами выше) и обновил свою страницу ..... текст в текстовом поле вывелся !
Как это ?
Это очень плохо на самом деле...
Знаю, но не имею свободного трафика для создания нескольких тем .
-
А при чём тут PHP?
В этой ветке задаю вопросы по своему сайту, независимо от принадлежности или отсутствия оной к ПХП.
-
Столкнулся тут с неприятной особенностью:
<textarea type="text" name="obrazec" class="reviev1_place">Мой текст.</textarea>
, так вот, "Мой текст." выводится в текстовой области ИЕ и Хрома, а в Фаерфоксе нет.
Как победить это недоразумение ?
Placeholder не подходит, надо мочь редактировать этот текст.
-
document.querySelector('.win_left').scrollTop = 20;
Так и есть, спасибо !
-
А почему:
document.querySelector('.win_left').scrollTo(0,20);
не работает в ИЕ и Хроме ?
Чем можно заменить эту функцию ?
-
я бы на вашем месте сохранял позицию скроллов в куках или в локальном хранилище с помощью javascript. получить позицию прокрутки можно как-то так:
Спасибо, сделал.
Это работает только в Firefox, в хроме и ИЕ нет:
function st(){ window.scrollTo(0,<?php echo $_GET['scrtop'];?>);//работает везде document.querySelector('.win_left').scrollTo(0,<?php echo $leftstop;?>);//работает только в фаерфоксе document.querySelector('.win_right').scrollTo(0,<?php echo $rightstop;?>);//работает только в фаерфоксе}
Про куки, а вдруг они выключены ... не хочу чтобы экран скакал.
-
нет, достаточно отлавливать событие submit и в обработчике сначала делать какие-то свои манипуляции, а потом делать form.submit();
Спасибо, ява всетаки великий язык )))
—
Вот ещё у меня вопрос - для того, чтобы при обновлении страницы, она открылась на том же самом месте (скролл), делаю так:
var scrtop = window.pageYOffset;
, и при открытии новой, так:
window.scrollTo(0,<?php echo $_GET['scrtop'];?>);
Так вот, если Вы не забыли, у меня есть левое и правое окно с раскрывающимися списками велофар - http://велосвет.рф/compare.html?idright=32&idleft=32&navmenur=Kompilatorright&navmenul=Kompilatorleft&resimg=1&scrtop=0
, как мне получить значение скроллов этих двух маленьких окошек ? И как их же при обновлении страницы вставить обратно ?
-
можете записывать значение в скрытое поле. Но до отправки.
Получается надо ловить какое-то событие, вроде перемещения скролла ?
и как только он переместился писать:
document.getElementById('ID скрытое поле').innerHTML='значение ползунка'
, так ?
-
По submit отправляются данные формы способом GET.
Нужно прикрутить явой одну переменную к посылу, типа как в форме скрытым полем можно добавить ?
Или придётся весь посыл явой писать, а в форме вместо submit простой button поставить ?
-
Ну и это, сам себя не похвалишь как говорится )))))
В самом начале посмотрел на всякие конструкторы сайтов, реклама там всякая и т.д., неизвестно что они там в код внедрили, а тут сам всё сделал и знаю что и где поправить если что.
Пришлось конечно потратить намного больше времени, но не жалею, было интересно и для мозгов встряска полезна.
- 1
-
Вы можете вынести это в отдельный файл, и подключать его, если потребуется. http://php.net/manua...ion.include.php
Спасибо, это именно то, что я имел в виду =).
Вы самое главное не останавливайтесь)) как только вам надоест с этой самопиской, вы только скажите. вам сразу же CMS какую нибудь посоветуют. Ну это только когда надоест - значит время пришло)))Дело в том, что я уже всё написал: интерактивное сравнение велофар, параметрический их поиск, комментарии.
Всё.
Осталось "вылизать" только, подсказок для пользователей добавить и т.п.
Далее только наполнение сайта контентом.
Так что СМС мне не грозит, или как оно там называется.
-
для этого есть база данных
Получается мне придутся вставлять в каждую страницу, внизу одни и те же строки обращения к базе данных ?
Ладно ещё обращение, там куча строк: авторизация, куки, сессии всякие, сообщения об ошибках, различные ветки обсуждений ..... вобщем не менее 150 строк кода....
Эх, жаль что нельзя вынести всё это в отдельный файл и потом просто добавлять на него ссылку если потребуются комменты
-
Вот думаю комментарии в отдельный файл вынести и прикреплять к низу каждой страницы.
Такое вообще возможно ? а то добавлять в код каждой страницы как-то по моему не очень.
-
Что-то пока не найду как сделать при некорректном выборе, что бы не только сообщение об ошибке возникало, но и скидывало в дефаулт, т.е. что бы поле пустое становилось.
—
Разобрался:
document.getElementById('ID').innerHTML='по умолчанию'
-
А где вы там увидели число? =)))
Вот и говорю, сам черт ногу сломит.
В ассемблере нет никаких стрингов, сплошные числа, красота !
-
привидите к типу integer
к примеру вот так:
var min = +this.parentNode.querySelector('[name="min"]').value;var max = +this.parentNode.querySelector('[name="max"]').value;
Спасибо, так работает.
Вот я и говорю, ассемблер рулит, там нет таких неоднозначностей.
Если число, то хоть 10, хоть 1-значное, не надо там ничего к интегеру приводить, он корректно сравнит в любом случае.
Вопросы по PHP.
in PHP
Posted · Edited by Kompilator
Данные, контент, тех. характеристики.
Разбил на 3 таблицы, вот основная, в ней теперь осталось только 140 полей.