Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Terminarz - kalendarz z godzinami[MySQL][PHP]
Forum PHP.pl > Forum > Przedszkole
brychu
Witam.
Dla tych co mnie nie znają - jestem skamieliną programowania i bazuje na starym PHP a dodatkowe "i" w MySql (czyt. mysqli) przysparza mi dodatkowych kłopotów.
Chcę stworzyć prosty terminarz - kalendarz, w którym są godziny.

Stworzyłem sobie kodzik wypisujący godziny od 12 do 21. Sprawdza w bazie czy rekord istnieje i w przypadku, gdy jest, koloruje go na czerwono i nie jest podlinkowany. Proste.
http://taniepranie.zgora.pl/test.php
Kod
<?php
// połączenie z bazą danych w osobnym pliku
require_once "connectbase.php";
$iddnia = 6;

for( $x = 12; $x <= 21; $x++ )
{


$result = $mysqli->query("SELECT dzien, godzina FROM terminarz WHERE dzien = '$iddnia' AND godzina = '$x'");
   $row_cnt = $result->num_rows;
         if ($row_cnt > 0)
         {
             echo '<font color="red">'.$x.'</font><br>';
         }
         else
         {
             echo '<b><a href="terminarz3.php?dzien='.$iddnia.'&godzina='.$x.'">'.$x.'</a></b><br>';
         }
    $result->close();
}

?>


Mamy też kalendarz (ja go nie pisałem, tylko dodaje swój mały kod).
http://taniepranie.zgora.pl/terminarztest.php
Kod
<?PHP

function printCalendar()
{
  $year = date("Y");
  $monthNum = date("n");
  $daysofmonth = date("t");
  $dayofweek = date("w");
  $dayofmonth = date("j");
  $firstdayofmonth = date("w", mktime(0,0,0,$monthNum, 1, $year));

  if($dayofweek == 0) $dayofweek = 7;
  if($firstdayofmonth == 0) $firstdayofmonth = 7;

  switch($monthNum){
    case 1 : $monthName = "Styczeń";break;
    case 2 : $monthName = "Luty";break;
    case 3 : $monthName = "Marzec";break;
    case 4 : $monthName = "Kwiecień";break;
    case 5 : $monthName = "Maj";break;
    case 6 : $monthName = "Czerwiec";break;
    case 7 : $monthName = "Lipiec";break;
    case 8 : $monthName = "Sierpień";break;
    case 9 : $monthName = "Wrzesień";break;
    case 10 : $monthName = "Październik";break;
    case 11 : $monthName = "Listopad";break;
    case 12 : $monthName = "Grudzień";break;
  }

  echo("<TABLE border = 1><TR>");
  echo("<TD bgcolor=\"yellow\" align=\"center\" colspan=\"7\">");
  echo($monthName." ".$year);
  echo("</TD></TR><TR>");
  ?>
  <TR>
  <TD align="center" bgcolor="pink">Pn</TD>
  <TD align="center" bgcolor="pink">Wt</TD>
  <TD align="center" bgcolor="pink">Sr</TD>
  <TD align="center" bgcolor="pink">Cz</TD>
  <TD align="center" bgcolor="pink">Pi</TD>
  <TD align="center" bgcolor="pink">So</TD>
  <TD align="center" bgcolor="pink">Nd</TD>
  </TR>
  <?
  $j = $daysofmonth + $firstdayofmonth - 1;

  for($i = 0; $i < $j; $i++){
    if($i < $firstdayofmonth - 1){
      echo("<TD bgcolor=\"white\"></TD>");
      continue;
    }
    if(($i % 7) == 0){
      echo("</TR><TR>");
    }
    if(($i - $firstdayofmonth + 2) == $dayofmonth){
      $color = "yellow";
    }
    else{
      $color = "green";
    }
    echo("<TD bgcolor=\"$color\" align=\"center\">");
    echo($i - $firstdayofmonth + 2);
    echo("</TD>");
  }
  echo("</TR></TABLE>");
}
printCalendar();
?>


W chwili, gdy wypisuje tylko godziny, bez sprawdzania rekordu, wszystko gra. Gorzej, gdy daje zapytanie do bazy. Wyświetla wtedy błąd. Dlaczego? Jak to poprawić?
http://taniepranie.zgora.pl/terminarz2.php
Kod
<?PHP
require_once "connectbase.php";

function printCalendar()
{
  $year = date("Y");
  $monthNum = date("n");
  $daysofmonth = date("t");
  $dayofweek = date("w");
  $dayofmonth = date("j");
  $firstdayofmonth = date("w", mktime(0,0,0,$monthNum, 1, $year));

  if($dayofweek == 0) $dayofweek = 7;
  if($firstdayofmonth == 0) $firstdayofmonth = 7;

  switch($monthNum){
    case 1 : $monthName = "Styczeń";break;
    case 2 : $monthName = "Luty";break;
    case 3 : $monthName = "Marzec";break;
    case 4 : $monthName = "Kwiecień";break;
    case 5 : $monthName = "Maj";break;
    case 6 : $monthName = "Czerwiec";break;
    case 7 : $monthName = "Lipiec";break;
    case 8 : $monthName = "Sierpień";break;
    case 9 : $monthName = "Wrzesień";break;
    case 10 : $monthName = "Październik";break;
    case 11 : $monthName = "Listopad";break;
    case 12 : $monthName = "Grudzień";break;
  }

  echo("<TABLE border = 1><TR>");
  echo("<TD bgcolor=\"yellow\" align=\"center\" colspan=\"7\">");
  echo($monthName." ".$year);
  echo("</TD></TR><TR>");
  ?>
  <TR>
  <TD align="center" bgcolor="pink">Pn</TD>
  <TD align="center" bgcolor="pink">Wt</TD>
  <TD align="center" bgcolor="pink">Sr</TD>
  <TD align="center" bgcolor="pink">Cz</TD>
  <TD align="center" bgcolor="pink">Pi</TD>
  <TD align="center" bgcolor="pink">So</TD>
  <TD align="center" bgcolor="pink">Nd</TD>
  </TR>
  <?
  $j = $daysofmonth + $firstdayofmonth - 1;

  for($i = 0; $i < $j; $i++){
    if($i < $firstdayofmonth - 1){
      echo("<TD bgcolor=\"white\"></TD>");
      continue;
    }
    if(($i % 7) == 0){
      echo("</TR><TR>");
    }
    if(($i - $firstdayofmonth + 2) == $dayofmonth){
      $color = "yellow";
    }
    else{
      $color = "green";
    }
    echo("<TD bgcolor=\"$color\" align=\"center\">");
    echo($i - $firstdayofmonth + 2).'<hr>';
    //ify

$iddnia = $i - $firstdayofmonth + 2;

for( $x = 12; $x <= 21; $x++ )
{


$result = $mysqli->query("SELECT dzien, godzina FROM terminarz WHERE dzien = '$iddnia' AND godzina = '$x'");
   $row_cnt = $result->num_rows;
         if ($row_cnt > 0)
         {
             echo '<font color="red">'.$x.'</font><br>';
         }
         else
         {
             echo '<b><a href="terminarz3.php?dzien='.$iddnia.'&godzina='.$x.'">'.$x.'</a></b><br>';
         }
    $result->close();
}

    
    //koniec ify
    echo("</TD>");
  }
  echo("</TR></TABLE>");
}
printCalendar();
?>



HELP, HELP. : )
nospor
$mysqli->query("SELECT dzien, godzina FROM terminarz WHERE dzien = '$iddnia' AND godzina = '$x'");
Czego nie rozumiesz w komunikacie, ze odpalasz QUERY na NULL? Oznacza to, ze $mysqli zmienna nie istnieje. No i trudno sie dziwic, bo odpalasz to w funkcji a nigdzie jej nie zadeklarowales.

Polecam manual -> zasieg zmiennych oraz manual -> funkcje -> parametry

ps: polecam rowniez wlaczyc wyswietlanie wszystkich bledow to bys mial pare dodatkowych ktore moze by ci pomogly zrozumiec blad samemu
brychu
Dziękuje.
Działa. smile.gif
vezas
Hej wink.gif mógłbyś dać zrzut ekranu bazy danych? Tworzę podobny system i wzoruje się na Twoim.
dublinka
Masz duzo przykladow w necie opartych o bazy danych.
Zreszta widzisz jakie pola pobiera autor.

Dzien
Godzina

I pewnie ma jeszcze id
brychu
Cytat(dublinka @ 30.12.2020, 14:56:51 ) *
Masz duzo przykladow w necie opartych o bazy danych.
Zreszta widzisz jakie pola pobiera autor.

Dzien
Godzina

I pewnie ma jeszcze id


Oj, nie bądź taka; ]


Cytat(vezas @ 30.12.2020, 13:19:02 ) *
Hej wink.gif mógłbyś dać zrzut ekranu bazy danych? Tworzę podobny system i wzoruje się na Twoim.

Ja mam bardzo wiele zapisane w strukturze bazy, bo u mnie klient klika dany dzień i godzinę a następnie uzupełnia dane personalne i wybiera zakres usługi a na sam koniec, w potwierdzeniu, "system" wylicza klientowi cenę oraz przybliżony czas i mi usuwana godzinę rezerwacji + godzinę wstecz i tyle godzin ile będzie trwała usługa z terminarza.
Jak chcesz to mogę Ci wyspisać co mam w bazie, ale nie wiem czy akurat to Ci się przyda.

imie
nazwisko
miasto
ulica
nrdomu
telefon
miesiac
dzien
godzina
wiadomosc
pojazd (zakres usług do wykonania przy wyborze pojazdu)
mebel (zakres usług do wykonania przy wyborze mebla)
dywan (ilość,długość, szerokość itp a w efekcie pole)
cena
czas
faktura (tak, nie)
ozonowanie (tak, nie)
pracownik (czy zlecenie jest przypisane do pracownika czy do mnie osobiście)

Sam terminarz opiera się tylko na id, miesiąc, dzień, godzina. Jak będziesz chciał to mogę Ci podrzucić kod, tylko miej na uwadze, że ja jestem skamieliną programowania, niewiele potrafię a wiele rozwiązań stosuje przestarzałych a niektórych nawet do końca nie rozumiem sam ; p

Efekt moich wypocin masz tutaj: taniepranie.zgora.pl/terminarz.php
dublinka
Mam taki kalendarz. Kiedys mi byl potrzebny do zrobienia.
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.