質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

751閲覧

PHPでの時間取得及び反映について

MYG.com

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/12/24 06:35

PHPでエステサロンの出勤システムを作っています。
以下のコードで、出勤時間順にコンテンツを取得反映するようにしています。

イメージ説明

しかし30分と入力すると順番が反対になってしまいます。

どのように書き換えれば、順番を正しく取得できるでしょうか?

<h2 class="schedule_page_h2"> <?php echo $str2; ?>の出勤情報</h2> <span class="bottime head" style="display:none;"><?php var_dump($h2dateTime); ?></span> <div class="schedule_image_box_sec"> <div class="custom_row sort_js_wrap"> <?php $total_count = 0; $posts_per_page = 20; $pageno = 1; if(isset($_GET['pageno'])) $pageno = $_GET['pageno']; $search_key = array( 'post_type' => 'therapist', 'posts_per_page' => $posts_per_page, 'paged' => $pageno, ); $item_query = new WP_Query($search_key); $total_count = $item_query->found_posts; if($item_query->have_posts()) : while ($item_query->have_posts()) : $item_query->the_post(); $loop_id = get_the_ID(); $loop_tname = get_post_field( 'name', $loop_id ); $loop_age = get_post_field( 'age', $loop_id ); $loop_url = get_the_permalink(); $loop_photo = get_post_field('therapist_img1', $loop_id); if(empty($loop_photo)) $loop_photo = get_stylesheet_directory_uri().'/images/noimage.jpg'; $loop_twitter = get_post_field('twitter', $loop_id); $loop_twitter = str_replace('@', '', $loop_twitter); if(!empty($loop_twitter)) $loop_twitter = 'https://twitter.com/'.$loop_twitter; $dateTime = new DateTime(); $settime = '+'.$day_get.' day -3 hour'; $dateTime->modify($settime); $schedule_list = []; $baseDateTime = $dateTime->format('Y-m-d H:i:s'); $workDate = get_date_from_gmt($baseDateTime, 'Ymd'); $open_hh = get_post_meta($loop_id, $workDate.'open_hh', true); $open_mi = get_post_meta($loop_id, $workDate.'open_mi', true); $close_hh = get_post_meta($loop_id, $workDate.'close_hh', true); $close_mi = get_post_meta($loop_id, $workDate.'close_mi', true); $month = get_date_from_gmt($baseDateTime, 'm'); $day = get_date_from_gmt($baseDateTime, 'd'); if(!empty($open_hh) && !empty($open_mi) && !empty($close_hh) && !empty($close_mi)): $worktime = '<span class="sort_js">'.$open_hh.'</span>:'.$open_mi.'~'.$close_hh.':'.$close_mi; ?> <div class="custom_col_3 js_button" data-href="<?php echo $loop_url;?>"> <div class="schedule_image_box"> <div class="schedule_image_box_image"> <img src="<?php echo $loop_photo; ?>"> </div> <?php if(!empty($loop_twitter)): ?> <a href="<?php echo $loop_twitter; ?>" class="twitter_btn"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/twitter.png"></a> <?php endif; ?> <a href="<?php echo $loop_url;?>" class="schedule_btn light_purple"><?php echo $loop_tname; ?>(<?php echo $loop_age; ?>)</a> <a href="<?php echo $loop_url;?>" class="schedule_btn dark_purple"><?php echo $worktime; ?></a> </div><!-- schedule_image_box --> </div><!-- custom_col_3 --> <?php endif; endwhile; endif; ?> <script> $(function(){ $('.sort_js_wrap').each(function(){ $(this).html( $(this).find('.custom_col_3').sort(function(a,b){ return $(a).find('.sort_js').text() - $(b).find('.sort_js').text(); }) );//html });//each }); </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2021/12/24 07:59

本当に出勤時間の昇順で並んでいるのでしょうか? 退勤時間の降順で並んでいる可能性も考えられないでしょうか? 数値を変更して検証してみてください。
guest

回答1

0

文字列でのソートになっているようです。日付に対応したソートに変える必要があります。

PHP

1$(function(){ 2 $('.sort_js_wrap').each(function(){ 3 $(this).html( 4 $(this).find('.custom_col_3').sort(function(a,b){ 5 //return $(a).find('.sort_js').text() - $(b).find('.sort_js').text(); こっちだと文字列基準になっている 6 return new Date($(a).find('.sort_js').text()) - new Date($(b).find('.sort_js').text()); //未検証ですが、こんな感じになると思う 7 }) 8 );//html 9 });//each 10}); 11

このページを参考にして調整してみてください。
JavaScript:sort()を用いた並び替え方法のサンプル

投稿2021/12/24 08:12

編集2021/12/24 08:13
FKM

総合スコア3624

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問