Тема: Циклы в PHP (WAP/WEB мастеру/Помощь мастерам) Zed (11 Jun 2022 в 20:05) $datam = [] так пробуй. Опять же.Надо полный код ATMAS (18 Jun 2022 в 08:01) --Цитата-- Zed (11 Jun 2022 в 20:05): $datam = [] так пробуй. Опять же.Надо полный код ---------- Zed, пробовал, не катит. Я пилю свой mp3-плеер, нужно создать плейлист. Пока не уверен, что оставлю этот вариант плеера, слишком муторным получается. Но в целях познавания чего-то нового готов изучить еще варианты Zed (21 Jun 2022 в 21:27) --Цитата-- ATMAS (18 Jun 2022 в 08:01): Zed, пробовал, не катит. Я пилю свой mp3-плеер, нужно создать плейлист. Пока не уверен, что оставлю этот вариант плеера, слишком муторным получается. Но в целях познавания чего-то нового готов изучить еще варианты ---------- ATMAS, тогда обьяви переменную перед циклом Zed (21 Jun 2022 в 21:29) --Цитата-- ATMAS (18 Jun 2022 в 08:01): Zed, пробовал, не катит. Я пилю свой mp3-плеер, нужно создать плейлист. Пока не уверен, что оставлю этот вариант плеера, слишком муторным получается. Но в целях познавания чего-то нового готов изучить еще варианты ---------- ATMAS, а дальше код скинь. Мне кажется ошибка не в этом коде Скиталец (24 Jun 2022 в 16:15) Нифига не понял... как можно какую то строку вытащить из массива при помощи цикла и без статичного идентификатора?... цикл он и есть цикл. чтобы к строке привязаться нужно иметь статичную единицу. обясни тз попдробнее что ты от него хочешь? ATMAS (24 Jun 2022 в 18:54) Скиталец, тот же вопрос к тебе. Можно ли поподробней? Пысы. А что я неясно изложил в вопросе темы? ATMAS (24 Jun 2022 в 19:06) Скиталец, в общем, суть вопроса: мне нужно вытащить переменную из цикла (php). Нужен плеер, перед циклом подключается основной файл плеера .js, после цикла(php) идет как дополнение к js, то есть внедряется <sсript>, в котором нужно указать первый ид, последний и текущий. Вот тут и начинаются чудеса: либо плеер не работает, либо считывает неправильно идэшки. Я хотел запилить именно плеер, а не просто проигрыватель файлов по порядку. Сам плеер находился перед циклом. Хз, что тут еще добавить... Извиняй за возможную непоследовательнось в обьяснении Zed (24 Jun 2022 в 20:33) --Цитата-- ATMAS (24 Jun 2022 в 19:06): Скиталец, в общем, суть вопроса: мне нужно вытащить переменную из цикла (php). Нужен плеер, перед циклом подключается основной файл плеера .js, после цикла(php) идет как дополнение к js, то есть внедряется <sсript>, в котором нужно указать первый ид, последний и текущий. Вот тут и начинаются чудеса: либо плеер не работает, либо считывает неправильно идэшки. Я хотел запилить именно плеер, а не просто проигрыватель файлов по порядку. Сам плеер находился перед циклом. Хз, что тут еще добавить... Извиняй за возможную непоследовательнось в обьяснении ---------- ATMAS, скинь весь код полностью.Но я могу и ошибаться,но лучше все таки весь js код после цикла поместить ATMAS (25 Jun 2022 в 06:50) Zed, не влазит весь код сюда ATMAS (25 Jun 2022 в 06:53) Zed, сам файл скину Скиталец (28 Jun 2022 в 23:44) Так все правильно. 1. Переменная $post не массив, 2. при переборе она не обновляется а перезаписывается ее гасить надо unset($post) иначе в ней будет только последний индекс сеанса Для твоих целей нужно перебрать по-другому например использовать for() но это будет ещё тот якорь Скиталец (28 Jun 2022 в 23:55) Zed, $datam[] = $post[\'id\']; так не вытянуть ид из переменной. ,$post не массив, чтобы записать в переменную datam ид массив $q должен содержать только id,. Но тогда проще будет обращаться к переменной по ключу без всякого перебора. Скиталец (29 Jun 2022 в 00:06) --Цитата-- ATMAS (24 Jun 2022 в 18:54): Скиталец, тот же вопрос к тебе. Можно ли поподробней? Пысы. А что я неясно изложил в вопросе темы? ---------- ATMAS, так я понять не мог как ты не сериализованный массив пытался в виде строки циклом перебрать... $post[id] это массив к которому ты обратился по ключу id а в задаче на перебор никаких преобразований не выполнял. Вот я и говорю что нифига не понял. Как из строки цикла массив сделал. ATMAS (29 Jun 2022 в 17:35) Скиталец, мда, видимо, эти уроки я прогуливал, ибо я нихрена не понял, что мне делать и запутался еще больше. Не подскажешь, как это реализовать? Скиталец (29 Jun 2022 в 18:46) ATMAS, в смысле как? Я могу твою идею полностью переписать а как из твоего кода ид вытянуть я не знаю. ATMAS (29 Jun 2022 в 18:56) Скиталец, ок, пошевелю немного мозгами, может и придумаю чего)) а за помощь, за подсказки спасибо)) Скиталец (29 Jun 2022 в 18:57) А насчёт цикла все просто. Смотри есть массив <? $arr = array(0,1,2,3); ////Перебираю foreach($arr as $val){ echo $val; ///вывожу unset($val); // обновляю } Переменная $val при переборе не является массивом, она стала числом в данном примере 3 она не обновляется а перезаписывается, поэтому ее нужно убивать если хочешь зачем то собрать результат обратно. Но это тупо ибо $arr никуда не исчезла. ATMAS (29 Jun 2022 в 18:58) --Цитата-- Скиталец (29 Jun 2022 в 18:46): ATMAS, в смысле как? Я могу твою идею полностью переписать а как из твоего кода ид вытянуть я не знаю. ---------- Скиталец, истессно за вознаграждение, правильно я понимаю? ATMAS (29 Jun 2022 в 19:02) --Цитата-- Скиталец (29 Jun 2022 в 18:57): А насчёт цикла все просто. Смотри есть массив <? $arr = array(0,1,2,3); ////Перебираю foreach($arr as $val){ echo $val; ///вывожу unset($val); // обновляю } Переменная $val при переборе не является массивом, она стала числом в данном примере 3 она не обновляется а перезаписывается, поэтому ее нужно убивать если хочешь зачем то собрать результат обратно. Но это тупо ибо $arr никуда не исчезла. ---------- Скиталец, хм, пожалуй, все-таки пора мне более качественно изучить циклы с масивами((( мне и раньше эти масивы туго давались, потому и забил на них (лень-матушка) и вот результат: основ не понимаю Скиталец (29 Jun 2022 в 19:06) ATMAS, нет. Я же за тебя модуль писать не буду. Напишу саму логику выбора id из массива $q дальше сам. К стати покажи что за массив что он содержит. ATMAS (29 Jun 2022 в 19:11) --Цитата-- Скиталец (29 Jun 2022 в 19:06): ATMAS, нет. Я же за тебя модуль писать не буду. Напишу саму логику выбора id из массива $q дальше сам. К стати покажи что за массив что он содержит. ---------- Скиталец, весь код(!) находится в файле, который я выложил, а вот за пример я буду очень благодарен Скиталец (29 Jun 2022 в 19:19) ATMAS, тогда до вечера, я с телефона сейчас php файл не открою. Скиталец (29 Jun 2022 в 19:29) --Цитата-- ATMAS (29 Jun 2022 в 19:11): Скиталец, весь код(!) находится в файле, который я выложил, а вот за пример я буду очень благодарен ---------- ATMAS, https://dcms-social.ru/forum/20/44/63374/ Посмотри файлы в этой теме, все писал на массивах и работал с ними по разному. Может что то полезное найдешь. ATMAS (29 Jun 2022 в 19:34) --Цитата-- Скиталец (29 Jun 2022 в 19:19): ATMAS, тогда до вечера, я с телефона сейчас php файл не открою. ---------- Скиталец, да не вопрос)) Скиталец (29 Jun 2022 в 21:15) Так $q выбирает базу! Для этого используют циклы с предусловием while() постусловием do-while() или универсальный for() последний не рекомендую. Нафига такой гемор? ATMAS (29 Jun 2022 в 21:41) --Цитата-- Скиталец (29 Jun 2022 в 21:15): Так $q выбирает базу! Для этого используют циклы с предусловием while() постусловием do-while() или универсальный for() последний не рекомендую. Нафига такой гемор? ---------- Скиталец, вот я и пытаюсь упростить задачу, но от недостатка опыта и знаний в масивах (в связке с циклами), только усложняю, получается Скиталец (1 Jul 2022 в 12:41) ATMAS, конечно, в плане массивов все давно придумано. И нюансов там дофига, могу посоветовать тебе попробовать движок Санди-форум он написан на самом редком языке на руби, из России рубинистов всего 29 чел. Но язык интересен тем что он на массивах весь. Впрочем как любой другой шаблон но его гибкость и статичность в сравнение не идёт не с одним другим. Я уже несколько лет плотно на нем сижу, но всех его возможностей даже на 5% не использую. И не потому что у меня сайт голый. Просто там такие варианты работы с сеансами что многие просто ненужны впринципе вот например зачем кому то может понадобиться рисовать уведомления в кэш по символу в единицу времени? А такой метод имеется. Вобщем попробуй. //// Не бейте. Я не обращаю в свою веру, просто даю совет как пробудить тягу к изучению массивов и его возможностях + дцмс давно пора внедрять шаблоны. kantry (1 Jul 2022 в 16:14) ATMAS, фигней занимаешься)) замени свой foreach на то что там и должно быть [i]while ($post = fetch_assoc($q)) {[/i] в $q находится ресурс(ссылка на данные в таблице), нет там никакого массива:D П.С. Давно не заглядывал, как в каменный век попал:D ATMAS (1 Jul 2022 в 18:06) --Цитата-- kantry (1 Jul 2022 в 16:14): ATMAS, фигней занимаешься)) замени свой foreach на то что там и должно быть [i]while ($post = fetch_assoc($q)) {[/i] в $q находится ресурс(ссылка на данные в таблице), нет там никакого массива:D П.С. Давно не заглядывал, как в каменный век попал:D ---------- kantry, это решит проблему? не думаю ATMAS (1 Jul 2022 в 18:12) все равно не пойму, как вынести переменную из цикла за его пределы, или я вообще не туда копаю ATMAS (1 Jul 2022 в 18:32) то есть, даже не так. нужно для js-вставки кода плеера выбрать первый ид (он же и основной в дальнейшем) из цикла и последний, а также ид, который будет подставляться в сам плеер. все это нужно делать за циклом. а как энто сделать, я не врублюсь. ATMAS (1 Jul 2022 в 20:28) мда, в общем, с помощью лома и чьей-то матери, вывел плеер из коматоза, как-бы все считывает, все работает, кроме одного момента: при переходе на страницу с плеером или после обновления этой станицы плеер работает с глюком, то есть: плеер считал корректно первый ид в списке, но после нажатия кнопки плэй (в самом плеере) идет зависание на пару долей секунды и переключается на следующий трек, после этого все идет как по маслу, песни автоматом переключаются по порядку и все такое, можно даже включить первый трек из плейлиста (тот, который заглючил вначале) kantry (1 Jul 2022 в 23:42) --Цитата-- ATMAS (1 Jul 2022 в 18:06): kantry, это решит проблему? не думаю ---------- ATMAS, нет там проблемы, там у тебя ошибка, первокласники иногда такие допускают:) ATMAS (2 Jul 2022 в 05:22) --Цитата-- kantry (1 Jul 2022 в 23:42): ATMAS, нет там проблемы, там у тебя ошибка, первокласники иногда такие допускают:) ---------- kantry, вместо критики можно было просто указать на ошибку, собственно за этим я сюда и обратился. Спасибо за помощь kantry (2 Jul 2022 в 13:09) ATMAS, ну так первым постом я тебе и указал на ошибку, без критики. Ты сам полез объясняться:D kantry (2 Jul 2022 в 13:25) Как то так;) ATMAS (2 Jul 2022 в 16:10) --Цитата-- kantry (2 Jul 2022 в 13:25): Как то так;) ---------- kantry, и что это? kantry (2 Jul 2022 в 20:31) ATMAS, аудио плеер с частотным спектром ATMAS (5 Jul 2022 в 17:22) --Цитата-- kantry (2 Jul 2022 в 20:31): ATMAS, аудио плеер с частотным спектром ---------- kantry, а как это мне поможет? Мне совсем другое требуется ATMAS (23 Oct 2022 в 04:11) Вопрос ещё живой MarkPrior (23 Oct 2022 в 17:10) --Цитата-- ATMAS (25 Jun 2022 в 06:53): Zed, сам файл скину ---------- [b]Проблема не в выборке ID.[/b] Это ты делаешь правильно. На верочку: [url=https://dcms-social.ru/foto/foto0/8061.jpg]образец выборки[/url], прокомментировал, что как работает. То, что используешь foreach - правильно (если у тебя $q уже является массивом с результатами запроса к БД). У тебя проблема в самой реализации плеера. Не понятно, зачем ты вообще пытаешься вытянуть все ID, если ID-идентификатор трека у тебя передаётся аж в пяти местах. Собственно, оттуда в JS ты и можешь (вернее, должен) его получать, а не с внешнего массива. [b]Как получить идентификатор.[/b] Легко и просто. У тебя есть объект, по которому пользователь кликает для воспроизведения трека. Вот через атрибуты этого объекта и передавай ID. Собственно, у тебя это происходит в строке: [i]<span id=\"mp3play-$post[\'id\']\" class=\"icon-play\" onclick=\"Player(\'toggle\', \'$post[\'id\']\')\">[/i] [b]Первый и последний ID.[/b] Если тебе они прям-таки нужны, то реализация будет такая: [url=https://dcms-social.ru/foto/foto0/8062.jpg]скриншот[/url]. [b]Array to string conversation...[/b] Возникает, потому что ты пытаешься вывести весь список ID, как строку, в самом участке JS-кода. =========== Пересматривай алгоритм своего плеера, проблема в его реализации, она, мягко говоря, кривейшая. Не должно быть такого, чтобы куски JS-кода вставлялись в HTML. Плеер с плейлистом реализуется крайне просто, всё уместится в 1 js-файл. ATMAS (4 Nov 2022 в 21:36) --Цитата-- MarkPrior (23 Oct 2022 в 17:10): [b]Проблема не в выборке ID.[/b] Это ты делаешь правильно. На верочку: [url=https://dcms-social.ru/foto/foto0/8061.jpg]образец выборки[/url], прокомментировал, что как работает. То, что используешь foreach - правильно (если у тебя $q уже является массивом с результатами запроса к БД). У тебя проблема в самой реализации плеера. Не понятно, зачем ты вообще пытаешься вытянуть все ID, если ID-идентификатор трека у тебя передаётся аж в пяти местах. Собственно, оттуда в JS ты и можешь (вернее, должен) его получать, а не с внешнего массива. [b]Как получить идентификатор.[/b] Легко и просто. У тебя есть объект, по которому пользователь кликает для воспроизведения трека. Вот через атрибуты этого объекта и передавай ID. Собственно, у тебя это происходит в строке: [i]<span id=\"mp3play-$post[\'id\']\" class=\"icon-play\" onclick=\"Player(\'toggle\', \'$post[\'id\']\')\">[/i] [b]Первый и последний ID.[/b] Если тебе они прям-таки нужны, то реализация будет такая: [url=https://dcms-social.ru/foto/foto0/8062.jpg]скриншот[/url]. [b]Array to string conversation...[/b] Возникает, потому что ты пытаешься вывести весь список ID, как строку, в самом участке JS-кода. =========== Пересматривай алгоритм своего плеера, проблема в его реализации, она, мягко говоря, кривейшая. Не должно быть такого, чтобы куски JS-кода вставлялись в HTML. Плеер с плейлистом реализуется крайне просто, всё уместится в 1 js-файл. ---------- MarkPrior, спасибо за подсказки, но не совсем понял пункт \"если у тебя $q уже является массивом с результатами запроса к БД\". Я раньше таким не заморачивался, как это делается? P.S. ---------------------- сверху плейлиста мне нужно поставить управление плеером, а оно идет перед началом цикла foreach, вот для этого мне и нужен \"велосипед\")) ATMAS (6 Nov 2022 в 00:34) хочу сразу определиться с наименованиями для простоты и удобства понимания, о чем речь идет Плеер - участок кода, размещается до вызова цикла (while, foreach, не суть важно), отвечает за управление плейлистом кнопками play/pause, next/previous (пока недоступно, в планах добавить в ближайшем будущем); Плейлист - участок кода, через который формируется и выводится список файлов по заданным параметрам (в данном случае, это штатный $q) ATMAS (6 Nov 2022 в 01:00) в общем, прикол такой: где-то в коде (скорее всего в js(!)) накидывается +1 при первом запуске страницы с плейлистом и плеером, ибо ситуевина такая, что при первом посещении или после обновления страницы с плеером и плейлистом, после нажатия кнопки плей, плеер перекидывает на следующий файл, и дальше все работает без сбоев, можно даже вручную запустить первый файл, который не зашел ранее. Блин, ну я хз, как все вариации описать, спрашивайте лучше, что вам непонятно, так будет продуктивнее, я думаю Источник: http://www.dcms-social.ru/forum/20/44/63418/