Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie wyników pod odpowiednimi datami od do
Forum PHP.pl > Forum > Przedszkole
pawel06281990
Witam próbuje zrobić, aby wpisy z bazy wyświetlały się tak ze mamy date np 10-06-2024 do 16-06-2024 i chce, żeby wpisy były wyświetlane w tym przedziale w bazie tak samo mam wpisy poniedziałek i data wtorek i data itp osiągnąłem że daty się wyświetlają, ale wszystkie wpisy wyświetlają się pod dwoma datami


To mój skrypt
  1. // Ustawienia paginacji
  2. $items_per_page = 10; // Liczba intencji na stronę
  3. $current_page = ( get_query_var('paged') ) ? get_query_var('paged') : 1; // Bieżąca strona
  4. $offset = ($current_page - 1) * $items_per_page;
  5.  
  6. // Pobierz unikalne tygodnie
  7. $unique_weeks = $this->wpdb->get_results("SELECT DISTINCT YEAR(data) as year, MONTH(data) as month FROM $this->intencja ORDER BY data ASC");
  8. $selected_month = isset($_GET['m']) ? $_GET['m'] : '';
  9. // Formularz wyboru tygodnia
  10. echo '<form method="GET" action="">';
  11. echo '<select name="m">';
  12. echo'<option value="">' . __('Wszystkie daty ', 'intencje') . '</option>';
  13. foreach ($unique_weeks as $week) {
  14. $week_value = $week->year . '-'. $week->month;
  15. $selected = ($selected_month == $week_value) ? ' selected="selected"' : '';
  16. echo '<option value="' . esc_attr($week_value) . '"' . $selected . '>' . esc_html($week->year . ' ' .fullnamemonth($week->month)) . '</option>';
  17. }
  18. echo '</select>';
  19. echo '<input type="submit" value="Wybierz tydzień">';
  20. echo '</form>';
  21.  
  22. // Pobierz wybrany tydzień
  23.  
  24. if ($selected_month) {
  25. list($selected_year, $selected_month) = explode('-', $selected_month);
  26.  
  27. // Pobierz intencje dla wybranego tygodnia
  28. $data_intencji = $this->wpdb->get_results(
  29. $this->wpdb->prepare(
  30. "SELECT * FROM $this->intencja WHERE status='1' AND YEAR(data) = %d AND MONTH(data) = %d ORDER BY data ASC LIMIT %d OFFSET %d",
  31. $selected_year, $selected_month, $items_per_page, $offset
  32. )
  33. );
  34.  
  35. $total_intencji = $this->wpdb->get_var(
  36. $this->wpdb->prepare(
  37. "SELECT COUNT(*) FROM $this->intencja WHERE YEAR(data) = %d AND MONTH(data) = %d",
  38. $selected_year, $selected_month
  39. )
  40. );
  41.  
  42. }else{
  43. // Pobierz intencje dla wybranego tygodnia
  44. $data_intencji = $this->wpdb->get_results(
  45. $this->wpdb->prepare(
  46. "SELECT * FROM $this->intencja WHERE status='1' ORDER BY data ASC LIMIT %d OFFSET %d",
  47. $items_per_page, $offset
  48. )
  49. );
  50.  
  51. $total_intencji = $this->wpdb->get_var(
  52. $this->wpdb->prepare(
  53. "SELECT COUNT(*) FROM $this->intencja WHERE status='1'"
  54. )
  55. );
  56. }
  57.  
  58.  
  59. $data_intencji1 = $this->wpdb->get_results("SELECT data_poczetek, data_zakonczenie FROM ".$this->intencja." WHERE dni_tygodnia='1'");
  60. foreach ($data_intencji1 as $data1) {
  61. $date_start = strtotime($data1->data_poczetek);
  62. $date_end = strtotime($data1->data_zakonczenie);
  63. echo'<h4 style="text-align: center;"><span style="color: #000000;"><strong>Intencje Mszy Świętej<br>
  64. </strong></span></h4>';
  65. echo '<h4 style="text-align: center; margin-bottom: 45px;">
  66. <strong><span style="text-decoration: underline; color: #000000;">' . date('d-m-Y', $date_start) . 'r - ' . date('d-m-Y', $date_end) . 'r </span></strong></h4>';
  67.  
  68.  
  69.  
  70. // Wyświetl intencje
  71. foreach ($data_intencji as $data) {
  72.  
  73. if($data->oznaczenia == 1){
  74. $colory_oznaczen = "color:".intencje_options('kolor_swieta').";";
  75. }elseif($data->oznaczenia == 2){
  76. $colory_oznaczen = "color:".intencje_options('kolor_uroczytosc').";";
  77. }elseif($data->oznaczenia == 3){
  78. $colory_oznaczen = "color:".intencje_options('kolor_dni_powszednie').";";
  79. }else{
  80. $colory_oznaczen ="";
  81. }
  82. if($data->dni_tygodnia == 1){
  83. $dni_tygodnia="Poniedziałek";
  84. }
  85. if($data->dni_tygodnia == 2){
  86. $dni_tygodnia="Wtorek";
  87. }
  88. if($data->dni_tygodnia == 3){
  89. $dni_tygodnia="Środa";
  90. }
  91. if($data->dni_tygodnia == 4){
  92. $dni_tygodnia="Czwartek";
  93. }
  94. if($data->dni_tygodnia == 5){
  95. $dni_tygodnia="Piątek";
  96. }
  97. if($data->dni_tygodnia == 6){
  98. $dni_tygodnia="Sobota";
  99. }
  100. if($data->dni_tygodnia == 7){
  101. $dni_tygodnia="Niedziela";
  102. }
  103.  
  104. $date = explode("-", $data->intencja_data);
  105. echo'<span style="text-decoration: underline; '.$colory_oznaczen.'"><strong>'.$dni_tygodnia.' - '.esc_html($date[2]).'-'.esc_html($date[1]).'-'.esc_html($date[0]).'r '.esc_html($data->intencja_name).'</strong></span>';
  106. echo'<p>'.__($data->intencji).'</p>';
  107. }
  108.  
  109. }
  110. // Paginacja
  111.  
  112.  
  113. $total_pages = ceil($total_intencji / $items_per_page);
  114.  
  115. // Utwórz linki do paginacji
  116. $page_links = paginate_links( array(
  117. 'base' => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
  118. 'format' => '/page/%#%',
  119. 'current' => max( 1, $current_page ),
  120. 'total' => $total_pages,
  121. 'prev_text' => __('&laquo; Previous'),
  122. 'next_text' => __('Next &raquo;'),
  123. ));
  124.  
  125. // Wyświetl linki do paginacji
  126. if ( $page_links ) {
  127. echo '<div class="pagination">' . $page_links . '</div>';
  128. }


Jak go mogę dostosować żeby się wysiedlało tak jak chce.
nospor
pokaz na jakims przykladzie jak chcesz by sie wyswietlalo ostatecznie bo nic nie kumam
pawel06281990
Chodzi mi o taki wzór

03-06-2024 - 09-06-2024

Poniedziałek 03-06-2024
Wtorek 04-06-2024
Środa 05-06-2024
czwartek 06-06-2024
piątek 07-06-2024
sobota 08-06-2024
Niedziela 09-06-2024

Kolejne od 10-06-2024 - 16-06-2024

Poniedziałek 10-06-2024
Wtorek 11-06-2024
Środa 12-06-2024
czwartek 13-06-2024
piątek 14-06-2024
sobota 15-06-2024
Niedziela 16-06-2024

Chce w ten sposób wyświetlić dane z bazy w bazie mam takie kolumny
  1. `intencja_id` mediumint(9) NOT NULL,
  2. `dni_tygodnia` int(11) NOT NULL DEFAULT 1, // dni tygodnia
  3. `data_poczetek` date NOT NULL DEFAULT '0000-00-00', //DATA od
  4. `data_zakonczenie` date NOT NULL DEFAULT '0000-00-00', //DATA do
  5. `intencja_name` varchar(255) NOT NULL, //nazwa
  6. `intencji` longtext NOT NULL, //pełny tekst
  7. `intencja_data` date NOT NULL DEFAULT '0000-00-00',//jaki dzień
  8. `oznaczenia` tinyint(4) NOT NULL DEFAULT 3, //oznaczenie jaki TO dzień
  9. `status` tinyint(4) NOT NULL DEFAULT 0, // STATUS archiwum
  10. `data` date NOT NULL //sortowanie po archiwum



Tak to wygląda
nospor
no dobrze, ale gdzie dane? Czy to ma sie wyswietlac tylko bez danych? tylko daty tygodnia i tydzien?
pawel06281990
Dane mam wyświetlane po tabeli dni_tygodnia zrobiłem je tak

  1. if($data->dni_tygodnia == 1){
  2. $dni_tygodnia="Poniedziałek";
  3. }
  4. if($data->dni_tygodnia == 2){
  5. $dni_tygodnia="Wtorek";
  6. }
  7. if($data->dni_tygodnia == 3){
  8. $dni_tygodnia="Środa";
  9. }
  10. if($data->dni_tygodnia == 4){
  11. $dni_tygodnia="Czwartek";
  12. }
  13. if($data->dni_tygodnia == 5){
  14. $dni_tygodnia="Piątek";
  15. }
  16. if($data->dni_tygodnia == 6){
  17. $dni_tygodnia="Sobota";
  18. }
  19. if($data->dni_tygodnia == 7){
  20. $dni_tygodnia="Niedziela";
  21. }


a tak wygląda wyświetlanie danych daty od do

  1. $data_intencji1 = $this->wpdb->get_results("SELECT data_poczetek, data_zakonczenie FROM ".$this->intencja." WHERE dni_tygodnia='1'");
  2. foreach ($data_intencji1 as $data1) {
  3. $date_start = strtotime($data1->data_poczetek);
  4. $date_end = strtotime($data1->data_zakonczenie);
  5. echo'<h4 style="text-align: center;"><span style="color: #000000;"><strong>Intencje Mszy Świętej<br>
  6. </strong></span></h4>';
  7. echo '<h4 style="text-align: center; margin-bottom: 45px;">
  8. <strong><span style="text-decoration: underline; color: #000000;">' . date('d-m-Y', $date_start) . 'r - ' . date('d-m-Y', $date_end) . 'r </span></strong></h4>';
  9. foreach ($data_intencji as $data) {
  10. //Tu wyśwetla mi pełne dane z tabeli jak
  11.  
  12. dni tygodnia ś tu osadzone
  13. data tygodnia
  14. tytuł
  15. i pełne informacje intencji
  16.  
  17. }
  18.  
  19. }


i chodzi mi o to, żeby wyświetlało cały tydzień osobno po teraz mam ze wyświetla mi to tak

03-06-2024 - 09-06-2024

Poniedziałek 03-06-2024
Wtorek 04-06-2024
Środa 05-06-2024
czwartek 06-06-2024
piątek 07-06-2024
sobota 08-06-2024
Niedziela 09-06-2024
Poniedziałek 10-06-2024
Wtorek 11-06-2024
Środa 12-06-2024
czwartek 13-06-2024
piątek 14-06-2024
sobota 15-06-2024
Niedziela 16-06-2024

Kolejne od 10-06-2024 - 16-06-2024

Poniedziałek 03-06-2024
Wtorek 04-06-2024
Środa 05-06-2024
czwartek 06-06-2024
piątek 07-06-2024
sobota 08-06-2024
Niedziela 09-06-2024
Poniedziałek 10-06-2024
Wtorek 11-06-2024
Środa 12-06-2024
czwartek 13-06-2024
piątek 14-06-2024
sobota 15-06-2024
Niedziela 16-06-2024
nospor
Skoro najpierw masz petle, ktora wyswietla
03-06-2024 - 09-06-2024

a dopiero potem petle ktora wyswietla reszte to nei rozumiem czemu sie dziwisz ze masz jak masz

Wyswietlanie
03-06-2024 - 09-06-2024

ma byc w petli ktora wyswietla dane.
Gdy twoje dane beda mialy poniedzialek, to najpierw wyswietl
03-06-2024 - 09-06-2024

i juz. zrobione
pawel06281990
A może pokazać na przykładzie questionmark.gif
nospor
No ale co na przykladzie? Jak masz poniedzialek to masz wyswietlic daty tygodnia

if($data->dni_tygodnia == 1){
$dni_tygodnia="Poniedziałek";
echo 'TU wyswietl swoje 03-06-2024 - 09-06-2024 rzecz jasna wyliczone na podstawie daty poniedzialkowej';
}
pawel06281990
Dziękuje za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.