PHP.SU

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

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

> Найдено сообщений: 209
arimanecro Отправлено: 15 Сентября, 2016 - 15:55:51 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков

Ответов: 13
Просмотров: 439
Sail

спс, за наводку )

Опять наступил на те же грабли, который раз...

Вообщем проблема была в следующем:

Поскольку я сделал сокращенный вариант кода, то сделал ошибку в



в оригинале я выводил так:

PHP:
скопировать код в буфер обмена
  1. echo "<p>$items[$k][title]</p>"; // был индекс [$k]


а в $items = $result->fetchAll(); результат хранится всегда в нулевом индексе, поэтому когда приходила единица и выше, то естественно он ничего не видел.

Вместо $k надо тупо оставлять ноль:

PHP:
скопировать код в буфер обмена
  1. echo "<p>$items[0][title]</p>";


ну вот и все работает, одинаковые запросы в цикле, обрабатываются как надо Улыбка
arimanecro Отправлено: 15 Сентября, 2016 - 15:03:07 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков

Ответов: 13
Просмотров: 439
Цитата:
Тем более зачем делать два одинаковых запроса к базе.


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

Чтобы вывести то же фото и название, надо обраиться к БД
arimanecro Отправлено: 15 Сентября, 2016 - 14:36:45 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков

Ответов: 13
Просмотров: 439
Строитель

ну так я делаю через ПХП-шный цикл два независимых запроса. а не через обращение внутри БД к ним. (это я НЕ про WHERE ID IN (1, 1))
arimanecro Отправлено: 15 Сентября, 2016 - 14:16:04 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков

Ответов: 13
Просмотров: 439
difight

пробовал, но если закидываешь два одинаковых значений WHERE ID IN (1, 1) то вернет одну строку, а надо две
arimanecro Отправлено: 15 Сентября, 2016 - 13:34:15 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков

Ответов: 13
Просмотров: 439
а чего Вы взяли, что title это константа? )
arimanecro Отправлено: 15 Сентября, 2016 - 11:52:59 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков

Ответов: 13
Просмотров: 439
Был удивлен, что в цикле, если сделать 2 идентичных запроса, то второй проигнорится, вернее вторая итерация пройдет, но значения из sql запроса не подставятся.

Например:

PHP:
скопировать код в буфер обмена
  1. $arr =['0' => '1', '1'=>'1']; // одинаковые значения
  2.  
  3. foreach($arr as $k => $v) {
  4.  
  5. $result = Db::$dbh->query("SELECT title FROM table WHERE id = $v");
  6. $items = $result->fetchAll();
  7. echo "<p>$items[title]</p>";
  8. }


Выводятся два параграфа, но только в первом подставлено значение title.
С чем это связано и как сделать, чтобы выводилось два запроса?
arimanecro Отправлено: 14 Сентября, 2016 - 15:10:26 • Тема: PDO::FETCH_OBJ • Форум: Вопросы новичков

Ответов: 4
Просмотров: 202
Ch_chov пишет:
А что там такого страшного с производительностью происходит? Вы делали бенчмарки?


не я лично, а др.чел -- https://gist[dot]github[dot]com/stephen-hill/5508483

Цитата:
PDO::FETCH_ASSOC - 936 ms
PDO::FETCH_BOTH - 948 ms
PDO::FETCH_NUM - 1,184 ms
PDO::FETCH_OBJ - 1,272 ms
PDO::FETCH_LAZY - 1,276 ms

For large data sets, these results are typical:

PDO::FETCH_LAZY - 5,490 ms
PDO::FETCH_NUM - 8,818 ms
PDO::FETCH_ASSOC- 10,220 ms
PDO::FETCH_BOTH - 11,359 ms
PDO::FETCH_OBJ - 14,027 ms


==============

плюс повсеместно твердят, что объект это ресурсожрущая сущность, если бы это не было так, то нах тогда придумывать синглтон?
arimanecro Отправлено: 14 Сентября, 2016 - 10:09:38 • Тема: PDO::FETCH_OBJ • Форум: Вопросы новичков

Ответов: 4
Просмотров: 202
Для чего нужен данный атрибут? Вернее когда его рационально использовать?

Ведь создание объекта это затраты ресурсов, почему не оставлять режим массива(например PDO::FETCH_ASSOC) ?

Или это делается тупо ради ООП стилистики? Разве не глупо ради красивой визуализации кода, жертвовать производительностью?
arimanecro Отправлено: 12 Сентября, 2016 - 09:58:28 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков

Ответов: 9
Просмотров: 394
OrmaJever пишет:
Что мешает передавать просто ключ?


мля...внатуре Превосходно
arimanecro Отправлено: 09 Сентября, 2016 - 15:09:18 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков

Ответов: 9
Просмотров: 394
Додумал, как это можно сделать Улыбка

Кому интересно выкладываю

PHP:
скопировать код в буфер обмена
  1. trait Validators
  2. {
  3.     public function filterInputs(array $inputs, $filter, $min, $max){
  4.         foreach ($inputs as $k => $v){
  5.             if(array_key_exists($k, $_POST)){
  6.                 $func = "get".$filter;
  7.                 $this->$func($k, $v, $min, $max);
  8.             }
  9.         }
  10.         return $this;
  11.     }
  12.    
  13.  public function getLength($k, $input, $min, $max)
  14.     {
  15.         $options = [
  16.             'options' => [
  17.                 'min_range' => $min,
  18.                 'max_range' => $max
  19.             ]
  20.         ];
  21.        filter_var(strlen($input), FILTER_VALIDATE_INT, $options)
  22.                ? :
  23.            $_SESSION['err_valid'][] = "<strong>".ucfirst($k).":</strong> must be $min-$max characters";
  24.     }
  25. // далее идут ещё функции валидаторы, которые начинаются на get, не буду их копировать, чтобы не загромождать.
  26.  

===========
Приходит ПОСТ, например с полями name, adress, email, вот мы их и фильтруем таким образом:

PHP:
скопировать код в буфер обмена
  1. $this->filterInputs(['name'=>'', 'address'=>''], 'length', 2, 20)
  2.        ->filterInputs(['email'=>''], 'email', 2, 50)


В случае не прохождения фильтрации, ключи корректно заносятся в $_SESSION['err_valid'], что и требовалось А ты думал?
arimanecro Отправлено: 08 Сентября, 2016 - 23:53:51 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков

Ответов: 9
Просмотров: 394
Поясню для чего это...

Есть функция, которая принимает строку, а именно POST значение и внутри этой ф-ии, данное значение проходит фильтрацию и когда фильтрация не пройдена, то выводится ошибка с текстом: Переменная такая-то(а вот здесь и требуется ключ, так как именно он и несет в себе имя переменной) не является(например) имейлом.

Я сейчас не за рабочим компом, поэтому скопировать не могу, но "перескажу" в сжатой форме:

PHP:
скопировать код в буфер обмена
  1. function test($name){
  2.  
  3. if(!filter_var($name, FILTER_VALIDATE_INT)) {
  4.  
  5. $_SESSION['error'][] = "$name не является числом" // естественно подставится значение, а я хочу чтобы отобразилось имя элемента массива
  6.  
  7. }
  8. return $this;
  9. }
  10.  
  11. test($_POST['number'])->test($_POST['name']);


Вообщем самое главное, это отобразить имя элемента массива, который передается в ф-ию.
arimanecro Отправлено: 08 Сентября, 2016 - 16:47:42 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков

Ответов: 9
Просмотров: 394
Приветствую.

Вот столкнулся с довольно "простой" задачей..

PHP:
скопировать код в буфер обмена
  1. $colors = ['red'=>'', 'green'=>''];
  2.  
  3. function test($value){
  4.  
  5. // показать ключ $value
  6.  
  7. }
  8.  
  9. test($colors['red']); // нужно чтобы вывел red


В массиве специально значения одинаковые, поэтому array_search не прокатит. Ф-ия key также не подойдет, потому что аргументом должен быть массив, а не строка.
arimanecro Отправлено: 14 Июля, 2016 - 10:16:10 • Тема: кнопки-ссылки php • Форум: Вопросы новичков

Ответов: 2
Просмотров: 144
почти ничего не понял, что Вы хотите, но предположу Улыбка

в index.php прописываете следующее:

PHP:
скопировать код в буфер обмена
  1. require_once 'x.html';
  2. echo $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
  3.  
arimanecro Отправлено: 07 Июля, 2016 - 12:50:42 • Тема: Как преобразовать объект в массив • Форум: Вопросы новичков

Ответов: 3
Просмотров: 549
ArrayAccess -- http://php.net/manual/ru/class.arrayaccess.php
arimanecro Отправлено: 30 Июня, 2016 - 11:27:00 • Тема: Вопрос о Content Assist в Zend Studio 13 • Форум: Вопросы новичков

Ответов: 2
Просмотров: 167
Window | Preferences | PHP | Editor | Content Assist и поставь галочку auto activation delay

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB