Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zapis wyniku zapytania do tablicy do pozniejszego wykorzystania
Forum PHP.pl > Forum > Przedszkole
MrLoverLover
Cześć,
mam jeszcze jedno pytanie od razu wrzucę kod i opiszę problem:
  1. <?php
  2. $query = mysql_query("select * from reservations order by id ");
  3. while($r = mysql_fetch_array($query))
  4. {
  5. $data_poczatkowa = $r['dataod'];
  6. $data_koncowa = $r['datado'];
  7. $t_wskaznik = strtotime($data_poczatkowa);
  8. $t_data_koncowa = strtotime($data_koncowa);
  9. while($t_wskaznik <= $t_data_koncowa)
  10. {
  11. $t_wskaznik = strtotime('+1 day', $t_wskaznik);
  12.  
  13. }
  14. $formatted_date = strtotime($t_wskaznik);
  15. $data = date( 'Y, n, d', $formatted_date );
  16. $naz .= "{'Date': new Date('".$data."'), 'Title': '".$r['reservation']."'},";
  17. }
  18. ?>
  19. </div>
  20. <script type="text/javascript" src="js/caleandar.js"></script>
  21. <script>
  22.  
  23. var events = [
  24. <? echo $naz?>
  25. ];
  26. var settings = {};
  27. var element = document.getElementById('caleandar');
  28. caleandar(element, events, settings);
  29.  
  30. </script>


Sprawa tyczy się małego skryptu do rezerwacji sprzętu, wszystko działa dopóki użytkownik rezerwowałbym coś na jeden dzień czyli np na 15.04.2017 natomiast gdy zarezerwuje coś na np 3 dni to jest problem w bazie wygląda to tak: id, dataod,datado,reservation,idusera.

i w zwiazku z tym ze mam informacje od do czasu rezerwacji to mogę bez problemu wypisać wszystkie daty po kolei, ale jak zrobić aby dopasować to aby każdą date traktował osobno i mógł tak jak w przypadku pojedynczych rezerwacji wpisać się w "szablon" zmiennej $naz



nospor
No i jaki masz teraz problem z kodem co tu pokazales? Procz rzecz jasna zbednego przecinka przy ostatnim elemencie.
MrLoverLover
w bazie mam 3 elementy
1. dataod - 15.04.2017, datado - 15.04.2017, reservation - laptop, idusera - 1
2. dataod - 17.04.2017, datado - 17.04.2017, reservation - myszka, idusera - 1
3. dataod - 18.04.2017, datado - 20.04.2017, reservation - test, idusera - 1

i problem polega na tym, że z bazy owszem pobieram 5 rekordow i owszem zgadza sie wszystko oprocz dat pobiera 5 rekordow z datą 1970, 1, 1 i nie wiem jak te daty ogarnac
nospor
Bo data ma byc w formacie DATE 2017-04-05 a nie 05.04.2017.... Co to za pomysl by daty trzymac w bazie jako tekst??
MrLoverLover
Nie, nie, w bazie jest w typie date nie trzymam jako text, chodzi mi tylko o to jak powielić z rozna datą
skoro rezerwuje laptopa od 15 do 17 kwietnia znaczy to, ze musze dodac 3 razy ten kod z rozna data i tą samą zawartością
  1. $naz .= "{'Date': new Date('".$data."'), 'Title': '".$r['reservation']."'},";

i ostatecznie udaje mi sie pobrac 3 razy ale data jest wtedy 1970,1, 1 zamiast mojej która w przypadku jednodniowych rezerwacji pobierana jest normalnie.
nospor
skoro piszesz, ze w wyniku dostajesz 1970 znaczy ze na jakims etapie data jest zrabana. Wyswietl sobie wszystkie daty na kazdy z etapow a bedziesz wiedzial gdzie masz blad. No po poprzednim temacie, sadzilem ze dotarlo do ciebie by sprawdzac dane wszedzie
MrLoverLover
Tak zrobilem i w momencie gdy zrobię:
  1. while($t_wskaznik <= $t_data_koncowa)
  2. {
  3. echo date('Y, n, d', $t_wskaznik).'<br />';
  4. $t_wskaznik = strtotime('+1 day', $t_wskaznik);
  5. $formatted_date = strtotime($t_wskaznik);
  6. $data = date( 'Y, n, d', $formatted_date );
  7. $naz .= "{'Date': new Date('".$data."'), 'Title': '".$r['reservation']."'},";
  8. }


to pięknie pokaże mi wszystkie 5 dat natomiast gdy wyswietlam zmienną $naz to widze 5 razy 1970 ale z wlasciwymi rezerwacjami tylko daty się nie zgadzają
nospor
Powiedzialem na kazdym etapie.
I jak juz sprawdzisz na kazdym, to polecam zajrzec do manuala js odnosnie new Date
MrLoverLover
Okej poradziłem sobie dodatkową pętlą for dzieki za pomoc:

  1. $test=0;
  2. $query = mysql_query("select * from reservations order by id ");
  3. while($r = mysql_fetch_array($query))
  4. {
  5. $data_poczatkowa = $r['dataod'];
  6. $data_koncowa = $r['datado'];
  7. $t_wskaznik = strtotime($data_poczatkowa);
  8. $t_data_koncowa = strtotime($data_koncowa);
  9. $hmdays=round((strtotime($data_koncowa) - strtotime($data_poczatkowa)) / 86400);
  10. if ( $r['dataod'] != $r['datado']) {
  11. while($t_wskaznik <= $t_data_koncowa -1)
  12. {
  13. $t_wskaznik = strtotime('+1 day', $t_wskaznik);
  14. $tab[$test] = date('Y, n, d', $t_wskaznik) ;
  15. $tab2[$test] = $r['reservation'];
  16. $test++;
  17. for ($i=0; $i<=$hmdays; $i++){
  18. $naz .= "{'Date': new Date('".$tab[$i]."'), 'Title': '".$tab2[$i]."'},";
  19. }
  20. }
  21.  
  22. $formatted_date = strtotime( $r['dataod'] );
  23. $day = date( 'Y, n, d', $formatted_date );
  24. $naz .= "{'Date': new Date('".$day."'), 'Title': '".$r['reservation']."'},";
  25. }else {
  26. $formatted_date = strtotime( $r['dataod'] );
  27. $day = date( 'Y, n, d', $formatted_date );
  28. $naz .= "{'Date': new Date('".$day."'), 'Title': '".$r['reservation']."'},";
  29. }
  30. }
  31. ?>
  32. </div>
  33. <script type="text/javascript" src="js/caleandar.js"></script>
  34. <script>
  35.  
  36. var events = [
  37. <? echo $naz?>
  38. ];
  39. var settings = {};
  40. var element = document.getElementById('caleandar');
  41. caleandar(element, events, settings);
  42.  
  43. </script>
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.