Вопросы по PHP |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6807-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Вопросы по PHP |
Glavar |
Dec 12 2010, 20:35
Пост
#1
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
Доброго время суток!
1. Скажите как мне обрезать первых 7 знаков, а остальные занести в базу? 2. У меня есть максимальное число голосов припустим 50, как мне присвоить ему 1 место 15 глосов - 5 место 43 голоса - 2 место 28 голосов - 3 место 24 - 4 место и т.д. и что бы место записывалось и обновлялось автоматически в базе данных? Тема для обговорення мови програмування PHP, всі сторонні коментарі будуть видалятися, а їх автори отримувати % Сообщение отредактировал BoyKot - Feb 3 2011, 13:22 |
Glavar |
Dec 17 2010, 17:39
Пост
#21
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
Строка 214: $test = mysql_query("SELECT COUNT(golosa) FROM music WHERE golosa >= (SELECT golosa FROM music WHERE login = 'Glavar') "); Строка 216: $row_tes = mysql_fetch_array($test); Дало ошыбку: Warning: mysql_query() [function.mysql-query]: Unable to save result set in C:\AppServ\www\contest\index.php on line 214 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\contest\index.php on line 216 |
AnNE DoM.ini |
Dec 17 2010, 17:45
Пост
#22
|
Репутация: 173 Постоялец Группа: Пользователи Сообщений: 1 412 С нами с: 30-June 07 |
Что ты вообще пытаешься сделать?
|
Glavar |
Dec 17 2010, 17:51
Пост
#23
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
У меня есть песня в конкурсе. За нее голосуют. И когда я зайду на сайт под своим логином, то хочу узнать на котором она месте.
|
artishok |
Dec 17 2010, 22:09
Пост
#24
|
Репутация: 807 follow the music Группа: Пользователи Сообщений: 5 125 С нами с: 31-December 06 |
А не проще ли сделать в цикле, чтобы строка с твоей песней выделялась другим цветом, отличным от основного?
|
Glavar |
Dec 17 2010, 22:31
Пост
#25
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
А не проще ли сделать в цикле, чтобы строка с твоей песней выделялась другим цветом, отличным от основного? Я вот как раз хотел сделать чтобы было золото, серебро, бронза. Но и 1,2,3 место. Мне надо вывести толко цифру, а "Место" - статичное. Только 3 места я могу вывести, а вот припустим 1-на песня на 15, а другая на 43 месте хз как. Вот как оно выглядить сейчас без php: Сообщение отредактировал Glavar - Dec 18 2010, 0:26 |
artishok |
Dec 18 2010, 0:47
Пост
#26
|
Репутация: 807 follow the music Группа: Пользователи Сообщений: 5 125 С нами с: 31-December 06 |
Если я правильно понял, то немного подредктировав код R_E_W'а получим то что надо
<?php $sql = 'SELECT * FROM user_votes ORDER BY votes DESC'; $results = mysql_query($sql); $place = 1; echo "<table>"; while ($row = mysql_fetch_assoc($results)) { echo "<tr><td ".($row['login'] == $username ? "class='my_song'" : "").">$place. $row[name] ".($place <= 3 ? "($place место)" : "")."</td></tr>"; $place++; } echo "</table>"; ?> то что подчеркнуто - выведет в скобках возле названия место, только возле первых 3-ех позиций.. то что выделено жирным - изменит стиль таблицы если логин из БД будет совпадать с твоим, вобщем если ты добавил трек... Результат будет таков: 1. Название (1 место) 2. Название (2 место) 3. Название (3 место) 4. Название 5. Название 6. Название 7. Название 8. Название ... 15. Название 16. Название 17. Название 18. Название 19. Название .... 43. Название 44. Название 45. Название 46. Название 47. Название .... В данном примере треки выделенные жирным добавлены тобой |
Glavar |
Dec 18 2010, 0:57
Пост
#27
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
Если я правильно понял, то немного подредктировав код R_E_W'а получим то что надо то что подчеркнуто - выведет в скобках возле названия место, только возле первых 3-ех позиций.. то что выделено жирным - изменит стиль таблицы если логин из БД будет совпадать с твоим, вобщем если ты добавил трек... Результат будет таков: 1. Название (1 место) 2. Название (2 место) 3. Название (3 место) 4. Название 5. Название 6. Название 7. Название 8. Название ... 15. Название 16. Название 17. Название 18. Название 19. Название .... 43. Название 44. Название 45. Название 46. Название 47. Название .... В данном примере треки выделенные жирным добавлены тобой Завтра отпишусь.. Утром поробую. Но ставил я немножко другую задачу. В этом списке выводит все данные, а мне надо когда в профиль заходишь и выбераешь просмотр песен(своих), то возле них пишет место. Обший список сделать очень помог, Большое спс! Немного доделал код: <?php $sql = 'SELECT * FROM music ORDER BY golosa DESC'; $results = mysql_query($sql); $place = 1; echo "<table>"; while ($row = mysql_fetch_assoc($results)) { echo "<tr><td>$place."; echo "<span "; if ($row['login'] == $_SESSION['login']) { echo "style='font-weight: bold;'"; } else echo ""; echo "> $row[name] </span>".($place <= 3 ? "($place место)" : "")."</td></tr>"; $place++; } echo "</table>"; ?> Взял этот же код, вписал ограничение что б вывести только песни пользователя и ПРАВИЛЬНО СЧИТАЕТ! <?php $sql = 'SELECT * FROM music ORDER BY golosa DESC'; $results = mysql_query($sql); $place = 1; echo "<table>"; while ($row = mysql_fetch_assoc($results)) { if ($row['login'] == $_SESSION['login']) { echo "<tr><td ".($row['login'] == $username ? "class='my_song'" : "").">$place. $row[name] ".($place <= 7 ? "($place место)" : "")."</td></tr>"; } else echo ""; $place++; } echo "</table>"; ?> Большое спс всем за помощь. Обязательно добавлю по репе каждому! Если хотите скину бубликов. А то прям не знаю как отблагодарить. Сообщение отредактировал Glavar - Dec 18 2010, 9:56 |
Glavar |
Dec 18 2010, 10:00
Пост
#28
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
3. Как сделать чтобы 5 числа каждого месяца в 00:00, чтобы в одной из колонок все значения становились равны 0. Если возможно как то без триггеров и кровь, а то я так и непонял как с ними работать ((
|
Нурик Сакура |
Dec 18 2010, 12:54
Пост
#29
|
Репутация: 76 Cтаршой Группа: Пользователи Сообщений: 695 С нами с: 19-February 07 |
Без "тригерров и кровь" можно, но это глупо. Ставишь просто в самом начале скрипта, который постоянно запускается (например, index.php) проверку типа "какое сегодня число?". И если вдруг пятое - делаешь апдейт в базу с установкой всем значений в ноль.
Но это вариант извращенный, правильно написать скрипт, который будет просто запускаться каждый месяц 5-го числа в 0:00. Только почему именно пятого? Как правило, все обнуления приурочивают к началу месяца, то есть к первому числу. |
Glavar |
Dec 18 2010, 13:04
Пост
#30
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
5 число как пример. надо или 31 в 23.59.59 или 1 в 00.00. Дело в том что надо проверять время сервера. Если там наступило новое число, то надо все обнулить. а какой скрипт?
|
R_E_W |
Dec 18 2010, 13:42
Пост
#31
|
Репутация: 6 Дух Группа: Пользователи Сообщений: 46 С нами с: 5-April 08 |
3. Как сделать чтобы 5 числа каждого месяца в 00:00(к примеру), чтобы в одной из колонок все значения становились равны 0. Если возможно как то без триггеров и кровь, а то я так и непонял как с ними работать (( Если 5 числа каждого месяца в 00:00 то для такой задачи лучше всего подходит крон. А точнее в данном случае это единственно верное решение. Работать с ним в принципе просто. На хостинге какая панель управления? Ssh доступ есть? (к консоли, я надеюсь хостинг не на IIS =)) С скриптом тоже все просто <?php mysql_query('Update table_name SET field_name=0');//обнулит все значения столбца field_name таблицы table_name ?> Опять же, лучше всего это делать кроном, так как если не кроном то прийдется куда-то писать еще флаг что скрипт отработал(чтобы он выполнился только один раз нужного числа). А кроном все просто, и триггеры не нужны. Да и кстати из кода вот это удали где встречается: else echo ""; else условие не обязательно, а доп комманда доп время на выполнение (хоть и долисекунды, на глаз не заметишь =) , но программировать нужно учится правильно). Сообщение отредактировал R_E_W - Dec 18 2010, 14:10 |
Glavar |
Dec 18 2010, 14:27
Пост
#32
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
Если 5 числа каждого месяца в 00:00 то для такой задачи лучше всего подходит крон. А точнее в данном случае это единственно верное решение. Работать с ним в принципе просто. На хостинге какая панель управления? Ssh доступ есть? (к консоли, я надеюсь хостинг не на IIS =)) С скриптом тоже все просто <?php mysql_query('Update table_name SET field_name=0');//обнулит все значения столбца field_name таблицы table_name ?> Опять же, лучше всего это делать кроном, так как если не кроном то прийдется куда-то писать еще флаг что скрипт отработал(чтобы он выполнился только один раз нужного числа). А кроном все просто, и триггеры не нужны. Да и кстати из кода вот это удали где встречается: else echo ""; else условие не обязательно, а доп комманда доп время на выполнение (хоть и долисекунды, на глаз не заметишь =) , но программировать нужно учится правильно). Сайт стоит у меня на компютере. Использую MySQL: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Web server: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
R_E_W |
Dec 18 2010, 15:21
Пост
#33
|
Репутация: 6 Дух Группа: Пользователи Сообщений: 46 С нами с: 5-April 08 |
Для крона нужна любая unix система.
Ну так дальше сайт будет выкладываться на какой-то хостинг? А все норм пхп хостинги на unix системах Вот тогда и настроишь крон. С Windows планировщиком не знаком, но думаю если погуглить не проблема будет настроить |
Нурик Сакура |
Dec 18 2010, 23:01
Пост
#34
|
Репутация: 76 Cтаршой Группа: Пользователи Сообщений: 695 С нами с: 19-February 07 |
И несколько оффтопный совет - обнови PHP до 5.3, потому что на днях мало того, что опубликовали версию 5.2.16 (в которой много багов пофикшено), так еще и официально прекратили поддержку ветки 5.2.
|
Glavar |
Dec 19 2010, 21:35
Пост
#35
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
4. При написании и после обновления mysql:
$date_mes = date("Y-m-d"); $time = date("H:i:s"); Появилась ошыбка: Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for '2.0/no DST' instead in C:\AppServ\www\contest\index.php on line 6 Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for '2.0/no DST' instead in C:\AppServ\www\contest\index.php on line 7 Сообщение отредактировал Glavar - Dec 19 2010, 21:48 |
Нурик Сакура |
Dec 19 2010, 21:55
Пост
#36
|
Репутация: 76 Cтаршой Группа: Пользователи Сообщений: 695 С нами с: 19-February 07 |
Может, при обновлении PHP, а не MySQL? Это не критичная ошибка, она просто указывает на то, что в настройках php.ini, по моему, не установлен временной пояс. Но я могу ошибаться, так как один раз только видел эту ошибку у себя на сервере и более опытные мне сказали, что она не критична.
UPD.: загуглил, таки да, это нужно просто в php.ini прописать такое: [Date] ; Defines the default timezone used by the date functions date.timezone = "Europe/Kiev" Сообщение отредактировал Нурик Сакура - Dec 19 2010, 21:58 |
Glavar |
Dec 19 2010, 22:05
Пост
#37
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
Может, при обновлении PHP, а не MySQL? Это не критичная ошибка, она просто указывает на то, что в настройках php.ini, по моему, не установлен временной пояс. Но я могу ошибаться, так как один раз только видел эту ошибку у себя на сервере и более опытные мне сказали, что она не критична. UPD.: загуглил, таки да, это нужно просто в php.ini прописать такое: [Date] ; Defines the default timezone used by the date functions date.timezone = "Europe/Kiev" прописал, не помогло ВООО помогла функция на сайте <? date_default_timezone_set("Europe/Kiev"); ?> Сообщение отредактировал Glavar - Dec 19 2010, 22:08 |
AnNE DoM.ini |
Dec 19 2010, 22:39
Пост
#38
|
Репутация: 173 Постоялец Группа: Пользователи Сообщений: 1 412 С нами с: 30-June 07 |
после изменения php.ini надо апач рестартовать
|
Glavar |
Dec 20 2010, 19:47
Пост
#39
|
Репутация: 10 Активист Группа: Пользователи Сообщений: 375 С нами с: 11-May 08 |
5. Вопрос относиться не так к php, как javascript( jquery) хотелось бы сделать выпадающие окошко( как тут http://www.ruseller.com/lessons.php?rub=32&id=5870 ), но есть проблема, когда вписываешь её в цикл while выводит коряво
Пример кода: <? $results = mysql_query("SELECT * FROM table ORDER BY id DESC",$db);; $place = 2; while ($row = mysql_fetch_assoc($results)) { echo '<div id="main"><a class="button" href="#">'.$row["name"].'</a></div><div id="box"><p><b>'.$place.'</p></div>'; $place++; } ?> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="bouncebox_plugin/jquery.easing.1.3.js"></script> <script type="text/javascript" src="bouncebox_plugin/jquery.bouncebox.1.0.js"></script> <script type="text/javascript" src="script.js"></script> Сообщение отредактировал Glavar - Dec 20 2010, 19:49 |
iProphet |
Dec 20 2010, 21:12
Пост
#40
|
Репутация: 39 Активист Группа: Пользователи Сообщений: 358 С нами с: 5-September 09 |
Сделай так:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> <script type="text/javascript" src="bouncebox_plugin/jquery.easing.1.3.js"> <script type="text/javascript" src="bouncebox_plugin/jquery.bouncebox.1.0.js"> <script type="text/javascript" src="script.js"> <? $results = mysql_query("SELECT * FROM table ORDER BY id DESC",$db); $place = 2; echo '<div id="main">'; while ($row = mysql_fetch_assoc($results)) { echo '<a class="button" href="#">'.$row["name"].'</a></div><div id="box"><p><b>'.$place.'</p>'; $place++; } echo '</div>'; ?> |
Упрощённая версия | Сейчас: 2nd November 2024 - 20:16 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |