Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
просто делаем правильную выборку из базы и все, далее работаем с результатом запроса

Код:
SELECT * FROM actor WHERE
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK)

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:12 13-09-2019 | Исправлено: Mavrikii, 23:15 13-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это первый код, с разрывом в одну неделю
Теперь, как я могу добавить остальное, чтобы получить
actor_id (со ссылкой на вкладку)
фото
день рождения
 
this is the first code, with a gap of one week
now how do I add the rest to get
actor_id (with link to the tab)
photo
birthday
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 23:24 13-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Теперь, как я могу добавить остальное, чтобы получить
actor_id (со ссылкой на вкладку)
фото
день рождения

этот запрос (так как указано SELECT *) выбирает всю строку из MySQL целиком.
включая имя, дату рождения и фото

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:26 13-09-2019 | Исправлено: Mavrikii, 23:27 13-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

что-то не так
 

Код:
 
 
<?php
    
    require_once("connetti.php");
    
// just returns the actor having a birthday
function birthday_today() {
    $result = mysql_query("SELECT * FROM actor WHERE
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK) ");
    $actor = array();
    while ($row = mysql_fetch_assoc($result))
        $actor[] = $row['nome'];
    return $actor;
}
 
// make a unordered-list out of the actor having birthday
$ul = "<ul>";
foreach(birthday_today() as $nome)
    $ul .= "<li>$nome</li>";
$ul .= "</ul>";
 
echo $ul;
 
 
 

 

Код:
 
 
<td class="text-left"><?php echo "<a href=\"cinema.php?id=" . $row['actor_id'] . "\">" . $ul . "</a>";?></td>
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 23:33 13-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
думать нужно, хоть немного..

Код:
$actors = [];
while ($row = mysql_fetch_assoc($result))
   $actors[] = $row;

 
после этого в массиве $actors будут все данные о каждом.

Код:
foreach($actors as $actor)
print_r($actor);

 
с ним и нужно работать во всех циклах вывода чего либо

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:52 13-09-2019 | Исправлено: Mavrikii, 23:55 13-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
// just returns the actor having a birthday
function birthday_today() {
    $result = mysql_query("SELECT * FROM actor WHERE
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK) ");
    $actor = array();
    while ($row = mysql_fetch_assoc($result))
        $actor[] = $row['nome']
    . $row['birthday']
    . $row['foto']
    ;
    return $actor;
}
 
// make a unordered-list out of the actor having birthday
$ul = "<ul>";
foreach(birthday_today() as $nome)
    $ul .= "<li>$nome</li>";
$ul .= "</ul>";
 
echo $ul;
?>
 
 

 
результат
 
    Jessica1989-09-17jessica.jpg
    Alex2019-09-13
    Sandy1975-09-13sandy.jpg
 
 
 
Добавлено:
как улучшить визуализацию?
получить идентификатор и URL-адрес карты?
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 00:02 14-09-2019 | Исправлено: zagorisback, 00:06 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
я же написал все, зачем вы отсебятину городите???
 

Код:
$actors = array();
    while($row = mysql_fetch_assoc($result))
        $actor[] = $row['nome'];
    return $actors;

и
Код:
$ul = "<ul>";
foreach(birthday_today() as $actor)
    $ul .= "<li>Name = ${actor['nome']}, id = ${actor['id']}</li>";
$ul .= "</ul>";

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:06 14-09-2019 | Исправлено: Mavrikii, 00:06 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
$ul = "<ul>";
foreach(birthday_today() as $actor)
    $ul .= "<li>Name = ${actor['nome']}, id = ${actor['id']}</li>";
$ul .= "</ul>";  
 
 

 
с этим я ничего не вижу

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 00:15 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
с этим я ничего не вижу

print_r($actors);
смотрим какие ключи в массиве.
и меняем в
Цитата:
 $ul .= "<li>Name = ${actor['nome']}, id = ${actor['id']}</li>";

на нужные. судя по всему, должно быть

Цитата:
$ul .= "<li>Name = ${actor['nome']}, id = ${actor['actor_id']}</li>";

или, что равнозначно

Цитата:
$ul .= "<li>Name = " . $actor['nome'] . ", id = " . $actor['actor_id'] . "</li>";

это просто примеры для понимания

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:17 14-09-2019 | Исправлено: Mavrikii, 00:18 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Warning: Illegal string offset 'nome' in W:\domains\localhost\cinema\index.php on line 27
 
Warning: Illegal string offset 'id' in W:\domains\localhost\cinema\index.php on line 27
 
line 27
 
 
Код:
$ul .= "<li>Name = ${actor['nome']}, id = ${actor['id']}</li>";  

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 00:30 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
что выдает print_r(birthday_today()); ??

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:32 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
то, что я хотел бы получить, похоже на это
 
[img] [/img]

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 00:35 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
то, что я хотел бы получить, похоже на это

я еще раз повторю - покажите результат выполнения

Цитата:
print_r(birthday_today());

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 00:36 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нажмите на фото и перейдите на вкладку актера
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 00:36 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Добавлено:
Mavrikii
 
решена
проблема:
Как просмотреть данные в горизонтальном порядке?
здесь скриншоты и код
 
 
Resolved
problem:
how to view the data in horizontal order?
here screenshots and code
 
 
 
https://yadi.sk/d/lLPBMjwb0PSUkw
 
спасибо

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 11:17 14-09-2019 | Исправлено: zagorisback, 12:29 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Как просмотреть данные в горизонтальном порядке?

это уже вопрос для другой темы, так как не имеет отношения ни к php, ни к mysql
Вопросы по CSS
 
а делается это несколькими способами для списков - https://jsfiddle.net/so2xbtvu/
либо через flex - https://internetingishard.com/html-and-css/flexbox/

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:55 14-09-2019 | Исправлено: Mavrikii, 19:56 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

хорошо, я вставляю помощь в разделе CSS
для PHP и MySQL
Я ввел этот код, чтобы заказать «день рождения» от самого последнего до последнего, но он не работает
 
ok, I insert the help in the CSS section
for php and mysql
I entered this code to order "birthday" from the most recent to the last, but it doesn't work well
 

Код:
 
ORDER BY birthday asc
 

 
sql full

Код:
 
$query = mysql_query("SELECT * FROM actor WHERE
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 2 WEEK) ORDER BY birthday asc ");
 
 

 
result:порядок отображения
 
1967-09-14
1967-09-15
1968-09-14 -------> неправильно, иди первым
1989-09-17
1995-09-25
1998-09-23 -------> неправильно, иди первым
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 20:28 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
потому что в запросе нет сортировки, а ORDER BY birthday будет неправильным, так как будет учитывать год рождения, а не тот, что сейчас.

Цитата:
ORDER BY  
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END)

проще эту скобку использовать в выборке и далее по ней сортировать.
 

Цитата:
SELECT *,
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END) as newdate FROM actors WHERE newdate
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 2 WEEK) ORDER BY newdate asc

не проверял

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:43 14-09-2019
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
последний код не работает
генерирует ошибку
 

Код:
 
as newdate FROM actors WHERE newdate
 

 
 

Код:
 
ORDER BY newdate asc
 

 

Код:
 
<?php
     
    require_once("connetti.php");
     
// just returns the actor having a birthday
 
    $query = mysql_query("SELECT * FROM actor WHERE
(CASE
  WHEN DATE_FORMAT(birthday, '%m-%d') < DATE_FORMAT(NOW(), '%m-%d')
  THEN CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 YEAR), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
  ELSE CONCAT(DATE_FORMAT(NOW(), '%Y-'), DATE_FORMAT(birthday, '%m-%d'))
END) as newdate FROM actors WHERE newdate
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 2 WEEK) ORDER BY newdate asc ");
    while($row=mysql_fetch_array($query)){
?>
 

 
 

Цитата:
 
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ... on line 21
 

 
line 21

Код:
 
while($row=mysql_fetch_array($query)){
 


Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 23:22 14-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ... on line 21

это всего лишь последствия ошибки в запросе. говорил же, что не проверял.
 
да и вы неправильно его написали, сравнить с моим - у меня совершенно иное написано

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:26 14-09-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru