Jump to content
  • 0

Вопросы по PHP.


Kompilator
 Share

Question

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

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

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

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

Link to comment
Share on other sites

Recommended Posts

  • 0
Присваивание значения свойству window.location.href работает как редирект на заданный адрес =)

Так и должно быть.

Видите, все переменные которые идут паровозиком - не определены, т.е. там пусто. При генерации новой страницы, РНР проставит эти значения (пустоту) в форму и она окажется пустая.

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

Вот если сделать переход в новую вкладку (прявязать другую функцию к кнопке):

function go_http(id)    {            window.open(id, '_blank');    }

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

<form action="reviev_n.html" method="get">

Значит в первом случае получается каким-то образом отрабатывают 2 действа ?

Ну да ладно, спасибо Вам, есть за что :rolleyes:.

Я тег <button> заменил на <span>, там такую же кнопку нарисовал, она работает корректно.

Вот где оно находится, кнопка "Очистить" не хотела работать - http://велосвет.рф/reviev_n.html

Там только еще не доделано, но если проставить какое нить значение в поле, то "Показать" не стирает, а "Очистить" теперь стирает.


 

Это кнопка обнуления данных поиска.

по умолчанию button имеет type="submit" , чтобы была простой кнопкой укажите тип button

 

Где ж ВЫ были час назад ? =)))))))

Link to comment
Share on other sites

  • 0
Где ж ВЫ были час назад ? =)))))))

но приводит к отправке формы она только в случае если находится внутри <form></form>, раз у вас происходит отправка формы когда кнопка вне формы, возможно у вас где-то затесался второй закрывающий тег </form>

Link to comment
Share on other sites

  • 0
но приводит к отправке формы она только в случае если находится внутри  

, раз у вас происходит отправка формы когда кнопка вне формы, возможно у вас где-то затесался второй закрывающий тег

Так снаружи же и есть.

Ну вроде уже классом сделал.

Спасибо.

Link to comment
Share on other sites

  • 0

Озадачился тут как из формы данные в JS поиметь.
Браво интернету насыщенному нерабочим примерам !!!

Нерабочие примеры:
http://mainproject.ru/js/form.shtml
http://www.i2r.ru/static/256/out_21123.shtml
http://www.cyberforum.ru/javascript/thread165663.html
http://ru.stackoverflow.com/questions/431993/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8%D0%B7-%D0%BF%D0%BE%D0%BB%D1%8F-%D1%84%D0%BE%D1%80%D0%BC%D1%8B
, и это не всё, в гугле вся первыя страница выдачи не рабочая.

и наконец рабочий, ОДИН ! - http://uroki-javascript.ru/js/js_form_validation.php

И ещё, меня давно терзает вопрос, почему в JS так много разновидностей инструкций, сделать одно и то же ?
Возможно все выше приведенные неработающие примеры и работают, но обратите внимание, у всех разные операторы, разные скобки, операнды где 2, а где 1. Сам черт ногу сломает.
Я вот в ассемблере свои изделия программирую (микроконтроллеры), там все четко, ни шага в сторону.
Недоволен вобщем я явойскрипт :(

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Может они рабочие, а вы просто не разобрались? =)

Скорее всего, убивает разнообразие путей выполнения одной и той же задачи.

Привык к асму, там как-то проще.

Вот, почему-то флажок при чтении его из JS всегда = 'on', даже когда выключен.

alert (document.forms['revform']['rem_but'].value);
Edited by Kompilator
Link to comment
Share on other sites

  • 0

Сделал так:

if (revform.akb.checked) {akb='on'}else{akb=''}

, это подтверждение моих слов.

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

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

А потом удивляемся, чегой-то у нас на таких мощных машинах всё тормозит ? Да потому, что кучу ненужного понаписали.

Помню ещё во времена ДОСа играли себе не парились, появился в России виндовс 3.0, запустил я под него DOOM2 и возрадовался, он ТОРМОЗИТ ! на 486DX2-66 с 8 метрами памяти.

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

Link to comment
Share on other sites

  • 0

Сделал так:

if (revform.akb.checked) {akb='on'}else{akb=''}

, это подтверждение моих слов.

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

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

А потом удивляемся, чегой-то у нас на таких мощных машинах всё тормозит ? Да потому, что кучу ненужного понаписали.

Помню ещё во времена ДОСа играли себе не парились, появился в России виндовс 3.0, запустил я под него DOOM2 и возрадовался, он ТОРМОЗИТ ! на 486DX2-66 с 8 метрами памяти.

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

value - значение поля

checked - состояние поля (типы radio и  checkbox)

 

Разница есть?

 

Теперь далее,

<input type="checkbox" name="test" value="значение">

checkbox всегда имеет одно и то же значение (по умолчанию оно равно 'on'), но может иметь 2 разных состояния, в зависимости от состояния параметр либо отправляется на сервер при запросе либо нет(не выбранные не отсылаются!).

 

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

<input type="radio" name="test" value="значение 1" checked><input type="radio" name="test" value="значение 2">
  • Like 1
Link to comment
Share on other sites

  • 0

