Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6707-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
20 Страницы  < 1 2 3 4 > »   
Reply to this topicStart new topic
Ответов(20 - 39)
Glavar
Dec 17 2010, 17:39
  
Пост #21



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


(AnNE DoM.ini @ Dec 17 2010, 17:23) Перейти к цитате


Строка 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
AnNE DoM.ini
Dec 17 2010, 17:45
  
Пост #22



Репутация:   173  
Постоялец
***

Группа: Пользователи
Сообщений: 1 412
С нами с: 30-June 07


Что ты вообще пытаешься сделать?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 17 2010, 17:51
  
Пост #23



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


У меня есть песня в конкурсе. За нее голосуют. И когда я зайду на сайт под своим логином, то хочу узнать на котором она месте.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
artishok
Dec 17 2010, 22:09
  
Пост #24



Репутация:   807  
follow the music
*****

Группа: Пользователи
Сообщений: 5 125
С нами с: 31-December 06


А не проще ли сделать в цикле, чтобы строка с твоей песней выделялась другим цветом, отличным от основного?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 17 2010, 22:31
  
Пост #25



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


(паZитифф @ Dec 17 2010, 22:09) Перейти к цитате

А не проще ли сделать в цикле, чтобы строка с твоей песней выделялась другим цветом, отличным от основного?

Я вот как раз хотел сделать чтобы было золото, серебро, бронза. Но и 1,2,3 место. Мне надо вывести толко цифру, а "Место" - статичное. Только 3 места я могу вывести, а вот припустим 1-на песня на 15, а другая на 43 месте хз как.
Вот как оно выглядить сейчас без php:
Open in new window

Сообщение отредактировал Glavar - Dec 18 2010, 0:26
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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. Название
....

В данном примере треки выделенные жирным добавлены тобой



User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 18 2010, 0:57
  
Пост #27



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


(паZитифф @ Dec 18 2010, 0:47) Перейти к цитате

Если я правильно понял, то немного подредктировав код 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 18 2010, 10:00
  
Пост #28



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


3. Как сделать чтобы 5 числа каждого месяца в 00:00, чтобы в одной из колонок все значения становились равны 0. Если возможно как то без триггеров и кровь, а то я так и непонял как с ними работать ((
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Нурик Сакура
Dec 18 2010, 12:54
  
Пост #29



Репутация:   76  
Cтаршой
**

Группа: Пользователи
Сообщений: 695
С нами с: 19-February 07


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

Но это вариант извращенный, правильно написать скрипт, который будет просто запускаться каждый месяц 5-го числа в 0:00. Только почему именно пятого? Как правило, все обнуления приурочивают к началу месяца, то есть к первому числу.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 18 2010, 13:04
  
Пост #30



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


5 число как пример. надо или 31 в 23.59.59 или 1 в 00.00. Дело в том что надо проверять время сервера. Если там наступило новое число, то надо все обнулить. а какой скрипт?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
R_E_W
Dec 18 2010, 13:42
  
Пост #31



Репутация:   6  
Дух


Группа: Пользователи
Сообщений: 46
С нами с: 5-April 08


(Glavar @ Dec 18 2010, 10:00) Перейти к цитате

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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 18 2010, 14:27
  
Пост #32



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


(R_E_W @ Dec 18 2010, 13:42) Перейти к цитате

Если 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:
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
R_E_W
Dec 18 2010, 15:21
  
Пост #33



Репутация:   6  
Дух


Группа: Пользователи
Сообщений: 46
С нами с: 5-April 08


Для крона нужна любая unix система.
Ну так дальше сайт будет выкладываться на какой-то хостинг? А все норм пхп хостинги на unix системах
Вот тогда и настроишь крон. С Windows планировщиком не знаком, но думаю если погуглить не проблема будет настроить
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Нурик Сакура
Dec 18 2010, 23:01
  
Пост #34



Репутация:   76  
Cтаршой
**

Группа: Пользователи
Сообщений: 695
С нами с: 19-February 07


И несколько оффтопный совет - обнови PHP до 5.3, потому что на днях мало того, что опубликовали версию 5.2.16 (в которой много багов пофикшено), так еще и официально прекратили поддержку ветки 5.2.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Нурик Сакура
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Glavar
Dec 19 2010, 22:05
  
Пост #37



Репутация:   10  
Активист
*

Группа: Пользователи
Сообщений: 375
С нами с: 11-May 08


(Нурик Сакура @ Dec 19 2010, 21:55) Перейти к цитате

Может, при обновлении PHP, а не MySQL? Это не критичная ошибка, она просто указывает на то, что в настройках php.ini, по моему, не установлен временной пояс. Но я могу ошибаться, так как один раз только видел эту ошибку у себя на сервере и более опытные мне сказали, что она не критична.

UPD.: загуглил, таки да, это нужно просто в php.ini прописать такое:
[Date]
; Defines the default timezone used by the date functions
date.timezone = "Europe/Kiev"


прописал, не помогло sorry.gif ВООО помогла функция на сайте <? date_default_timezone_set("Europe/Kiev"); ?>

Сообщение отредактировал Glavar - Dec 19 2010, 22:08
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
AnNE DoM.ini
Dec 19 2010, 22:39
  
Пост #38



Репутация:   173  
Постоялец
***

Группа: Пользователи
Сообщений: 1 412
С нами с: 30-June 07


после изменения php.ini надо апач рестартовать
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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 выводит коряво sorry.gif
Пример кода:

<?
$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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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>';
?>
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

20 Страницы  < 1 2 3 4 > » 
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 26th July 2024 - 6:03
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.