![]() |
not null не срабатывает
Вообщем, в таблице какая то часть полей имеет значение not null, какая то null но при внесении данных в базу из скрипта эти значения не учитываются в mysql и хоть все поля в html форме оставляй пустыми и отправляй на занесение в базу, такие данные хорошо заносятся и отображаются в браузере только естественно с пустыми полями, хотя какие то поля not null, что такое не могу понять, подскажите пожалуйста?
|
dima1981, попробуйте NOT NULL DEFAULT 'test' для символьных строк или DEFAULT 255 для чисел (потому что NULL- это вообще ничего, а NOT NULL это пробел или ноль)
|
ALTER TABLE `rg` CHANGE `m_o` `m_o` VARCHAR(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'test'
или не так? не много не понял... но так dmitryst не получается, записываются данные из m_o в базу, даже если форма не заполнена |
ALTER TABLE `rg` CHANGE `h_o` `h_o` TINYINT(20) NOT NULL DEFAULT '20', вообщем не срабатывает, обязательными к заполнению остаются только три селектовые формы день, месяц, год при чем цифры в них 01, 02, 03 и т.д. но отображается только 1, 2, 3 какую бы длинну поля не устанавливал, все остальные поля и пустыми заносятся.
Цитата:
как тогда обозначить поля, которые являются обязательными к заполнению? |
not null это не значение!!! not null - может быть только условием!
not null в описании таблицы (CREATE|ALTER table) означает что данный столбец должен иметь значение. Не обязательно к заполнению как раз поле обозначенное null null - это отсутствие значения, нулевым его не называют |
Цитата:
|
БД ты заполняешь не из форм, а из какого-нибудь PHP запускаешь sql-запрос. Чтобы ячейка таблицы стала null - нужно либо при записи строки вообще опустить упоминание этого столбца, либо явно указать ключевое слово null. А незаполненная web-форма на самом деле заполнена строками нулевой длины.
|
хорошо Busla так и есть БД ты заполняешь не из форм, а из какого-нибудь PHP запускаешь sql-запрос.
Как тогда сделать, чтоб передавалост не нулевой длинны т.е. данные из такого поля доходя до таблицы не воспринемались бы ею и обратно приходил ответ, что не все поля заполнены, заполните все поля или как можно ещё сделать, чтобы некоторые поля формы являлись обязательными (чтоб отправить форму эти поля надо заполнить и только тогда их база примет) к заполнению и некоторые по выбору т.е. хочешь заполнять заполняй, не хочешь как хочешь? ) |
Обычно, решения подобного рода возлагают на серверный скрипт (php).
|
да совсем я в этих грёбанных скриптах не разбераюсь в серверных и подавно, для меня эта фраза
Цитата:
блин чего все таки сообщения такие длинные получаются, сори что так себя утруждаете при их прочтении :sorry: |
Цитата:
|
понятен Busla, спсб
|
Цитата:
Т.е. типа такого примерно: Код:
If MyLabel.Text = "" then P.S. И научитесь наконец ставить запятые в своих постах. P.P.S. Цитата:
|
Delirium, как-то слабо приведённый код на php походит ;)
|
Busla, я привел логику работы, а уж переложить ее на любой язык, согласитесь, не составит труда, тем более что логика элементарная :)
|
не знаю Delirium, пробую оператором isset
if (!isset($_POST['m_d'])){ echo "пожалуйста заполните поле m_d"; exit(); } else {"m_d";} if (!isset($_POST['m_c'])){ echo "пожалуйста заполните поле m_c"; exit(); } else {"m_c";}<-- тут эт я произвольно написал т.к. не знаю, что писать в книге написанно: обрабатываете форму, но как вот я как мог. Можете тут, что то подсказать, потому, что она не срабатывает, вернее когда как тут срабатывает, данные доходят до mysql, но доходят и тогда когда поле не заполнено ) не знаю что предпринять, перебераю способы т.е. ) |
dima1981, Делайте проще.
Перед началом циклов If создайте переменную FillFields типа Integer, присвойте ей 0. Если условие !isset($_POST['m_d']) не выполняется, то FillFields =1, и так в каждом цикле. После прохода всех сверок, если вдруг хоть одно поле не заполнено было, в переменной FillFields будет лежать 1. Ну и последним циклом вы проверяете значение переменной FillFields , если оно равно 1, то не отсылаете данных, если равно нулю - то отсылаете. Да, и на форме пометьте звездочками/цветом/выделением поля, необходимые для заполнения. |
Спасибо Delirium, уверен ценный совет, теперь только нормальную книгу или статью про это подобрать и получится клево)
звездочки там до того как сам сайт создаваться начал ) Delirium ты не мог бы в примере, про FillFields интересно как это выглядит, какие там скобки, есть ли точка с запятой, сразу потом if прописывать или перед ним, что то дополнительно ставится, был бы очень признателен ) |
Блин... ну не кодил я на php. Я напишу примерно, а вы попробуйте переложить на php.
Код:
Dim FillFields as integer |
Спасибо Delirium, терь хоть понятно как это примерно выглядит )
|
$error = '';
if ( empty( $login ) ) $error = $error.'<li>не заполнено поле "Имя"</li>'."\n"; else $query = "INSERT INTO ".TABLE_USERS." не так? ) |
dima1981, ссылка на java-script-овый вариант проверки форм (может, понадобится :) )
|
http://www.whatis.ru/razn/razn12.shtml Это кстати отлично подходит не представлял, что на столько обычный способ есть, только про качество не скажу не знаю но для 5php самое то )
Благодарю dmitryst, только java для меня атас совсем даже и не пробЫвал ни разу, мне рнр хватает скоро вопросы во сне видеть начну ) |
dima1981,
я когда-то приводил пример JavaScript-валидатора, посмотрите тут , еще несколько полезных приемов в есть в той же теме. |
Понял, спасиб за переход, только во первых там у меня почти все сделанно на php пробелы отсекаются, не нужные знаки убераются, только вот для емеил формы не могу проверку сделать, но думаю раздобуду код потихоньку ) и во вторых если скрипт не поддерживается у заполняющего форму на машине, то, что тогда, как быть, конечно это побыстрее на jave в смысле, но на php попрактичней походу, хотя не знай не силен по этим да и вообщем остальным направлениям, так копирую коды, которые требуется для сайта, который создаю где придется, тем и рад, вообщем вот так )
Кстати если не затруднит, что с этим кодом взял отсюда http://www.internet-technologies.ru/...ticle_701.html для построчного вывода данных из таблицы, подредактировал под то, что требуется, мне в основном в плане дизайна, получилось так PHP код:
Хоть узнать вообщем подходит эт код к mysql 6 и php5 или узнать, что с этим кодом не так, походу все ) |
Подскажите пожалуйста, выполняю этот код по постраничному выводу данных, отображает нормально первую страницу в четыре поля, навигацию определяет хорошо т.е. подсчет полей в базе по этому запросу совершает праильно, но перехожу на вторую страницу пишет
Notice: Undefined index: m_o in C:\apache\localhost\www\zg.php on line 32 Notice: Undefined index: m_d in C:\apache\localhost\www\zg.php on line 32 Поле0 Поле1 Поле2 Поле3 Notice: Undefined index: m_o in C:\apache\localhost\www\zg.php on line 41 Notice: Undefined index: m_d in C:\apache\localhost\www\zg.php on line 41 т.е. про эти строки PHP код:
PHP код:
|
Цитата:
Цитата:
Цитата:
|
это не подходит )
мне кажется все или из за того, что $begin = $page*$onpage; $sql = "SELECT * FROM ".$table." где бегин постоянно равен нулевому числу т.к. пейдж=0 умноженный на онпейдж=5 равно ноль отсюда он и стартует или $count потому, что фиксирован на нуле вообщем трудно это что то совсем или раз Цитата:
Цитата:
|
Цитата:
$sql = "SELECT * FROM `.$table.` where m_o='".$_POST['m_o']."' and ... и далее по тексту. |
dmitryst, я не спорю, что это не будет работать.
Просто сейчас вы помните, что за этой * лежит, а через полгода открываешь код, смотришь тупо на select * from table и думаешь, а что ж там за поля то? Гораздо проще написать 1 раз нужные поля через запятую, и радоваться. К модераторам: тема переросла из MySql (Not Null) в решение проблем по PHP. Считаю, что тему надо переименовать и перенести в программирование, mysql уже не обсуждается. |
Да может там она половчее начнет смотреться )
только почему вот вторую страницу не отображает, навигацию показывает, поля таблицы в которой размещаются полученные из базы данные отображаются, но нет данных, как в первой странице, тут не от сесий зависит, как вы думаете, потому что я что мог передумал тут? ) |
Вообщем отмечаю тему решенной, хотя она совсем не решенная, короче бывает :oszone:
|
dima1981, ну так применяйте javascript-проверку - ИМХО, это проще, даже страницу перегружать не надо (т.е. поле не заполнено - кнопка отправки вообще блокируется)
|
dmitryst, например java на крмпьютере запрашивающего не включенно, что дополнительно пару проверок включать и php дополнительно, не могу тут разобраться, подскажи пожалуйста?
|
Вообщем решено, но данные из базы постранично выведу )
И на счет java спасибо dmitryst, посмотрел на эту тему повнимательнее, хороший способ для такой задачи, как проверка на заполнение. И вот понять не могу, почему все таки у меня так темы на форуме разростаются, но вот кпд практически постоянно у них обратно пропорционален колличеству ответов, но это другая история, спасибо и Делириуму, скоро появлюсь если не погибну или не умру ) |
Время: 00:23. |
Время: 00:23.
© OSzone.net 2001-