• Почему в результате получается объект?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    const TickersArray = []
    
    const getData = url => fetch(url).then(response => response.json());
    
    const getKlines = async ticker => {
      const commits = await getData(`https://fapi.binance.com/fapi/v1/klines?symbol=${ticker}&interval=1m&limit=499`);
      // console.log(commits);
      TickersArray.push(ticker);
      return TickersArray;
    };
    
    const getTickers = async url => {
      const contentCoins = await getData(url);
    
      contentCoins.forEach(x => {
        const { symbol } = x;
        if (symbol.includes('USDT') && !symbol.includes('_')) {
          // getKlines(symbol);
          TickersArray.push(symbol);
        }
      });
      return TickersArray;
    };
    
    getTickers('https://fapi.binance.com/fapi/v1/ticker/price').then(arr => {
      console.log(arr === TickersArray, TickersArray);
    });
    Ответ написан
    1 комментарий
  • Как отображать данные полученные по средствам Fetch API?

    @Evtera
    Если на чистом, то

    в html разметке создаешь необходимый элемент. Допустим
    <div id="wrapper"></div>

    далее находишь этот div
    const wrapper = document.querySelector('#wrapper')
    wrapper.innerText =  getKlines


    и готово.
    Ответ написан
    Комментировать
  • Как сделать вычисление $cost из баланса?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    $stmt = $mysqli->prepare("UPDATE req 
    	SET balance = balance - ? 
    	WHERE card =? AND code = ? ;");
    $stmt->bind_param("sss", $cost, $card, $code);
    
    // set parameters and execute
    $cost = $_GET['cost'];
    $card = $_POST['card'];
    $code = $_POST['code'];
    
    $stmt->execute();


    run php online
    Ответ написан
    Комментировать
  • Как правильно отсортировать?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Сздайте в SQL запросе вспомогательное поле, в котором значение будет (например) = 1, если элементы содержат данные в s_short и = 2, если они пустые. И последней сортировкой - сортируйте по этому полю.
    Ответ написан
    4 комментария
  • Область видимости массивов. Как сохранить данные в fetch...then?

    Rst0
    @Rst0
    разжевал для понимания, можно множеством способов на самом деле...
    let data, 
    chart, 
    result = {longRate: [], shortRate: [], exchangeName: []},      // объявляем сразу как объект
    options = { series: [], chart: {}, plotOptions: {}, xaxis: {}};  // тоже объявляем сразу как объект

    и потом
    fetch("https://fapi.coinglass.com/api/futures/longShortRate?symbol=BTC&timeType=3")
                .then(response => response.json()
            )
            .then (data => {
                console.log(data['data'][0]);
                if(data['data'].length > 0){                          // нужно  проверить хотя бы так
                     for (i = 0; i < data['data'][0]['list'].length; i++) {
                         result.longRate[i] = data['data'][0]['list'][i]['longRate'];
                         result.shortRate[i] = data['data'][0]['list'][i]['shortRate'];
                         result.exchangeName[i] = data['data'][0]['list'][i]['exchangeName'];
                    } 
              
                    checkSales(result);      //  вызываем проверку #sales  (внутри then )
               }else{
                   console.log('no data');
               }
    }); 
    function checkSales(result){   //    это теперь отдельная функция
         if ($('#sales').length) {
                  options.series: [{                    // без var
                            name: 'Лонг',   
                            data: result.longRate,          //  < --    result['longRate']
                            }, {
                            name: 'Шорт',
                            data: result.shortRate,         //  < --    result['shortRate']
                            },
                 ];
                 options.chart: {
                          id: 'longshortratio',   
                          type: 'bar',
                          height: 350,
                          stacked: true,
                          stackType: '100%'
                  };
                  options.plotOptions: {
                          bar: {
                            horizontal: true,
                          },
                  };
                        
                  options.xaxis: {
                          categories: result.exchangeName,      //  < --   result['exchangeName']
                          labels: {
                            formatter: function (val) {
                              return val
                            }
                          }
                   };
                  chart = new ApexCharts(             // без var
                            document.querySelector("#sales"),
                            options      
                   );
                
                chart.render();
                }
     }
    Ответ написан
    Комментировать
  • Область видимости массивов. Как сохранить данные в fetch...then?

    neuotq
    @neuotq
    Прокрастинация
    Смотрите, во-первых вы немного нарушили логику потока данных у вас в приложении. С одной стороны, вы используете асинхронный fetch, с другой пытаетесь в синхронном режиме инициализировать ApexCharts. В момент создания options и ApexCharts да, там будет не то что вы ожидаете.
    Поэтому вам нужно либо асинхронно создавать всё: грубо говоря засунуть в то место, где у вас и цикл, либо немного иначе использовать ApexCharts.
    Инициализировать его с пустыми данными и текстом загрузка, а потом через updateSeries обновить график, тоже внутри того же .then (data => ...) после цикла, те асинхронно после того, как пришли данные.
    Читайте тут:
    https://apexcharts.com/docs/update-charts-from-jso...
    Ответ написан
    2 комментария
  • Как отсортировать запрос с UNION?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если отформатировать запрос, то он выглядит так:
    SELECT * FROM `rsi` WHERE `tf`='4h'                         UNION 
    SELECT * FROM `rsi` WHERE `tf`='15m'                        UNION 
    SELECT * FROM `rsi` WHERE `tf`='4h'                         UNION 
    SELECT * FROM `rsi` WHERE `situation`='perek' AND `tf`='1d' UNION 
    SELECT * FROM `rsi`                                         UNION 
    
    SELECT * FROM `levels` WHERE `situation`='support' AND `tf`='4h' UNION 
    SELECT * FROM `levels` WHERE `tf`='1h' 
    
    ORDER BY `time` DESC LIMIT 0,20

    Сразу видно, что первые 4 подзапроса можно смело удалить.
    А потом надо смотреть на структуру таблицы rsi, ибо именно из неё будут взяты имена полей объединённого набора записей. Судя по ошибке, там просто нет поля time.
    Ответ написан
    1 комментарий
  • Как правильно отсортировать записи в БД?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Согласен с Кирилл Пальчевский , что следует привести данные к нормальной форме, но если нужно то:
    SELECT 
    	`tokens`.* 
    FROM `tokens` 
    ORDER BY REPLACE(SUBSTRING_INDEX(s_short,';',3), SUBSTRING_INDEX(s_short,';',2), '') DESC;


    Или компактный вариант предложенный Akina
    SELECT 
      `tokens`.* 
    FROM `tokens` 
    ORDER BY SUBSTRING_INDEX(SUBSTRING_INDEX(s_short,';',3),';',-1) DESC;


    MySQL SUBSTRING_INDEX test
    Ответ написан
  • Проблема с синтаксисом, как правильно написать?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    если не знаете как тогда простой и надёжный способ - немного дублировать код
    <?php if($logged === false): ?>
      <!-- выводим один блок, без foreach -->
    <?php else: ?>
      <!-- выводим другой блок -->
    <?php endif; ?>
    Ответ написан
    Комментировать
  • Как при окончании загрузки страницы обновить блок div?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
  • Как запретить напрямую обращаться к скриптам?

    @galliard
    Делаешь папку src и public, в public кладешь index.php, а все остальное в src.
    В конфигурации сервера в качестве папки, где лежит сайт, указываешь папку public.

    Из файла index.php подключаешь все файлы как __DIR__ . '/../src/нужныйфайk.php'.
    Ответ написан
    Комментировать
  • Почему не работает cURL?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но если воспользоваться точно таким же кодом на другом сервере VPS (хостинге) - то он отрабатывает нормально.
    Скорее всего хост занесен в спам лист, если принципиально работать именно с этого хоста - связываться с администрацией хостинга (хотя скорее всего им пофиг), или связаться с админами 5ka.ru с просьбой снять ограничения.
    Ответ написан
    1 комментарий
  • Как копировать текст ссылок в буфер обмена?

    black1277
    @black1277
    Вольный стрелок
    можно добавить дата-атрибут каждой ссылке:
    <a data-mylink='copyticker' href='#'>coins1</a>
    <a data-mylink='copyticker' href='#'>coins2</a>
    <a data-mylink='copyticker' href='#'>coins3</a>

    а в скрипте выбирать их по этому атрибуту:
    const copy = document.querySelectorAll('a[data-mylink]')
    ...

    ну и делать с ними что надо
    Ответ написан
    Комментировать
  • Как правильно передать переменную из PHP в JS?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    <?php
    
    $vol = ['Auto','Moto','Ship','Rocket','Track']
    
    <script>
      let vol = <?= json_encode($vol) ?>;
      for (let i = 0; i < 6; i++) {
        var cat_i = vol[i];
        console.log(cat_i);
      }
    </script>
    Ответ написан
    3 комментария
  • Как правильно добавлять атрибут selected?

    twobomb
    @twobomb
    $percent = 1.5;
    $vals= [0.5,1.5,2.5,3.5,8.5];
    ?>
    <select class="form-select" name="percent" id="percent" required>
    	<?PHP
    	foreach($vals as $v):
    		$text = $v == 8.5?"По умолчанию":"Меньше {$v}%";
    		$c = $v == $percent?"selected":"";
    	?>
    		<option <?=$c?> value="<?=$v?>"><?=$text?></option>
    	<?php
    	endforeach;
    	?>
    </select>
    Ответ написан
    Комментировать
  • Почему вылезает вертикальный скролл при использовании плагина Tooltipster?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    Ну, в Вашем случай, как один из вариантов: задать ширину тултипу.
    Например:
    .tooltipster-box {
        flex: 1 1 auto;
        width: max-content; // или любое другое значение вместо max-content, которое Вам больше подходит
    }

    Другой вариант - поменять вёрстку внутри тултипа, чтоб не переносилось на другую строку, в случае не хватки по ширине.
    Ответ написан
    Комментировать
  • Как правильно сделать адаптивность?

    @Smirator
    Для таких случаев использую:
    class="row" и class="col-md". Также, можно регулировать col-md-4/6/8.
    Почитать: https://getbootstrap.ru/docs/v4-alpha/layout/grid/

    <div class = "row">
        <div class="col-md"
            <p>Какой-то контент</p>
        </div>
         <div class="col-md">
              <p>Какой-то контент2</p>
          </div>
    </div>
    Ответ написан
    Комментировать
  • Как правильно сделать адаптивность?

    @marina-wolf
    <div class="col border-grid">
          <a href="#" target="_blank" class="link">Ссылка 1</a> - Здесь описание карточки <br> и много разной информации
    </div>

    нужно добавить col-md-?, col-xl-? и прочие подписи к вашему классу col в зависимости от ширины экрана. Но стоит учесть момент, что бутстрап берет за основу для col сетку на 12 колонок, и значения цифр вместо "?" нужно подбирать исходя из этого понимания. Если вам нужна другая ширина и количество блоков в строке, то добавьте свой уникальный класс и посчитайте нужное количество % для его ширины, за основу написания параметров своего класса можно взять значения классов col из бустрапа, только прописать нужный % для ширины блока.

    Пример тут:
    <div class="col col-md-2 col-xl-1 col-md-my-8 border-grid">
                <a href="#" target="_blank" class="link">Ссылка 1</a> - Здесь описание карточки <br> и много разной информации
    </div>

    .col-md-my-8 {
        -ms-flex: 0 0 12,5%;
        flex: 0 0 12,5%;
        max-width: 12,5%;
    }

    А также добавить свои медиазапросы на ширину экрана и поведение своих уникальных классов
    Ответ написан
    Комментировать
  • Как отсортировать по алфавиту и сохранить по ID?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    $sql = "SELECT * FROM `product` ORDER BY name";
    $data = $mysqli->query($sql)->fetch_all(MYSQLI_ASSOC);
    foreach ($data as $i => $row) {
        echo ($i+1), $row['name'], $row['price'];
    }

    можешь не благодарить
    Ответ написан
    Комментировать
  • Как залить фон на 25%?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Для простейшего прогресс бара есть тег <progress>

    Для градиента так и написать, указав точки перехода:
    background: linear-gradient(to right, #8dff80 25%, #57c53b 25%);

    Если это регулируется через JS, то разумнее делать это через кастомные свойства.
    Ответ написан
    6 комментариев