PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (15): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец

> Найдено сообщений: 223
Telnet Отправлено: 13 Сентября, 2014 - 12:26:08 • Тема: как проверить ассоциативный массив на пустоту • Форум: Вопросы новичков

Ответов: 2
Просмотров: 961
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array("adress"=>'',"map_location"=>'');       
  3. var_dump(empty($array ));      
  4.  


Вот такой простой код выводит
bool(false)
т.е говорит нам о том что массив не пустой, так как если бы он был пустой то вернуло бы true
а нам нужно проверить если есть ключи массива но нет значений то, такой массив нужно считать пустым.
Можно конечно это проверять так
PHP:
скопировать код в буфер обмена
  1.  
  2. $array1 = array("adress"=>'123',"map_location"=>'');
  3. $array2 = array("adress"=>'',"map_location"=>'');
  4. function empty_assoc($array){
  5.         $empty = true; 
  6.         foreach( $array as $key => $val ){
  7.                 $empty = (empty($val)) ? true : false  ;
  8.                 if(!$empty) break;
  9.         }
  10.         return $empty; 
  11. }
  12. var_dump(empty_assoc($array1));
  13. var_dump(empty_assoc($array2));
  14.  
  15.  

получаем
bool(false) bool(true)
Но может можно как то полегче
Telnet Отправлено: 27 Августа, 2014 - 21:38:50 • Тема: Подсчитать количество для повторяющихся имен • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 14
Всем привет
В результате такого запроса
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT order_item.product_name, order_item.product_quantity FROM l5ji3_jshopping_order_item  AS order_item  WHERE order_item.order_id IN
  2. (SELECT order_history.order_id FROM `l5ji3_jshopping_order_history` AS order_history WHERE order_history.order_status_id = 7 AND order_history.order_id IN( SELECT orders.order_id FROM `l5ji3_jshopping_orders` AS orders WHERE orders.user_id = 44 ))

Получаю такой результат

А нужно что б повторяющихся полей не было а там где Акции Автосервис было просто 500
пробывал так
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT order_item.product_name, order_item.product_quantity FROM l5ji3_jshopping_order_item  AS order_item  WHERE order_item.order_id IN
  2. (SELECT order_history.order_id FROM `l5ji3_jshopping_order_history` AS order_history WHERE order_history.order_status_id = 7 AND order_history.order_id IN( SELECT orders.order_id FROM `l5ji3_jshopping_orders` AS orders WHERE orders.user_id = 44 ))
  3. GROUP BY order_item.product_name

Получаю такой результат

т.е это приводит не к сложению а просто к показу первой найденной строки

Помню что там как то не сильно сложно можно было складывать но сам видимо не вспомню, нужна Ваша помощь.
(Добавление)
все сам разобрался
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT order_item.product_name, SUM(order_item.product_quantity) FROM l5ji3_jshopping_order_item  AS order_item  WHERE order_item.order_id IN
  3. (SELECT order_history.order_id FROM `l5ji3_jshopping_order_history` AS order_history WHERE order_history.order_status_id = 7 AND order_history.order_id IN( SELECT orders.order_id FROM `l5ji3_jshopping_orders` AS orders WHERE orders.user_id = 44 ))
  4. GROUP BY order_item.product_name
  5.  
  6.  
Telnet Отправлено: 22 Августа, 2014 - 22:48:41 • Тема: Из формы приходят не все переменные • Форум: Вопросы новичков

Ответов: 2
Просмотров: 160
Спасибо Мелкий ты просто бог программирования.
Точно там создается 2 эти формы в цикле.
Я тоже об этом думал искал повтор в php файле который генерируется страницу, а там же не повторений просто for и цикл в котором все это генерируется.
Telnet Отправлено: 22 Августа, 2014 - 21:04:17 • Тема: Из формы приходят не все переменные • Форум: Вопросы новичков

Ответов: 2
Просмотров: 160
Всем привет.
При попытке осуществить не большую доработки самой обычной 1 страничной формы, столкнулся с проблемой, которую видимо сам не в силах решить.
Нужно было добавить в форму 1 новое поле, это было сделано
Вот сам html код формы
Спойлер (Отобразить)


Вот что было мной добавлено
CODE (html):
скопировать код в буфер обмена
  1.  
  2.        <tr>
  3.          <td class="key">
  4.            Под заголовок
  5.          </td>
  6.          <td>
  7.            <input type="text" class="inputbox" size="50" name="subtitle" value="">
  8.          </td>
  9.        </tr>   
  10.  

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


Вообщем у кого будут какие идеи пишите, так как я уже все что можно перепробывал. Огорчение
(Добавление)
все что у нас содержится в файле post.php это куда идут данные
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "<pre>".print_r($_GET, true)."</pre>";
  3.  
Telnet Отправлено: 10 Мая, 2014 - 15:15:58 • Тема: Fulltext поиск • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 11
Всем привет.
Есть задача сделать поиск по сайту.
Решил делать через индексы fulltext в таблице
все хорошо все понятно, если б не одно но
как написано тут
http://www[dot]mysql[dot]ru/docs/man/Ful[dot][dot][dot]text_Search[dot]html
Поиск по слову ``MySQL'' в предыдущем примере не приводит к каким-либо результатам, так как это слово присутствует более чем в половине строк. По существу, данное слово целесообразно трактовать как стоп-слово (т.е. слово с нулевой смысловой ценностью). Это наиболее приемлемое решение - запрос на естественном языке не должен возвращать каждую вторую строку из таблицы размером 1Гб.

Это можно устранить как я понял добавив в запрос аттрибут IN BOOLEAN MODE
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM articles
  2.         WHERE MATCH (title,body) AGAINST ('MySQL' IN BOOLEAN MODE);


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

Я если честно не могу вообще понять почему без IN BOOLEAN MODE он просто по слову MySQL ни чего не возвращает.
И возможно как то сделать так что он искал и выдавал результат и для тех слов которые будут встречаться более чем в половине статей на сайте и одновременно сохранить релевантоность.

Просто получается что тогда либо есть возможность использование релевантности, но простые одно словные запросы которые будут содержаться более чем в половине строк , будут возвращать 0 записей
Или же с использованием IN BOOLEAN MODE мы будем получать все результаты но без возможности сделать сортировку по релевантности.
Telnet Отправлено: 18 Апреля, 2014 - 11:17:15 • Тема: Наполнение массива • Форум: JavaScript & VBScript

Ответов: 0
Просмотров: 534
Всем привет
Такой код
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5.         <title>Привeт </title>
  6.         <style type="text/css"> </style>
  7.         <script>
  8.                 var relation = [];
  9.                 relation[8][1] = "345";
  10.                 relation[7][2] = "123";
  11.                 relation[7][3] = "456";
  12.                 relation[7][4] = "6789";
  13.         </script>
  14. </head>
  15. <body>
  16.         <div>
  17.         </div>
  18. </body>
  19. </html>
  20.  


Выдает такую вот ошибку
Uncaught TypeError: Cannot set property '1' of undefined
В чем проблема?
(Добавление)
Доперло нужно так или так
CODE (html):
скопировать код в буфер обмена
  1.  
  2.                 var relation = [];
  3.                 relation[7] = [];
  4.                 relation[8] = [];
  5.                 relation[8].push("345");
  6.                 relation[7][2] = "123";
  7.                 relation[7][3] = "456";
  8.                 relation[7][4] = "6789";
  9.  
Telnet Отправлено: 18 Апреля, 2014 - 09:50:19 • Тема: переменная в публичном свойстве дает ошибку синтаксиса • Форум: Вопросы новичков

Ответов: 3
Просмотров: 143
1 нельзя использовать при объявлении полей в классе иные поля

и что ни какую другую перемененную туда не всунешь, я даже просто пытался вместо $this->dbprefix писать просто функцию getcwd()

результат тот же ошибка.
(Добавление)
Да перенес определение свойства rules в конструктор и заработало
Спасибо
Telnet Отправлено: 18 Апреля, 2014 - 09:24:19 • Тема: переменная в публичном свойстве дает ошибку синтаксиса • Форум: Вопросы новичков