Решил сделать проверку вводимых значений:

Вот так написал:

<select class ="rev_sel_cena" name="cena_max" size="1" onchange="cena()">

И такой обработчик:

function cena()	{		cenamin=document.forms["revform"]["cena_min"].value;		cenamax=document.forms["revform"]["cena_max"].value;		alert ('min='+cenamin+', max='+cenamax);					if (cenamin > cenamax)			{				alert ('Минимальная стоимость не может быть больше максимальной.'); 				return;			}		}

Проблема в том, что IF срабатывает не всегда.

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


wwt, ясно.

Но всё равно, много в JS всякой ненужной всячины налепили.


 

 

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

В радио можно выбрать только один вариант если не ошибаюсь, а мне надо чтобы хоть ни одного, хоть все четыре.

Вобщем я уже сделал с условием, выше писал.

Edited by Kompilator
Link to comment
Share on other sites

  • 0
В радио можно выбрать только один вариант если не ошибаюсь, а мне надо чтобы хоть ни одного, хоть все четыре.

 

ну тогда делайте флажками

<input type="checkbox" name="test1" value="значение 1"><input type="checkbox" name="test2" value="значение 2"><input type="checkbox" name="test3" value="значение 3"><input type="checkbox" name="test4" value="значение 4">

а в php проверяете на существование параметра, если его нет то значит чекбокс не был выбран

if( ! isset($_POST['test1'])){    echo 'чекбокс не выбран';}
Link to comment
Share on other sites

  • 0

 

В радио можно выбрать только один вариант если не ошибаюсь, а мне надо чтобы хоть ни одного, хоть все четыре.

 

ну тогда делайте флажками

<input type="checkbox" name="test1" value="значение 1"><input type="checkbox" name="test2" value="значение 2"><input type="checkbox" name="test3" value="значение 3"><input type="checkbox" name="test4" value="значение 4">

а в php проверяете на существование параметра, если его нет то значит чекбокс не был выбран

if( ! isset($_POST['test1'])){    echo 'чекбокс не выбран';}

Спасибо, с этим я разобрался.

Интересует как быть с проверкой допустимости данных в форме.

Через раз работает.

Link to comment
Share on other sites

  • 0

Проверяйте поля при отправке формы, если какое-то поле не заполнено выдавайте ошибку и не отправляйте.

Именно, проверяю в яваскрипте.

И именно там, до отправки формы не работает условие, обе переменные в наличии, алерт их выводит, а условие не срабатывает через раз.

Link to comment
Share on other sites

  • 0

У Вас работает, а в моей странице снова через раз.

Скопировал условие один в один.

Вот пример:

err1.jpg

, как это понимать ?

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

(60 > 130) = true, КАК ?


Вот в тестере смоделировал.

Если число max трёхзначное, а min двухзначное (и наоборот), то условие работает неправильно.

Выберите в левом поле - 30, а в провам - 130 и посмотрите что будет.

https://jsfiddle.net/qagpj7wk/4/

Edited by Kompilator
Link to comment
Share on other sites

  • 0

 

привидите к типу integer

 

к примеру вот так:

var min = +this.parentNode.querySelector('[name="min"]').value;var max = +this.parentNode.querySelector('[name="max"]').value;

Спасибо, так работает.

Вот я и говорю, ассемблер рулит, там нет таких неоднозначностей.

Если число, то хоть 10, хоть 1-значное, не надо там ничего к интегеру приводить, он корректно сравнит в любом случае.

Link to comment
Share on other sites

  • 0
Вот я и говорю, ассемблер рулит, там нет таких неоднозначностей. Если число, то хоть 10, хоть 1-значное, не надо там ничего к интегеру приводить, он корректно сравнит в любом случае.

 

А где вы там увидели число? =)))

 

https://jsfiddle.net/qagpj7wk/6/

Link to comment
Share on other sites

  • 0

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

Разобрался:

document.getElementById('ID').innerHTML='по умолчанию'
Edited by Kompilator
Link to comment
Share on other sites

  • 0

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

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

Link to comment
Share on other sites

  • 0

для этого есть база данных

Получается мне придутся вставлять в каждую страницу, внизу одни и те же строки обращения к базе данных ?

Ладно ещё обращение, там куча строк: авторизация, куки, сессии всякие, сообщения об ошибках, различные ветки обсуждений ..... вобщем не менее 150 строк кода....

Эх, жаль что нельзя вынести всё это в отдельный файл и потом просто добавлять на него ссылку если потребуются комменты :(

Link to comment
Share on other sites

  • 0

 

для этого есть база данных

Получается мне придутся вставлять в каждую страницу, внизу одни и те же строки обращения к базе данных ?

Ладно ещё обращение, там куча строк: авторизация, куки, сессии всякие, сообщения об ошибках, различные ветки обсуждений ..... вобщем не менее 150 строк кода....

Эх, жаль что нельзя вынести всё это в отдельный файл и потом просто добавлять на него ссылку если потребуются комменты :(

 

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

 

http://php.net/manual/ru/function.include.php

Edited by li4e
  • 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