to mój pierwszy temat na forum tak więc jeśli coś robię źlę to proszę o wyrozumiałość.
Mam problem tego typu: mianowicie tworzę aplikację dla klubu tenisowego. konkretnie pracuję nad rezerwacja kortów online. i tu pojawił się problem którego po 1 nie rozumiem, a po 2-gie pojawił się w miejscu w którym wogóle bym się nie spodziewał. tymbardziej zaskoczył mnie ten błąd że większość funkcjonalności systemuy oparte jest o podobne klasy z podobnymi , jak nie prawie identycznymi operacjami z tym ze operuja na roznych tabelach w bazie. a wiec do rzeczy.
mam taki formularz (jest to niejako takie podsumowanie zebranych informacji tak wiec wiekszosc pul jest hidden i ustalonych):
<form action="ticketsys.php" method="post"> <input type="hidden" name="action" value="9" /> <b>Dostępne korty: </b><br /> <select name="kort"> <?php for($k=1;$k<=4;$k++){ if($kort->checkKort($when, $hour, $k)){ // funkcja sprawdzajaca czy dany kort jest wolny w tym terminie i o tej godzinie } }?> </select><br /> <input type="hidden" name="iduser" value="<?php echo $user->id; ?>" /><br /> //$user-> id: zwraca id rezerwujacego. <br><input type="submit" value="Rezerwuje" /> </form>
formularz ten działa i prawidłowo przekazuję poszczególne dane(sprawdzone) do ticketsys,
oto te przykladowe dane: $when = 2010-1-29, $kort = 1; $hour = 08; userid = 31
tak wyglada fragment odpowiedzialny za ten formularz w ticketsys, :
if($_POST['action'] == 9){ $when = $_POST['when']; $kort = $_POST['kort']; $hour = $_POST['hour']; $on = $_POST['iduser']; $kort = new Kort($db); if($kort->badreservation == 1){//jesli zarezerwowane to zwraca wiadomosc nr 1 $msg = 1; }else{ if($kort->reserve($on, $when, $kort, $hour)){ // funkcja dodajaca termin do bazy $msg = 2; }else{// jesli sie nie dodalo $msg = 3; } } }else{//jesli nie ma wszystkich danych( w sumie niepotrzebne ale niech sobie bedzie) $msg = 4; } }
no i na koniec gwozdz programu i zrodlo bledu:
<?php Class Kort { public $IDuser; public $date; public $hour; public $nrKortu; public $badreservation; public function reserve($IDuser, $date, $nrKortu, $hour){ $sql = "SELECT COUNT(*) FROM reservation WHERE nrKortu ='$nrKortu' and data ='$date' and hour='$hour'"; //sprawdzanie czy taki termin jest juz w bazie $res = $this->dbh->prepare($sql); $res->execute(); $count = $res->fetchColumn(); if($count == 0){ // jesli nie ma to dodajemy try{ $zapyt=$this->dbh->exec("INSERT into reservation (id, userID, nrKortu, data, hour) VALUES ('0', '$IDuser', '$nrKortu', '$date', '$hour')"); if($zapyt>0) { return true; } else{ return false; } } catch(PDOException $e) { $this->kom_bledu = $e->GetMessage(); return false; } } else {//albo ustawiamy badreservation $this->badreservation = 1; } }
no i teraz tresc bledu:
Catchable fatal error: Object of class Kort could not be converted to string in D:\Nowy folder\xampp\htdocs\class\kort.class.php on line 11
linia nr 11 to:
$sql = "SELECT COUNT(*) FROM reservation WHERE nrKortu ='$nrKortu' and data ='$date' and hour='$hour'";
probowalem juz wszystkiego ale wszystko na nic... jak usune to sprawdzanie terminu to pokazuje blad w linii 17.. czyli
$zapyt=$this->dbh->exec("INSERT into reservation (id, userID, nrKortu, data, hour) VALUES ('0', '$IDuser', '$nrKortu', '$date', '$hour')");
pozostałe operacje tej klasy sa w porzadku...Bardzo prosze o wyjasnienie tego bledu w moim przypadku i pomoc.. bo strasznie mnie to wstrzymalo;/
Z góry dziekuje i pozdrawiam.