Ответов: 3
Просмотров: 143
всем привет
Вот такой не хитрый код
PHP:
скопировать код в буфер обмена
  1.  
  2. Class Simple
  3. {
  4.         public $dbprefix = 'cms';
  5.         public $rules = array(
  6.                 array(
  7.                         'sql'   => 'Select id as value, title as text FROM '.$this->dbprefix.'catalog_styles WHERE status = 1'
  8.                 ),     
  9.         );
  10.  
  11. $ex = new Simple();
  12.  


Выдает вот такую ошибку
Parse error: syntax error, unexpected '.', expecting ')' in E:\openserver\OpenServer\domains\test.local\class.php on line 7
Кто нить может объяснить почему?
Telnet Отправлено: 17 Апреля, 2014 - 21:46:47 • Тема: Расширение базового класса • Форум: Вопросы новичков

Ответов: 3
Просмотров: 133
а там прикол видимо в том что у класса Ex своя функция
а у родительского Simple своя

но ведь я посути расширяя метод родительского класса работаю над усовершенствованием метода Simple::edit и я полагаю что все даже локальные переменные используемые мною в дочернем классе будут доступны и в родительском или же это относится только к свойствам класса?
Telnet Отправлено: 17 Апреля, 2014 - 20:46:29 • Тема: Расширение базового класса • Форум: Вопросы новичков

Ответов: 3
Просмотров: 133
Всем привет
Для простоты понимая я упростил код

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. Class Simple
  4. {
  5.         function edit($arg){
  6.                 $tpl['content'] = 'content';
  7.                 echo "<pre>".print_r($tpl, true)."</pre>";
  8.         }
  9. }
  10. Class Ex extends Simple
  11. {
  12.         function edit($arg = null){
  13.                 $tpl['js'] = 'js';
  14.                 parent::edit($arg);
  15.         }
  16. }
  17. $ex = new Ex();
  18. $ex->edit();
  19.  
  20.  


Выдает
Array
(
[content] => content
)
а где элемент массива из расширяющего класса Ex
$tpl['js'] = 'js';
и как правильно его передать в массив $tpl
Telnet Отправлено: 17 Апреля, 2014 - 10:36:25 • Тема: Значение элемента массива как имя переменой • Форум: Вопросы новичков

Ответов: 4
Просмотров: 209
LIME пишет:
а у меня вопросы по make
какая магия заключена в строчке $rules = $rules;
и где ретурн?...мне без него беспокойно )
(Добавление)
и смотрим почему нельзя $rule['field'] передавать в set_value


Магии ни какой просто мой тупеж Не понял

в CodeIgniter оказалось что можно эти переменные которые берутся из базы передать массивом через
$htmlForm->makeTable($rules,$this->load->_ci_cached_vars);
Весь код функции если кому интересно стал таким
Всем спасибо за помощь
PHP:
скопировать код в буфер обмена
  1.  
  2.         public function makeTable($rules,$values){
  3.  
  4.                 $html  = '<table class="table">';
  5.                 foreach($rules as $rule){
  6.                         switch ($rule['type']){
  7.                                 case 'text':
  8.                                 $html .= $this->text($rule,@$values[$rule['field']]);
  9.                                 break;
  10.                                 case 'checkbox':
  11.                                 $html .= $this->checkbox($rule,@$values[$rule['field']]);
  12.                                 break;
  13.                                 case 'textarea':
  14.                                 $html .= $this->text($rule,@$values[$rule['field']]);
  15.                                 break;
  16.                         }
  17.                 }
  18.                 $html  .= '</table>';
  19.                 return $html;
  20.         }
  21.        
  22.         protected function text($rule,$value){
  23.                 return '<tr>'.
  24.                         '<td><span class="tdCaption"><strong>'.$rule['label'].'*</strong></span></td>'.
  25.                         '<td>'.
  26.                                                 '<input type="text" name="'.$rule['field'].'" value="'.set_value($rule['field'],@$value).'"  />'.
  27.                                                 '<strong>'.form_error($rule['field']).'</strong>'.
  28.                                         '</td>'.
  29.                     '</tr>';
  30.         }
  31.         protected function checkbox($rule){
  32.                 (set_value($rule['field'],@$value) == 1) ?  $checked['status'] = ' CHECKED ' : $checked['status'] = '';
  33.                 return '<tr>'.
  34.                         '<td><span class="tdCaption"><strong>'.$rule['label'].'*</strong></span></td>'.
  35.                         '<td>'.                                
  36.                                                 '<label class="checkbox">'.
  37.                                                   '<input type="checkbox" name="'.$rule['field'].'" value="1" '.$checked['status'].'> Включен?'.
  38.                                                 '</label>'.
  39.                                         '</td>'.
  40.                     '</tr>';   
  41.         }
  42.         protected function textarea($rule){
  43.         }
  44.  
Telnet Отправлено: 17 Апреля, 2014 - 09:53:58 • Тема: Значение элемента массива как имя переменой • Форум: Вопросы новичков

Ответов: 4
Просмотров: 209
EuGen пишет:
Что такое set_value?
Почему правила валидации не в виде хотя бы массива, например,

PHP:
скопировать код в буфер обмена
  1. 'rules' => array(
  2.    'required' => true,
  3.    'max_length' => 255
  4. )
  5. //...


Для чего нужна функция text() - обычный рендеринг? Тогда почему отрисовка поля включает в себя элементы внешнего форматирования (таблицы)?


Это я пытаюсь модить CodeIgniter

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

но суть не в том этот массив мы уже получили в вид и теперь нам нужно из него построить поля
функция устанавливает ранее введенные значение это первый аргумент, а второй как раз тот что нам нужно указать получается из базы если ранее эту форму сохраняли
но суть не в этом
нужно как то значение 'field' => 'title', сделать так что у нас в итоге получилась переменая с именем $title
Telnet Отправлено: 17 Апреля, 2014 - 09:32:06 • Тема: Значение элемента массива как имя переменой • Форум: Вопросы новичков

Ответов: 4
Просмотров: 209
Всем привет

Есть такой вот не большой массив
PHP:
скопировать код в буфер обмена
  1.  
  2.         public $rules = array(
  3.                 array(
  4.                         'field' => 'title',
  5.                         'type'  => 'text',
  6.                         'label' => 'Заголовок',
  7.                         'rules' => 'required|max_length[255]'
  8.                 ),
  9.                 array(
  10.                         'field' => 'hash',
  11.                         'type'  => 'text',
  12.                         'label' => 'Цвет',
  13.                         'rules' => 'required|max_length[7]'
  14.                 ),
  15.  

он описывает поля формы там и не которые ее правила валидации, а так же имя поля формы и лайбл этого поля
при обработке этого массива желательно сделать так что я мог использовать для подстановки ранее заполненных полей имена переменных которые у меня называются так же как и $rule['field']. в функцию .set_value($rule['field'],$rule['field'])
Я пытался написать так
.set_value($rule['field'],{$rule['field']})
пишет ошибка синтаксиса.
Может кто нить подскажет как быть
внизу код самих функций где я это использую, что б лучше понять зачем это нужно
PHP:
скопировать код в буфер обмена
  1.  
  2.         function make($rules){
  3.                 $rules = $rules;
  4.                 $html = '';
  5.                 foreach($rules as $rule){
  6.                         switch ($rule['type']){
  7.                                 case 'text':
  8.                                 $html .= text($rule);
  9.                                 echo htmlspecialchars($html);die();
  10.                                 break;
  11.                                 case 'checkbox':
  12.                                 $html .= checkbox($rule);
  13.                                 break;
  14.                                 case 'textarea':
  15.                                 $html .= text($rule);
  16.                                 break;
  17.                         }
  18.                 }
  19.         }
  20.        
  21.         function text($rule){
  22.  
  23.                 return '<tr>'.
  24.                         '<td><span class="tdCaption"><strong>'.$rule['label'].'*</strong></span></td>'.
  25.                         '<td>'.
  26.                                                 '<input type="text" name="'.$rule['field'].'" value="'.set_value($rule['field'],$rule['field']).'"  />'.
  27.                                                 '<strong>'.form_error($rule['field']).'</strong>'.
  28.                                         '</td>'.
  29.                     '</tr>';
  30.         }
  31.  
Telnet Отправлено: 16 Апреля, 2014 - 21:59:51 • Тема: При отправке формы через .submit() не передаются данные. • Форум: JavaScript & VBScript

Ответов: 13
Просмотров: 1577
Ну да Вы правы можно было и так
Telnet Отправлено: 16 Апреля, 2014 - 21:53:44 • Тема: При отправке формы через .submit() не передаются данные. • Форум: JavaScript & VBScript

Ответов: 13
Просмотров: 1577
Да все верно переделал вот так
http://jsfiddle[dot]net/vipTelnet/vgLjP/10/

Страниц (15): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB