ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Вопросы из области php

 

1555
Алексей @TheDark
Pegass, ладно, понял.
Судя по всему, проще задать для всего сайта дефолтную временную зону через date_default_timezone_set() и не париться.

20090
Dimitry @Dimitry
В базе таки удобнее хранить time() в INT(11) переменной тогда не зависит не от каких настроек сервера и поясов.
Ну кому как удобнее конечно 😀

**********

1555
Алексей @TheDark
Dimitry, так все равно придется выводить его в виде date('Y-m-d H:i:s', $value); И все равно зависишь от настроек сервера. Не вижу разницы, возмножно из-за отсутствия опыта. Но спасибо за статейку)

20090
Dimitry @Dimitry
выводить ты можешь его как хочешь, но хранить и использовать для поиска сортировки сравнения нужно именно числом...
вывод эт уже самое последнее что с датой делать 😀

2970
удалён @Foggy
**********, ********** - выбирай нужное. И подпишись на Codrops, там очень крутые штуки показывают.

1555
Алексей @TheDark
Вопрос по SQL запросам.
Суть такая: нужно сделать выборку из бд (например, таблица data), зная заранее нужные id записей. Эти id возвращаются функцией (т.е. в каждом конкретном случае они разные и их кол-во от 1 до дохрена), а еще один id получается из $_GET. Была идея сделать таким макаром:
Скажем, есть массив, хранящий эти id - $id_array
$str = '';
foreach($id_array as $value) {
$str .= " or id='$value'";
}
$query = "SELECT * FROM data WHERE id='".$_GET['id']."' $str ORDER BY date DESC";

В итоге, запрос выглядит примерно так:
WHERE id='1' or id='2' or id='3' ... or id='n'
Но в таком случае запрос может получиться очень длинным (мы ведь помним, что этих id может быть дохрена), да и, кажется, не комильфо так делать.

Есть ли какой-нибудь более изящный способ сделать такую выборку, чтобы также можно было сортировать и по дате?

Отредактировано TheDark - 27.11.2014
20090
Dimitry @Dimitry
конечно
where id IN (1,2,3,4,5)

но если может быть больше 100, стоит задуматься об оптимизации какой то )

1555
Алексей @TheDark
Dimitry, работает, да и выглядит проще. Но проблема в том, что может быть и больше 100 🙁

Ребят, может я с самого начала все неправильно делаю... Слишком у меня уж индусский код получается.
Пилю функционал рубрик для CMS. Основная идея в том, чтобы для каждой записи можно было присвоить несколько рубрик.
БД:
1. Есть таблица с рубриками (categories), если коротко: id, title, parent_cat, где parent_cat - id родительской рубрики (0 - если нет).
2. Есть таблица с записями (data), тут тоже все просто.
3. Есть таблица post_cat, которая объеденяет записи и рубрики: id, post_id, cat_id.

Теперь все упирается в то, как достать из data записи, чей post_id получила функция. Ничего умнее, чем способ выше я не придумал.
Может можно все-таки какой-то хитрый SQL запрос сделать?)

Отредактировано TheDark - 27.11.2014
20090
Dimitry @Dimitry
То как ты делаешь, точно не делают, должно решаться всё запросами без кучи ID
Копай в сторону вложенных запросов и JOIN.

1555
Алексей @TheDark
Dimitry, я так и понял, уже именно эту тему и копаю.

2615
Сергей @Pegass
а откуда этот список id берётся? тоже из базы? если да, то надо делать сложный запрос, а не такое извращение

если нет, то при условии что массив не ассоциативный, а нумерованный

if(isset($_GET['id'])) $id_array[]=$_GET['id'];
if(count($id_array)>0)
{
$query = "SELECT * FROM data WHERE id in "."('".implode("','",$id_array)."')"." ORDER BY date DESC";
}
else echo "не передано ни одного id";

1555
Алексей @TheDark
наверное, вопрос по .htaccess. нужно запретить обращаться к лог-файлу .log напрямую, через адресную строку, но оставить возможность просматривать его средствами работы с файлами php. как это делается?

20090
Dimitry @Dimitry
Да, только через него и можно, гугл переполнен ответами)

1163
Денис @Анатолич
ZloVeЩиЙ пишет:

Такой вопрос...
1. Можно ли на php вытащить скриншот из видео которое лежит на youtu.be имея ссылку?
2. Можно таких скриншотов сделать\вытащить несколько?

**********

а не существует ли аналогичных решений для Названия Ролика?
Название никак к ID не привязано?

2970
удалён @Foggy
Анатолич, загугли "youtube api".

1163
Денис @Анатолич
понимаю, что в голове моей каша и знаний мало. не ругайтесь пожалуйста сильно.
в принципе нашел как средствами PHP можно получить название ролика без заморочек с настройками api
i

$url = "http://gdata.youtube.com/feeds/api/videos/VIDEO_ID";
$doc = new DOMDocument();
$doc->load($url);
$name = $doc->getElementsByTagName("title")->item(0)->nodeValue;

где VIDEO_ID это айди видео с ютуба.
но хотелось бы приминать это на практике.
а конкретно для чата. чтобы писалось не "загружает Ролик".
а "загружает $name"

можно как то из чатовского яваскрипта отправить значение VIDEO_ID
и получить значение $name?

Отредактировано Анатолич - 06.01.2015
2970
удалён @Foggy
Проще всего использовать какую-нибудь js библиотеку без php вообще.
Готовых решений не найдёшь, потому что их я ни у кого не видел, а делать тут слишком много.
Вижу 2 варианта:
1. Погугли "youtube api js" и разберись сам.
2. Могу помочь, но не бесплатно. Пиши в скайп andrewgurylyov и опиши, что у тебя уже есть. Я назову цену.

4619
Web3r @Web3r
Wordpress. Вопрос про табуляцию.

В functions.php сменил вывод ссылки "read more" на свой вариант:
add_filter( 'the_content_more_link', 'modify_read_more_link' );
function modify_read_more_link() {
return '<div><a rel="bookmark" class="more" href="' . get_permalink() . '">Читать</a></div>';
}

Все нормально, но ломается табуляция в html-коде:
<p>...</p>
<p>...</p>
<div><a rel="bookmark" class="more" href="...">Читать</a></div>
<div>...</div>

Ничего банальней добавления пробелов не придумал (return ' <div>...';).
Есть в php более автоматизированный способ добавления пробелов? (не табов \t, а именно пробелов, т.к. у меня пробельная табуляция). Нашел вот такое:
str_repeat(' ', 6); - как можно это прикрутить в функцию выше? Или есть другие варианты?

Отредактировано Web3r - 06.01.2015
7094
Dim @Render
{
return str_repeat(' ', 6).'<div><a rel="bookmark" class="more" href="' . get_permalink() . '">Читать</a></div>';
}

Не?

1555
Алексей @TheDark
Привет. Нужна подсказка.
Мы частенько играем с друзьями в FIFA и проводим чемпионаты, но по некоторым причинам для некоторых матчей нужно, так сказать, рассчитать итоги.
Я написал на php простейшую функцию, которая из двух команд рандомно выбирает одну и делает ее победителем. Но при таком подходе, иногда получаются немыслимые результаты, вроде Россия - Германия 3:0 😀
Задумался над вероятностью некоторых исходов. Скажем, в массиве из 10 элементов, Германия должна встречаться 7 раз, а Россия - 3. В итоге, вероятность, что рандом выберет Германию больше, но не исключает победу другой команды.

Теперь, собственно, вопрос: как посчитать, сколько раз в массиве должна встречаться та или иная команда, в зависимости от, например, ее рейтинга? Ну т.е. в начале, присвоить каждой команде базовый рейтинг (например: Англия, Германия, Испания - 5 баллов, Украина, Россия, Албания - 3,5 балла) и в зависимости от расклада повлиять на вероятность исхода матча. Для нашей игры это важно, поэтому и заморочился.

Есть у кого-то идеи?)