PHP.SU

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

Страниц (5): [1] 2 3 4 5 »

> Найдено сообщений: 74
Грачи прилетели Отправлено: 25 Июня, 2019 - 15:05:03 • Тема: MySQL - IN и LIMIT • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 98
Добрый день!

Прошу помощи: При выполнении запроса с вложенным запросом получил ошибку
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Поиск в интернете натолкнул на решение - вложенный запрос надо обернуть в еще один SELECT.

Не помогло, но могу ошибаться.

Задача - вывести из базы 4 строки, где ID одной из них будет равна 7, а остальные рандомно любые. Делаю так:


CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  
  3. SELECT * FROM `table_1` WHERE id=7 AND id IN ( SELECT * FROM (SELECT id FROM table_1 WHERE id !=7 LIMIT 3) AS `id`)
  4.  
  5.  



Прошу помощи.

Спасибо!
(Добавление)



P`S - Вот так сработало, но верно ли...

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  
  3. SELECT * FROM `table_1` WHERE id IN ( SELECT * FROM ( SELECT id FROM `table_1` WHERE `id` !=7 ORDER BY RAND() LIMIT 3 ) AS `id` ) OR id=7
  4.  
  5.  
Грачи прилетели Отправлено: 21 Июня, 2019 - 23:04:51 • Тема: Обрезать строку кол-во • Форум: Вопросы новичков

Ответов: 2
Просмотров: 57
Добрый день!

Прошу помощи

задачка вроде не сложная и примеров много, но не выходит. Мне надо обрезать строку 500 символов, но не тупо на 501 символов, а после 500 найти первый <br> и по нему и резать.

PHP:
скопировать код в буфер обмена
  1.  
  2. $string = substr($string, 0, 500);
  3. $string = substr($string, 0, strrpos($string, '<br />'));
  4.  
Грачи прилетели Отправлено: 19 Марта, 2019 - 08:46:55 • Тема: разбор массива JSON • Форум: Вопросы новичков

Ответов: 1
Просмотров: 43
Добрый день!

Есть массив в json, который возвращает сервер на мой запрос (ответ вставил в коде ниже). Мне необходимо представить ответ json в виде таблицы html
Внутри основного массива, есть вложенный массив costs.
Никак не получается выйти на итоговую таблицу.

Поизучав материалы в интернете, получилось сделать таким образом:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $json_code = '{"accountId":"ct-89kk789ugkigi0ac7giygu686u","items":[{"suId":"80802","suType":"PROD","serName":"Rav","resName":"DISK_MAV","currency":"EUR","gProdId":"AV57357","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":81.0448269751764,"compAmt":6.6132575726,"unPr":0.0816,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"IP_ADDRESS","currency":"EUR","gProdId":"AV57358","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":395.0,"compAmt":2.686,"unPr":0.0068,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"MIN.ADV.COST_OPT","currency":"EUR","gProdId":"AV57343","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":14.0,"compAmt":2.856,"unPr":0.204,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"MIN.ADV.PERF_OP","currency":"EUR","gProdId":"AV57349","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":2.0,"compAmt":0.68,"unPr":0.34,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"NET_MAV","currency":"EUR","gProdId":"AV57355","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":0.5355178778991104,"compAmt":0.0546228236,"unPr":0.102,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"T1.ADV.COST_OPT","currency":"EUR","gProdId":"AV57344","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":112.0,"compAmt":10.6624,"unPr":0.0952,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"T1.ADV.PERF_OP","currency":"EUR","gProdId":"AV57350","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":322.0,"compAmt":39.4128,"unPr":0.1224,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"T2.ADV.COST_OPT","currency":"EUR","gProdId":"AV57345","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":124.0,"compAmt":22.7664,"unPr":0.1836,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"},{"suId":"80802","suType":"PROD","serName":"Rav","resName":"V_ST_MAV","currency":"EUR","gProdId":"AV57356","datCenId":"Rav","servEntId":"602415734","costs":[{"compQuan":429.8438998191557,"compAmt":35.0672128536,"unPr":0.0816,"ovFlag":"Y","compT":"PG"}],"startTimeUtc":"2019-02-01T00:00:00.000","endTimeUtc":"2019-03-01T00:00:00.000"}],"canonicalLink":"/met/us/ct-89kk789ugkigi0ac7giygu686u?=&X-ID=stravs&timeZone=UTC&startTime=2019-02-01T00%3A00%3A00.000Z&dAE=Y&endTime=2019-03-01T00%3A00%3A00.000Z&comTypEn=Y&usType=TOTAL"}';
  4.  
  5.  
  6. $api_decoded = json_decode($json_code,TRUE);
  7. ?>
  8. <table>
  9. <tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th></tr>
  10. <?PHP
  11.    foreach ($api_decoded as $field => $value) {
  12.  
  13.                 for ($i = 0; $i < count($value); $i++) {
  14.                 echo '<tr>';
  15.  
  16.                         foreach ($value[$i] as $field_st => $value_st) {
  17.                           echo '<td>'.$field_st . ' -> ' . $value_st . '</td>';
  18.                 }
  19.         echo '</tr>';  
  20.         }
  21. }
  22. ?>
  23. </table>
  24.  


и на выходе получаю такую html таблицу
CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <style>
  4. table{border: 1px solid grey;}
  5. th{border: 1px solid grey;}
  6. td{border: 1px solid grey;}
  7. </style>
  8. <table>
  9. <tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th></tr>
  10. <tr></tr>
  11. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> DISK_MAV</td><td>currency -> EUR</td><td>gProdId -> AV57357</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  12. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> IP_ADDRESS</td><td>currency -> EUR</td><td>gProdId -> AV57358</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  13. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> MIN.ADV.COST_OPT</td><td>currency -> EUR</td><td>gProdId -> AV57343</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  14. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> MIN.ADV.PERF_OP</td><td>currency -> EUR</td><td>gProdId -> AV57349</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  15. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> NET_MAV</td><td>currency -> EUR</td><td>gProdId -> AV57355</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  16. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> T1.ADV.COST_OPT</td><td>currency -> EUR</td><td>gProdId -> AV57344</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  17. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> T1.ADV.PERF_OP</td><td>currency -> EUR</td><td>gProdId -> AV57350</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  18. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> T2.ADV.COST_OPT</td><td>currency -> EUR</td><td>gProdId -> AV57345</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  19. <tr><td>suId -> 7066452</td><td>suType -> PROD</td><td>serName -> Rav</td><td>resName -> V_ST_MAV</td><td>currency -> EUR</td><td>gProdId -> AV57356</td><td>datCenId -> Rav</td><td>servEntId -> 602415734</td><td>costs -> Array</td><td>startTimeUtc -> 2019-02-01T00:00:00.000</td><td>endTimeUtc -> 2019-03-01T00:00:00.000</td></tr>
  20. <tr></tr></table>
  21.  


но не получается

1. убрать название ключей и оставить только значения. Как только пытаюсь убрать ключи, не выводит ничего

2. Мне бы хотелось самому выбрать какие ключи выводить, допустим надо только
serName
resName
currency
gProdId
datCenId
и все значения во вложенном массиве costs

Можете помочь советом, кодом, добрым словом? :)
Грачи прилетели Отправлено: 14 Марта, 2019 - 10:20:34 • Тема: datetime находится между указанного диапазона • Форум: Вопросы новичков

Ответов: 3
Просмотров: 53
PHP Version 5.6.30

вроде через new DateTime должно получаться сравнение, но как только перевел всё через strtotime , получилось, а с примерами выше нет. Не знаю в чём дело, ошибок не выводит.

Меня устраивает вариант сравнения через strtotime.

Спасибо!
Грачи прилетели Отправлено: 14 Марта, 2019 - 09:39:35 • Тема: datetime находится между указанного диапазона • Форум: Вопросы новичков

Ответов: 3
Просмотров: 53
Добрый день!

Впал в ступор, не получается результат, прошу помощи

У меня есть три datetime

PHP:
скопировать код в буфер обмена
  1.  
  2. $date_now = new DateTime(date('Y-m-d H:i:s'));
  3. $date_start = new DateTime($day_start);
  4. $date_stop = new DateTime($day_start);
  5.  


Мне надо проверить, что $date_now находится между $date_start и $date_stop

Дата стоп - всегда следующий день 09:30
Время у Дата старт 18:30

Вот и проверяю, что текущее дата/время входит или нет в диапазон с 18:30 сегодня до 09:30 завтра

Я делал так
PHP:
скопировать код в буфер обмена
  1. ($date_now>= $date_start) AND ($date_now<= $date_stop)


но что-то не то мне кажется.... помогите, как эту проверку проще сделать...
Грачи прилетели Отправлено: 25 Февраля, 2019 - 11:22:46 • Тема: из массива даты выбрать меньшую • Форум: Вопросы новичков

Ответов: 6
Просмотров: 139
У меня вот так получилось

PHP:
скопировать код в буфер обмена
  1.  
  2. if ($result = $mysqli->query("SELECT * FROM `pr` WHERE `day` BETWEEN '".$date_n_m."' AND '".$date_k_m."' AND `v` = 0 ORDER BY `day` DESC LIMIT 0,3")) {
  3. while( $Arr = $result->fetch_assoc() ){
  4.        
  5. $dt2 = array(strtotime($Arr['day']));
  6.  
  7. }
  8. }
  9. $ddd = min($dt2);  
  10.  
  11. echo date('Y.m.d', $ddd);
  12.  


вроде кажет верное значение. но это правильно ли с т.з. правильного кода?
Грачи прилетели Отправлено: 25 Февраля, 2019 - 10:47:53 • Тема: из массива даты выбрать меньшую • Форум: Вопросы новичков

Ответов: 6
Просмотров: 139
Добрый день!

Прошу помощи

В результате запроса
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($result = $mysqli->query("SELECT * FROM `pr` WHERE `day` BETWEEN '".$date_n."' AND '".$date_k."' AND `v` = 0 ORDER BY `day` DESC LIMIT 0,3")) {
  3. while( $Arr = $result->fetch_assoc() ){
  4.        
  5. $day_mh = $Arr['day'];
  6. $id = $Arr['id'];
  7.  
  8.         }
  9. }
  10.  
  11.  


получаю массив дат.
Мне надо выбрать из этого массива наименьшую дату. В принципе можно добавить и ID к выборке (уникальный)

Как получить эту дату из массива?
Грачи прилетели Отправлено: 07 Февраля, 2019 - 19:24:05 • Тема: Графики и диаграммы • Форум: Графика в PHP

Ответов: 1
Просмотров: 196
Добрый день!

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

Для вывода в браузере я использую amcharts и всё получается красиво, но тут задача именно сохранение в файл, тю.к. скрипт выполняется по cron и в результате необходимо эти графики получать в сохраненных картинках на диске.

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

Спасибо
Грачи прилетели Отправлено: 14 Сентября, 2018 - 10:53:56 • Тема: Дополнить регулярное выражение • Форум: Регулярные выражения

Ответов: 2
Просмотров: 154
Добрый день!

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

Сейчас делаю так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
  3. $str = trim($str, "-");
  4.  


Но если есть строка такого вида: "Пример - как не надо делать", то в результате получаю

"primer---kak-ne-nado-delat"

вот это тройное полученное тире не могу поборот. Помогите, пожалуйста Улыбка
Грачи прилетели Отправлено: 05 Сентября, 2018 - 19:13:42 • Тема: Интервал даты • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 135
Добрый день!

Есть запрос:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   `id`,
  3.   `title`,
  4.   TIMESTAMPADD(HOUR,  3,  `statedtime`) AS statedtime_mos
  5. FROM
  6.   `dump`
  7.  


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

statedtime_mos > 21 дня , т.е. старше чем 21 день от текущего момента

поле типа datetime


Помогите, пожалуйста... хочется сделать это на уровне SQL запроса, а не переносить это в код программы
Грачи прилетели Отправлено: 15 Мая, 2018 - 06:43:38 • Тема: php и postgresql • Форум: Вопросы новичков

Ответов: 1
Просмотров: 39
проблема была из-за регистра части полей в запросе...

но с одного поля типа boolean вместо false или true выводится только 1-я буква f или t
(Добавление)
Грачи прилетели пишет:
проблема была из-за регистра части полей в запросе...

но с одного поля типа boolean вместо false или true выводится только 1-я буква f или t


это стандартное поведение для этого типа поля в postgresql...
Грачи прилетели Отправлено: 14 Мая, 2018 - 21:43:26 • Тема: php и postgresql • Форум: Вопросы новичков

Ответов: 1
Просмотров: 39
Добрый день!

Делаю вывод данных на страницу из базы postgresql через php


Проблема в том, что часть данных выводится нормально, а часть пустые... Может это что-то известное сможет кто подсказать куда копать?

Спасибо
Грачи прилетели Отправлено: 03 Апреля, 2018 - 09:09:16 • Тема: Парсер картинки с сайта • Форум: Вопросы новичков

Ответов: 1
Просмотров: 40
Добрый день!

Пытаюсь распарсить сайт и вытащить со страницы адрес картинки. По исходным данным, на странице есть блок
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="ttt_ddd">
  3.     <a class="ta" href="https://sait-url/name/dsgfd564.html"><img class="ti" alt="описание какое-то " src="https://sait-url/jpg/6967ghfghdf564.jpg"></a>
  4. </div>
  5.  



искать придется именно по указанному div, т.к. он у них уникальный, а вот по классу картинок <img class="ti"...> таких на странице много..

когда я искал только по тегу картинки, то вырезал так
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $content_pic = file_get_contents("https://sait-url/stranica.html");
  5.  
  6.  
  7. preg_match('/<img class=\'ti' alt="" src=\'(.*)<\/a>/s', $content_pic, $m[]);
  8. $ppp= strip_tags($m[1]);
  9. $pic_day = str_replace("'>", "", $ppp);
  10. $pic_day = str_replace("'>", "", $ppp);
  11.  
  12. $pic_day =  substr($pic_day, 0, strrpos($pic_day, ".jpg")).".jpg";
  13.  
  14. echo $pic_day;
  15. ?>
  16.  



Пожалуйста, помоги мне правильно переделать этот кусок парсера, для правильного вытаскивания URL картинки
CODE (html):
скопировать код в буфер обмена
  1. https://sait-url/jpg/6967ghfghdf564.jpg
из указанного блока DIV

Спасибо
(Добавление)
Но чаще всего на странице в этом блоке идет три картинке вот так:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <DIV CLASS="ttt_ddd">
  3.     <a CLASS="ta" href="https://sait-url/name/9gdfdf31.html"><IMG CLASS="ti" alt="описание" src="https://sait-url/jpg/4645is1002.jpg"></a>
  4.     <a CLASS="ta" href="https://sait-url/name/2456858.html"><IMG CLASS="ti" alt="описание " src="https://sait-url/jpg/546is230.jpg"></a>
  5.     <a CLASS="ta" href="https://sait-url/name/2045672.html"><IMG CLASS="ti" alt="описание" src="https://sait-url/jpg/i45654s2057.jpg"></a>
  6. </DIV>
  7.  


и мне надо тогда получить URL второй картинки
Грачи прилетели Отправлено: 15 Декабря, 2017 - 10:20:15 • Тема: php - sms, Whatsapp • Форум: Вопросы новичков

Ответов: 1
Просмотров: 62
Добрый день, уважаемые коллеги!

Мне необходимо отправлять по списку пользователей 2-10 чел. смс или сообщение в Whatsapp при наступлении заданного события .

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

События отслеживаются кроном с использованием php поиском по MySQL

Сейчас, при наступлении события отправляем почту, с этим проблем нет. Кол-во таких событий в месяц 2-5 не больше, поэтому идти по платным сервисам нецелесообразно.

Получатели сообщения свои люди, поэтому каких-то изысков не требуется.

Что можете посоветовать по этой теме, может кто-то этот путь уже прошел.

Спасибо!
Грачи прилетели Отправлено: 25 Сентября, 2017 - 19:34:36 • Тема: Склейка csv файлов • Форум: Вопросы новичков

Ответов: 3
Просмотров: 39
Строитель пишет:
Грачи прилетели пишет:
но приходится указывать каждый файл.
Как это? Вручную пишете их имена?


в настойках задал один раз
1.scv
2.scv
3.scv

их пока 3, но я думаю, что их может когда-то стать больше, вот и хочется что-то более универсальное

Страниц (5): [1] 2 3 4 5 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB