Witam serdecznie,
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>Data rezerwacji:</b><br />
<?php echo $when;?><br />
<input type="hidden" name="when" value="
<?php echo $when;?>" />
<b>Godzina rezerwacji:</b> <br />
<?php echo $hour.':00';?> <input type="hidden" name="hour" value="
<?php echo $hour;?>" /><br />
<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
echo '<option value='.$k.'>Kort '.$k.'</option>'; }
}?>
</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){
if(!empty($_POST['when']) && !empty($_POST['hour']) && !empty($_POST['kort'])) { $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;
header('location: reserve.php?date='.$when.'&msg='.$msg.''); }else{
if($kort->reserve($on, $when, $kort, $hour)){ // funkcja dodajaca termin do bazy
$msg = 2;
header('location: reserve.php?date='.$when.'&msg='.$msg.''); }else{// jesli sie nie dodalo
$msg = 3;
header('location: reserve.php?date='.$when.'&msg='.$msg.''); }
}
}else{//jesli nie ma wszystkich danych( w sumie niepotrzebne ale niech sobie bedzie)
$msg = 4;
header('location: reserve.php?date='.$when.'&msg='.$msg.''); }
}
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.
Ten post edytował neonowy 30.11.2010, 22:43:28