Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Terminarz - kalendarz z godzinami[MySQL][PHP], Fatal error: Uncaught Error: Call to a member function query() on null
brychu
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 10.04.2015

Ostrzeżenie: (0%)
-----


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. : )
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$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
Go to the top of the page
+Quote Post
brychu
post
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 10.04.2015

Ostrzeżenie: (0%)
-----


Dziękuje.
Działa. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
vezas
post
Post #4





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 30.12.2020

Ostrzeżenie: (0%)
-----


Hej (IMG:style_emoticons/default/wink.gif) mógłbyś dać zrzut ekranu bazy danych? Tworzę podobny system i wzoruje się na Twoim.
Go to the top of the page
+Quote Post
dublinka
post
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Masz duzo przykladow w necie opartych o bazy danych.
Zreszta widzisz jakie pola pobiera autor.

Dzien
Godzina

I pewnie ma jeszcze id

Ten post edytował dublinka 30.12.2020, 15:14:10
Go to the top of the page
+Quote Post
brychu
post
Post #6





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 10.04.2015

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
dublinka
post
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Mam taki kalendarz. Kiedys mi byl potrzebny do zrobienia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 19:26