turen

Рейтинг
29
Регистрация
19.09.2012
http23:
на странице выводится плейлист пользователя, который он может редактировать (удалять и
как теперь отсортировать old_tracks, так что-бы в конечном итоге массив имел вид:

new_tracks=array("0"=>"track 1", "1"=>"track 3", "2"=>"track 2");

я думаю, что проблему можно решить с помощью array_combine()?

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

В вашем случае поможет простенький цикл, ну во всяком случае, как один из вариантов решения.


<?php
$old_tracks=array("0"=>"track 1", "1"=>"track 2", "2"=>"track 3");
$tracks=array(0, 2, 1);
$new_tracks=array();
foreach($tracks as $idx)
{
$new_tracks[] = $old_tracks[$idx];
}

// $new_tracks будет содержать то, что надо
staskenig:
Все получилось, но есть вопрос. Можно как-то избавиться от дергатни при раскрытии и сворачивании?

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

это типа оставалось на домашнее задание))

Решил эту проблему, установив margin: 0; для p, которые здесь выполняют роль элементов списка.


<style type="text/css">
#first4 p, #allother p { margin: 0; }
</style>

Изменённый пример тут.

Или не про эту дерготню речь?

staskenig:
Показывается, например, 4 категорий:

Молоко
Свекла
Картошка
Лук

Но под ними добавить на скрипте "Больше"

Молоко
Свекла
Картошка
Лук
Больше

...при нажатии на которую раскрывается весь список.

А при раскрытии, меняется на "Меньше", при нажатии на которую, список сворачивается. Все это без перезагрузки страницы.

Упрощенный пример одного из вариантов реализации:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script language="javascript">
$(document).ready(function(){
$("#allother").hide();
$("#moreless").click(function(e) {
var allother = $("#allother");
$(this).text(allother.is(":visible") ? "» больше" : "« меньше");
allother.slideToggle();
e.stopImmediatePropagation();
return false;
});
});
</script>
</head>
<body>
<div id="first4">
<p>Первый</p>
<p>Второй</p>
<p>Третий</p>
<p>Четвертый</p>
</div>
<div id="allother">
<p>Пятый</p>
<p>Шестой</p>
<p>Седьмой</p>
<p>Восьмой</p>
</div>
<a href="#" id="moreless">» больше</a><br />
</body>
</html>

Пример живой тут.

Вариант с Google Docs Viewer:


<iframe src="http://docs.google.com/viewer?url=http://........./doc1.doc&embedded=true"
width="600" height="600" style="border: none;"></iframe>

url - полный путь к файлу

Файл должен быть в открытом доступе, естественно.

Живой пример: тут.

egralvoid:
turen, Спасибо большое за помощь, разобрался. Похоже проблема была действительно в encodeURIComponent.

плюс php magic quotes (лично у меня).

если одним запросом имелось ввиду просто "за раз", то можно в одной строчке

TRUNCATE TABLE table1; TRUNCATE TABLE table2; TRUNCATE TABLE table3;

(давать в MySQL несколько запросов в одном, разделяя их ";")

Но фактически это все равно будут разные запросы TRUNCATE.

Согласно документации, TRUNCATE не предусматривает указания нескольких названий таблиц в одном запросе.

egralvoid, покажите, что у вас видит скрипт в $_POST['json']:

в начале json.php:

print_r($_POST['json']);


---------- Добавлено 23.08.2013 в 10:31 ----------

И ещё вопрос (но он не отменяет предыдущего вопроса): для чего указываете dataType: 'JSON' (кстати, в документации - 'json', не проверял, есть ли разница) - если у Вас скрипт возвращает не данные JSON, а HTML? (который Вы потом используете как HTML, судя по строке $("#result").html(result); )

---------- Добавлено 23.08.2013 в 11:26 ----------

Проблему вижу в том, что encodeURIComponent заурленкодил все кавычки, а PHP автоматом их разурленкодил плюс добавил слэши ко всем кавычкам на всякий случай (magic quotes), и получилось, что JSON в функцию json_decode() передавался уже очень некорректный.

Восстановил пример у себя.

Теперь по делу - рабочий пример:


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script language="javascript"><!--
$(document).ready(function(){
var json = new Object();
json.html = $('html').html();
$.ajax({
url: 'jsonpost.php',
type: 'POST',
data: { 'json': JSON.stringify(json) } // дополнительное экранирование не делаем, т.к. возлагаем это на JQuery
}).done(function(data){
$("#result").html(data);
});
});
--></script>
</head>
<body>
<div id="result" style="white-space:pre; font-family:monospace;"></div>
<hr />
<h1>...</h1>
<p>....</p>
...
</body>
</html>

dataType: 'JSON' убрал, т.к. скрипт возвращает не JSON данные.

success заменил на .done(...), т.к. не стал разбираться, по какой именно причине он не срабатывал.

jsonpost.php:


<?php

// это на случай, если в php включены magic quotes - у меня лично получалось
// двойное экранирование кавычек, и естественно невалидный JSON
$json = get_magic_quotes_gpc() ? stripslashes($_POST['json']) : $_POST['json'];

$post = json_decode($json);

//var_dump($post);

// а это просто какой-то вариант обработки вместо var_dump...
$out = strip_tags($post->html); // убираем тэги (скрипты он не всегда вырезает)
$out = preg_replace("/\n+/", "\n", $out); // убираем повторные разрывы строки

// и вывод
echo $out;

В целях иллюстрирования - мой рабочий пример.

Qunn:
2. Узел от которого добавляется кукис является nk-motors.com а мне нужно что бы этот кукис еще и применялся к auct.nk-motors.com

По определению - если при установке куки указать домен ".nk-motors.com", то установленные куки должны будут распространяться и на поддомены.

---------- Добавлено 23.08.2013 в 10:14 ----------

Qunn:
1. Символы кодируются в ASCII. Соотвественно как мне не доспустить изменения?????

Не допустить изменения кем и чего?

Lautes:
turen, а имя функции где находиться данная строчка, менять или вставить прямо в неё?

По желанию. Не имеет особого значения, как называется функция. Можно вставить прямо в неё, вместо или после указанной строки.

Lautes, не надо, т.к. если GA уже и так стоит, то к моменту события код уже был прописан через _gaq.push(['_setAccount', 'UA-...']);

---------- Добавлено 22.08.2013 в 10:49 ----------

Lautes:
И я так понимаю это можно сделать только в аналитике?

для метрики - вместо (или после) _gaq.push(...) вставить:

yaCounter12345678.reachGoal('PHONE_7SEC');

- 12345678 заменить на ваш номер;

- в метрике для счетчика создать цель "Событие" с идентификатором цели PHONE_7SEC (или другое по вкусу).

Всего: 71