Войти
OFFLINE / Окно в реальностьПросмотров: 4,426

Нужна помощь "тыжпрограммистов".

Допустим у меня есть сайт.
На одной из страниц у меня подключен скрипт.
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. Не нужно писать типо "читай про фреймы и скрипты", я это и так пытаюсь делать, но либо я тупой, либо не там ищу.

Re: Нужна помощь "тыжпрограммистов".

ты хочешь из одного интерпретатора языка передать данные в другой?

нифига я не понял.

опять какая-то сломанная логика.

если ты уже начал работать с PHP,
то на время отложи свой JS - дальше ты при помощи этого JS уже будешь данные забирать совсем по другой схеме.

теперь вообще забудь про этот файл,
отложи его в сторонку.

кури теперь мануалы о том как при помощи PHP обратиться к API юнита, забрать массив, разобрать его и записать данные в БД

это уже совсем другая сказка начинается

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.

Re: Нужна помощь "тыжпрограммистов".

для Da Boogie Woogie:
Окей=)
тогда последний мой пост не считается.

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, всё так сложно...

Re: Нужна помощь "тыжпрограммистов".

для -TRickSTeR-:
так,
где логика то?

ну-ка! распиши всё по шагам...

вот открывается браузер - ты его открываешь или пользователь,
дальше что? куда идём, на какую страничку, что на ней?
попадаем на эту страницу, там кроме всего прочего в фоне срабатывает JS, который забирает у юнита массив и передаёт его PHP скрипту POST-запросом (ну не GET же, да?)
дальше этот PHP разбирает массив и каждую пару распихивает в БД
что-то дальше...

* что всё это время происходит в браузере, что делает пользователь и о чём он думает?

или у тебя другая версия событий есть?

кстати, а в какое место юнит-апи твой JS ломиться будет? к списку всех пушек или к какому то конкретному стволу?
а что ты собираешься писать в БД и зачем?

ты опять запутался!

Re: Нужна помощь "тыжпрограммистов".

для Da Boogie Woogie:
Хоп,
Спойлер

Такой вот файл. Ответ: http://petromi.com/get/eafmXb846efa50eaf911
Получается больше ничего никуда можно не передавать, всё лежит в res.

Re: Нужна помощь "тыжпрограммистов".

для Da Boogie Woogie:
Прости, не бей, я одумался=)

Re: Нужна помощь "тыжпрограммистов".

родил бле!

учись теперь разбирать массив на PHP
и для начала просто выводить нужные пары на экран в произвольной последовательности,
как родишь такое,
тогда будешь курить как это запихивать в БД

Re: Нужна помощь "тыжпрограммистов".

для -TRickSTeR-:
кстати, кроме курла есть и дургие методы в PHP ;)

Re: Нужна помощь "тыжпрограммистов".

Спойлер
+
$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ой аргумент функции) то что задано первым( сейчас это пробел).

Re: Нужна помощь "тыжпрограммистов".

для -TRickSTeR-:
консоль, это только для JS, т.е. того, что выполняется в барузере.
твой PHP работает на стороне сервера, потом сервер отдаёт в браузер уже готовую вёрстку с подготовленным к выводу контентом.
чтобы видеть ошибки PHP нужно начинать курить описание языка с уроков для начинающих,
тогда тебе станет ясно, что:
1. тебе важно научиться использовать юникстайм
чтобы первой строкой в переменную $a записать текущее время,
а самой последней строкой отнять от нового текущего времени значение переменной $a,
и вывести эту разницу в миллисекундах в самом конце документа для самоконтроля - тогда ты начнёшь понимать разницу между методами и вовремя заметишь слишком затратные операции

2. ты просто обязан изучить глобальные и локальные переменные PHP,
чтобы узнать зачем в начале скрипта нужна строка error_reporting(E_ALL);

Re: Нужна помощь "тыжпрограммистов".

для -TRickSTeR-:
блин!
поиграй в шахматы! много поиграй, с разными соперниками,
так много чтобы до тошноты, пока сниться на начнёт...

сам то я давно не играл,
но очень хорошо запомнилась одна особенно унылая зима - с одноклассниками просто не занли чем заняться (лет по 15 нам было) и как-то подсели на шахматы - проводили так свой досуг,
играли каждый вечер до одурения,
иногда под водочку или винцо.

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

Re: Нужна помощь "тыжпрограммистов".

для Da Boogie Woogie:
поиграй в шахматы! много поиграй,
сам то я давно не играл
Давай поиграем?)
Я в школе всех выигрывал, в лагере всех вожатых, а вот у отца один раз наверно за всю историю выйграл.

Насчёт 1го пункта:
Спойлер

как-то так должно быть?

А вообще спать уже пора, мозг спит. До завтра и спокойной ночи=)

Re: Нужна помощь "тыжпрограммистов".

не, в шахматы мы не поиграем - нет ни времени, ни желания,
тем более, что играть через интернет не серьёзно,
ибо в конечном счёте оба игрока начнут читерить с помощью шахматных программ.


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

с чего у тебя вдруг такие функции вылезают странноватые?
ты где вообще документацию то читаешь?
да и в любом случае не годится - date_create(); это же про дату,
а тебе время нужно,
да не просто время, а микросекуны,
так что даже функция time(); не упёрлась, ибо большинство твоих скриптов отработают меньше, чем за секунду и ничего от такой конструкции ты не узнаешь,
а значит тебе нужна microtime();

но главное! нафига дважды пихать время в переменную?
ты не ленивый, да?
в первый раз переменная нужны только чтобы запомнить время начала работы скрипта,
а второй раз нам это запоминать не нужно,
нужно только разницу узнать,
значит будет примерно так:
Спойлер

Re: Нужна помощь "тыжпрограммистов".

http://forum.unit-online.ru/topic/183495

http://cs622520.vk.me/v622520991/31e33/fotZI0J-diE.jpg

Re: Нужна помощь "тыжпрограммистов".

для Da Boogie Woogie:
forum.unit-online.ru/topic/183495
это не моё
и креху откуда такое знать тоже не понятно.

Re: Нужна помощь "тыжпрограммистов".

для Da Boogie Woogie:
Спойлер
Вот такой код возвращает http://petromi.com/get/eafbaQ77a29350eb5c11
Т.е. удалены пробелы во всей строке, зачем не знаю=) просто чтоб проверить как работает.
Сейчас цикл имеет 300 итераций, тут этого достаточно, но вообще по-хорошему то надо чтобы число итераций=кол-ву элементов массива.
Пишу
$v=array_count_values($res);
и в цикле
for($i=0;$i++<$v;)
вообще ничего не выводит кроме времени.

Re: Нужна помощь "тыжпрограммистов".

Спойлер

что-то страшное получилось http://petromi.com/get/eafa8k33f7a4c0eb6511

Re: Нужна помощь "тыжпрограммистов".

http://petromi.com/get/eafa2B005f3820eb6611
видимо чем проще код, тем лучше работает
Спойлер

Re: Нужна помощь "тыжпрограммистов".

Чтот не пойму как оно работает. Что foreach считает за разделитель между элементами? Сначало я думал что не зря абсолютно каждый элемент тут в кавычках, но потом увидел это http://petromi.com/get/eaf9Jb700f1170eb6811
Хотя в массиве написано "PowerFist", получается что любая смена регистра считается началом нового элемента?
1 2 3 4 5 6