|
|
|
|
-TRickSTeR- [16]
14 Марта 2016 20:08 | Нужна помощь "тыжпрограммистов".Допустим у меня есть сайт. На одной из страниц у меня подключен скрипт. jQuery.ajax({ url: "http://api.unit-online.ru/items?type=%D0%BE%D1%80%D1%83%D0%B6%D0%B8%D0%B5", dataType: "jsonp" }).done(function (result) { jQuery("#nonlinecount1").html(result.count); бла бла бла a = jQuery("#nonlinePPS").html(); jQuery("#nonlinePPS").html(a+ "" + result.items.name+" ["+result.items[i].level+"]"+"<a href=\"http://unit-online.ru/item?id="+result.items[i].id+"\"target=\"_blank\"> <img src=http://блаблабла/ico_info.gif></a><br>"); В левой части страницы мы видим вот это http://petromi.com/get/eah4F6960de220ea0011 Как видно из кода, при нажатии на значок информации мы попадаем на http://unit-online.ru/item?id= +id ствола, например http://unit-online.ru/item?id=79 Теперь допустим что в правой части страницы у меня есть фрейм, в котором лежит: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Инфомация о предмете</title> <style> #content { бла } .item-info { бла } .common-params { бла } .common-params div, .spec-params div { бла } .item-name { бла } .item-img { бла } </style> </head> <body> <script src="http://www.бла/js/jquery.js"></script> <table> бла бла </table> <script> $.ajax({ url: "http://api.unit-online.ru/item", dataType: "jsonp", data: { id: 771 } }).done(function (data) { if (data.status == "ok") { var item = data.item; var info = $("#content .item-info"); info.find(".item-name").text(item.name); info.find(".item-img").html('<img alt="" src="' + item.image + '">'); var params = $('<div>'); for (var i = 0; i < item.params.length; ++i) { if (item.params[i].name.lastIndexOf("Клетки", 0) === 0) { info.find(".spec-params").append( $('<div>').text(item.params[i].name + ": " + item.params[i].value) ).toggle(); } else { params.append($('<table>').append( $('<tr>').append( $('<td>').text(item.params[i].name)).append( $('<td class="value">').text(item.params[i].value)) ) ); } } info.find(".common-params").append(params); $("#content .progress").toggle(); info.toggle(); } else if (data.status == "fail") { $("#content").text("Отсутсвует информация о предмете с id = 771."); } }); </script> </body> </html> В этом фрейме мы видим что-то похожее на http://petromi.com/get/eah4kC71eeb920ea0311 , только в других цветах/шрифтах. Собственно, в чём мне нужна помощь? Хотелось бы чтобы ([i]при нажатии на значок информации мы попадаем на http://unit-online.ru/item?id= +id ствола, например http://unit-online.ru/item?id=79), а нужно чтобы при нажатии id предмета передавался в скрипт во фрейме $.ajax({ url: "http://api.unit-online.ru/item", dataType: "jsonp", data: { id: 771 } }).done(function (data) {. Если это вообще возможно, у меня не хватает знаний чтобы понять как это сделать. Если вы знаете как это сделать/ как сделать иначе, но с похожим эффектом, то пожалуйста напишите код/ дайте ссылку на литературу по данному вопросу/ на видео-урок. P.S. Не нужно писать типо "читай про фреймы и скрипты", я это и так пытаюсь делать, но либо я тупой, либо не там ищу. |
| |
|
|
Da Boogie Woogie [14]
15 Марта 2016 23:41 | Re: Нужна помощь "тыжпрограммистов".ты хочешь из одного интерпретатора языка передать данные в другой? нифига я не понял. опять какая-то сломанная логика. если ты уже начал работать с PHP, то на время отложи свой JS - дальше ты при помощи этого JS уже будешь данные забирать совсем по другой схеме. теперь вообще забудь про этот файл, отложи его в сторонку. кури теперь мануалы о том как при помощи PHP обратиться к API юнита, забрать массив, разобрать его и записать данные в БД это уже совсем другая сказка начинается |
| |
|
|
-TRickSTeR- [16]
15 Марта 2016 23:51 | Re: Нужна помощь "тыжпрограммистов".Вроде как ответ это одномерный массив, т.е. строка. Вот здесь есть список функций для строк http://www.php.su/functions/?cat=strings есть вот такая штука parse_str -- Разбирает строку в переменные или вот sscanf -- Разбирает строку в соответствии с заданным форматом strtok -- Разбивает строку
Но проблема в том, что я не очень хорошо представляю как взять из этой строки то что нужно и засунуть в бд, именно туда куда нужно=) ну вот это мне понятно: $sql = mysql_query(INSERT INTO books ( ISBN, author, title, price, quantity ) VALUES ('5-8459-0184-7', 'Зандстра Мэт', '24 часа', '129', '5')); А как в итоге всё всё связать непонятно. Но я чувствую что, если буду задавать так много вопросов, то в итоге всё за меня сделают, а это не интересно, поэтому пойду читать и заполнять свои огромные пробелы в знаниях php и MySQL. |
| |
|
|
-TRickSTeR- [16]
15 Марта 2016 23:53 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: Окей=) тогда последний мой пост не считается. |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 00:43 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: А вот тут https://www.developphp.com/video/JavaScript/Ajax-Post-to-PHP-File-XMLHttpRequest-Object-Return-Data-Tutorial, если я правильно понял xmlhttprequest передает ферстнейм и ластнейм в php файл. Что если также передать ответ от api.unit в php, и уже в php запихивать его в бд? Читал-читал вот про API запросы в php, всё так сложно... |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 01:14 | Re: Нужна помощь "тыжпрограммистов".для -TRickSTeR-: так, где логика то?
ну-ка! распиши всё по шагам...
вот открывается браузер - ты его открываешь или пользователь, дальше что? куда идём, на какую страничку, что на ней? попадаем на эту страницу, там кроме всего прочего в фоне срабатывает JS, который забирает у юнита массив и передаёт его PHP скрипту POST-запросом (ну не GET же, да?) дальше этот PHP разбирает массив и каждую пару распихивает в БД что-то дальше...
* что всё это время происходит в браузере, что делает пользователь и о чём он думает?
или у тебя другая версия событий есть?
кстати, а в какое место юнит-апи твой JS ломиться будет? к списку всех пушек или к какому то конкретному стволу? а что ты собираешься писать в БД и зачем?
ты опять запутался! |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 01:16 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: Хоп, Спойлер <?php function sendGet($url) { $curl = curl_init() ; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); $out = curl_exec($curl); curl_close($curl); return $out; } $tag = "cars"; $query = "http://api.unit-online.ru/item?id=79"; $res = sendGet($query); echo $res; ?> Такой вот файл. Ответ: http://petromi.com/get/eafmXb846efa50eaf911 Получается больше ничего никуда можно не передавать, всё лежит в res. |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 01:17 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: Прости, не бей, я одумался=) |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 01:19 | Re: Нужна помощь "тыжпрограммистов".родил бле! учись теперь разбирать массив на PHP и для начала просто выводить нужные пары на экран в произвольной последовательности, как родишь такое, тогда будешь курить как это запихивать в БД |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 01:20 | Re: Нужна помощь "тыжпрограммистов".для -TRickSTeR-: кстати, кроме курла есть и дургие методы в PHP ;) |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 02:16 | Re: Нужна помощь "тыжпрограммистов".Спойлер <?php function sendGet($url) { $curl = curl_init() ; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); $out = curl_exec($curl); curl_close($curl); return $out; } $tag = "cars"; $query = "http://api.unit-online.ru/item?id=79"; $res = sendGet($query); //echo $res; + $res = explode(" ", $res); for(var i=0;i<200;i++;) { echo $res[i]; }при таком раскладе страница вообще не загружается, само собой консоль молчит. а так: $res = explode(" ", $res); echo $res[0]; echo $res[1]; echo $res[2]; echo $res[3]; echo $res[4]; echo $res[5]; echo $res[6]; echo $res[7]; echo $res[8]; ?> http://petromi.com/get/eaflMN59287100eb0311 "explode" удаляет из строки(2ой аргумент функции) то что задано первым( сейчас это пробел). |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 02:36 | Re: Нужна помощь "тыжпрограммистов".для -TRickSTeR-: консоль, это только для JS, т.е. того, что выполняется в барузере. твой PHP работает на стороне сервера, потом сервер отдаёт в браузер уже готовую вёрстку с подготовленным к выводу контентом. чтобы видеть ошибки PHP нужно начинать курить описание языка с уроков для начинающих, тогда тебе станет ясно, что: 1. тебе важно научиться использовать юникстайм чтобы первой строкой в переменную $a записать текущее время, а самой последней строкой отнять от нового текущего времени значение переменной $a, и вывести эту разницу в миллисекундах в самом конце документа для самоконтроля - тогда ты начнёшь понимать разницу между методами и вовремя заметишь слишком затратные операции
2. ты просто обязан изучить глобальные и локальные переменные PHP, чтобы узнать зачем в начале скрипта нужна строка error_reporting(E_ALL); |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 02:55 | Re: Нужна помощь "тыжпрограммистов".для -TRickSTeR-: блин! поиграй в шахматы! много поиграй, с разными соперниками, так много чтобы до тошноты, пока сниться на начнёт...
сам то я давно не играл, но очень хорошо запомнилась одна особенно унылая зима - с одноклассниками просто не занли чем заняться (лет по 15 нам было) и как-то подсели на шахматы - проводили так свой досуг, играли каждый вечер до одурения, иногда под водочку или винцо.
я почему это запомнил, это было как лом в жопу - осанку исправляет раз и на всегда, только лом был в мозг - кардинально изменился (в лучшую торону) способ мышления и выстраивания логических последовательностей. "многоходовочками" я даже в быту начал думать и предугадывать собственные и чужие косяки, точнее просчитывать, а это как раз то, чего тебе сейчас явно не хватает для того чтобы начать кодить |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 03:05 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: поиграй в шахматы! много поиграй,сам то я давно не игралДавай поиграем?) Я в школе всех выигрывал, в лагере всех вожатых, а вот у отца один раз наверно за всю историю выйграл. Насчёт 1го пункта: Спойлер <?php $a = date_create(); бла бла $b = date_create(); echo $b-$a; ?> как-то так должно быть? А вообще спать уже пора, мозг спит. До завтра и спокойной ночи=) |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 05:32 | Re: Нужна помощь "тыжпрограммистов".не, в шахматы мы не поиграем - нет ни времени, ни желания, тем более, что играть через интернет не серьёзно, ибо в конечном счёте оба игрока начнут читерить с помощью шахматных программ. как-то так должно быть?хз. как ты играл, но чего то на тебя не подействовало - может дело в вине? с чего у тебя вдруг такие функции вылезают странноватые? ты где вообще документацию то читаешь? да и в любом случае не годится - date_create(); это же про дату, а тебе время нужно, да не просто время, а микросекуны, так что даже функция time(); не упёрлась, ибо большинство твоих скриптов отработают меньше, чем за секунду и ничего от такой конструкции ты не узнаешь, а значит тебе нужна microtime(); но главное! нафига дважды пихать время в переменную? ты не ленивый, да? в первый раз переменная нужны только чтобы запомнить время начала работы скрипта, а второй раз нам это запоминать не нужно, нужно только разницу узнать, значит будет примерно так: Спойлер <?php error_reporting(E_ALL); $a = microtime(true); usleep(42); // Главный вопрос жизни, вселенной и всего такого echo microtime(true) - $a; ?> |
| |
|
|
Da Boogie Woogie [14]
16 Марта 2016 06:35 | Re: Нужна помощь "тыжпрограммистов".http://forum.unit-online.ru/topic/183495 http://cs622520.vk.me/v622520991/31e33/fotZI0J-diE.jpg |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 12:16 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: forum.unit-online.ru/topic/183495это не моё и креху откуда такое знать тоже не понятно. |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 13:02 | Re: Нужна помощь "тыжпрограммистов".для Da Boogie Woogie: Спойлер error_reporting(E_ALL); $a = microtime(true); function sendGet($url) { $curl = curl_init() ; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); $out = curl_exec($curl); curl_close($curl); return $out; } $tag = "cars"; $query = "http://api.unit-online.ru/item?id=79"; $res = sendGet($query); //echo $res;
$res = explode(" ", $res); for($i=0;$i++<300;) { global $res; echo $res[$i]; } echo $res; echo microtime(true) - $a; ?> Вот такой код возвращает http://petromi.com/get/eafbaQ77a29350eb5c11 Т.е. удалены пробелы во всей строке, зачем не знаю=) просто чтоб проверить как работает. Сейчас цикл имеет 300 итераций, тут этого достаточно, но вообще по-хорошему то надо чтобы число итераций=кол-ву элементов массива. Пишу $v=array_count_values($res); и в цикле for($i=0;$i++<$v;) вообще ничего не выводит кроме времени. |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 13:53 | Re: Нужна помощь "тыжпрограммистов".Спойлер echo '<ul>'; //Прогоняем циклом по первой ветке массива foreach($res as $key => $val) { echo '<li>'. $key .'</li><ul>'; //Вспомогательный цикл для прохождения по //данным из верхнего массива for($j = 0; $j < count($val); $j++) { echo '<li>'. $val[$j] .'</li>'; } echo '</ul>'; } echo '</ul>';
что-то страшное получилось http://petromi.com/get/eafa8k33f7a4c0eb6511 |
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 13:59 | Re: Нужна помощь "тыжпрограммистов".http://petromi.com/get/eafa2B005f3820eb6611 видимо чем проще код, тем лучше работает Спойлер foreach($res as $index => $val) { echo("$index -> $val <br>"); }
|
| |
|
|
-TRickSTeR- [16]
16 Марта 2016 14:17 | Re: Нужна помощь "тыжпрограммистов".Чтот не пойму как оно работает. Что foreach считает за разделитель между элементами? Сначало я думал что не зря абсолютно каждый элемент тут в кавычках, но потом увидел это http://petromi.com/get/eaf9Jb700f1170eb6811 Хотя в массиве написано "PowerFist", получается что любая смена регистра считается началом нового элемента? |
| |
|
|
|