Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запись в базу и вывод из неё
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Запись в базу и вывод из неё

Страниц (1): [1]
 

1. Варлес - 06 Июня, 2010 - 02:48:14 - перейти к сообщению
Доброе время суток. В меня следующая загвоздка.
Мне надо записать в базу даные и потом вывести их ф-й implode.
Даные что передаются с формы а именно с чекбоксов как я понимаю надо записывать тоже через implode, НО так как чекбоксы могуть быть некоторые пустые, а implode все равно считает их и становит разделитель. При выводе он востанавливает эти разделители, а мне они мешают.

Как верно сделать запись в базу, именно построит масив с даными с чекбоксов для обработки implode и записи.
(Добавление)
Вопрос по пытался как можно яснее написать. Надеюсь меня поймете.
2. scarbo - 06 Июня, 2010 - 17:18:56 - перейти к сообщению
Наверное проверить массив чекбоксов на TRUE, и если чекбокс FALSE, то удалить его из массива.
3. Варлес - 06 Июня, 2010 - 18:15:47 - перейти к сообщению
scarbo пишет:
Наверное проверить массив чекбоксов на TRUE, и если чекбокс FALSE, то удалить его из массива.

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

Вот мой код приема, проверки и обработки:
PHP:
скопировать код в буфер обмена
  1.  
  2. $in1 = isset($_POST['in1']) ? check(mb_substr($_POST['in1'], 0, 50)) : '';
  3. $mass = array ("$in1", "$in2", "$in3", "$in4", "$in5");
  4. $tobase = implode("|", $mass);
  5.  


Кто по опытней может подсказать решение этого вопроса?
4. scarbo - 06 Июня, 2010 - 18:25:58 - перейти к сообщению
Цитата:
Кто по опытней может подсказать решение этого вопроса?

Найди нужную - http://php.su/functions/?cat=array
5. Варлес - 06 Июня, 2010 - 18:39:52 - перейти к сообщению
scarbo пишет:
Найди нужную - http://php.su/functions/?cat=array


Думаю мне нужно проверить функцией in_array
Но подскажите как мне это сделать. Желательно готовым кодом.

PHP:
скопировать код в буфер обмена
  1.  
  2. $in1 = isset($_POST['in1']) ? check(mb_substr($_POST['in1'], 0, 50)) : '';//Принимаем и обрабаотываем
  3. $mass = array ("$in1", "$in2", "$in3", "$in4", "$in5");//Масив
  4. $tobase = implode("|", $mass);//Разбитие масива.
  5.  

Но как мне сделать что если нет значений $in2 и $in5, к примеру, они не будут использоваться функцией имплоде для разбития?
Напишите кто готовый кусок кода пожалуйста.
6. scarbo - 06 Июня, 2010 - 18:51:02 - перейти к сообщению
in_array проверяет является ли объект массивом и все, а нужно удалить пустые значения
для подходит например вот это - http://php.su/functions/?array-filter
PHP:
скопировать код в буфер обмена
  1. $mass = array_filter($mass, "isNotNullFiter");
  2. function isNotNullFiter($var){
  3. return $var!='';//или поставь сюда что-то из mb_string
  4. }

Ну а вообще надо сразу массив заполнять правильно.
А как сам подумай.
7. Варлес - 06 Июня, 2010 - 19:03:34 - перейти к сообщению
scarbo пишет:
Ну а вообще надо сразу массив заполнять правильно.
А как сам подумай.

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

Можеш написать мне кусок готового кода для проверки и верности заполнения масива.
Мой моск сейчас взорвется от мыслей, второй день долбу моск как сделать нужное мне.
Желательно с комментами к переменным, что означает та или иная переменная.
8. scarbo - 06 Июня, 2010 - 19:53:50 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $in1 = isset($_POST['in1']) ? check(mb_substr($_POST['in1'], 0, 50)) : ''; //Принимаем и обрабаотываем
  4. $mass = array("$in1", "$in2", "$in3", "$in4", "$in5"); //Массив
  5. $mass = array_filter($mass, "isNotNullFiter");//вызываем функцию isNotNullFiter для проверки КАЖДОГО элемента массива на вшивость(в нашем случае чтобы переменная не была равна '', если хочешь сделай проверку на длину строки)
  6. function isNotNullFiter($var)//функция фильтрации, отдает только те эелементы, которые соответсвуют условию
  7. {
  8.     return $var != ''; //или поставь сюда что-то из mb_string, например - mb_strlen($var) >= 1; или че там у теб проверяется, я не знаю.
  9. }
  10. $tobase = implode("|", $mass); //Разбитие массива.
  11.  
  12. ?>

Это костыль к твоему коду, изначально правильно заполнить массив я не могу, так как не знаю какие там у тебя чекбоксы, там может лучше JS использовать и отдавать php сразу готовый массив, да и времени нет.
9. Варлес - 07 Июня, 2010 - 18:47:25 - перейти к сообщению
Что бы не начинать новую тему задам свой вопрос здесь.
Как зделать проверку на наличие той или иной записи в одном поле таблицы? Вот мой код проверки на наличие но ничего не работает.
PHP:
скопировать код в буфер обмена
  1.  
  2. echo '&nbsp;<input name="si1" type="checkbox" value="Шрамы" ' . ($data['pole']=="Шрамы" ? 'checked="checked"' : '') . ' />&nbsp;Шрамы';
  3.  


Но вот в одном поле таблы записано приблизительно так:
Шрамы|Тату|Пирсинг

Надеюсь суть вопроса изложил верно.
10. valenok - 07 Июня, 2010 - 20:58:29 - перейти к сообщению
WHERE `field` LIKE '%тату%'
11. Варлес - 07 Июня, 2010 - 21:20:43 - перейти к сообщению
valenok пишет:
WHERE `field` LIKE '%тату%'

Это то я знаю. но не писать же километр кода для проверки 5 значений. Да и если таких значений будет не 5 а 15 к примеру, оператором иф оч много проверять.

Отталкиваясь от моего варианта можно как то определить?

PHP:
скопировать код в буфер обмена
  1. echo '&nbsp;<input name="si1" type="checkbox" value="Шрамы" ' . ($data['pole']=="Шрамы" ? 'checked="checked"' : '') . ' />&nbsp;Шрамы';


таким вариантом не получится же?

PHP:
скопировать код в буфер обмена
  1. echo '&nbsp;<input name="si1" type="checkbox" value="Шрамы" ' . ($data['pole']=="[b]%[/b]Шрамы[b]%[/b]" ? 'checked="checked"' : '') . ' />&nbsp;Шрамы';


Напишите кусок кода для проверки наличия того или иного слова или части слова в поле таблицы. Зарание благодарен.
12. valenok - 07 Июня, 2010 - 21:27:58 - перейти к сообщению
Либо писать километр
WHERE `field` LIKE '%тату%' OR .. OR ... OR ... OR ... OR .. '%шрамы%'
либо подумать о нормализации базы данных.
О том что это такое, можно прочесть в разделе Уроки PHP на форуме.
Автор Champion

 

Powered by ExBB FM 1.0 RC1