Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]INSERT INTO w OOP
Forum PHP.pl > Forum > Przedszkole
kudo
Witam,

chciałem przepisać swój kod do rezerwacji pokoju hotelowego na OOP, jednak pojawił się problem z INSERT INTO. Działał on w takiej postaci w kodzie strukturalnym, a teraz wywala standardowy błąd że mysql_num_rows oczekuje 1 parametru. Bardzo proszę o pomoc.

Plik główny
  1. <?php
  2. require_once 'rezerwacja.php';
  3. $id_pokoje=$_POST['id_pokoje'];
  4. $imie=$_POST['imie'];
  5. $nazwisko=$_POST['nazwisko'];
  6. $pobyt_od=$_POST['pobyt_od'];
  7. $pobyt_do=$_POST['pobyt_do'];
  8. $telefon=$_POST['telefon'];
  9. $pokoj=$_POST['id_pokoje'];
  10.  
  11. $db = new Rezerwacja('localhost', 'root', '', 'hotel');
  12. $db->query ("SELECT * from rezerwacja WHERE odkiedy<='$pobyt_od'
  13. and dokiedy >='$pobyt_od' AND idpokoju='$pokoj' UNION ALL (SELECT * from rezerwacja WHERE odkiedy between
  14. '$pobyt_od' and '$pobyt_do' AND idpokoju='$pokoj')
  15. UNION ALL (SELECT * from rezerwacja WHERE dokiedy between
  16. '$pobyt_od' and '$pobyt_do' AND idpokoju='$pokoj')");
  17.  
  18. if ($db->numRows()==0){
  19. $db->id();
  20. $db->query ("INSERT INTO `gosc` (goscid, imie, nazwisko, telefon) VALUES ('$tmp[max]','$imie','$nazwisko','$telefon')");
  21. }
  22. else {
  23. echo '<center><h2>Niestety pokój jest zarezerwowany</center></h2>';
  24. echo 'Pokój zostanie opuszczony: ';
  25. foreach ($db->rows() as $rezerwacje){
  26. echo $rezerwacje['dokiedy']. '<br />Wybierz inną datę lub pokój ';
  27.  
  28. }
  29.  
  30. }
  31.  
  32.  
  33.  
  34. ?>


Plik z metodami

  1. <?php
  2. class Rezerwacja {
  3.  
  4. protected $_polaczenie, $_result, $_numRows;
  5.  
  6. public function __construct($host, $username, $password, $dbName){
  7. $this->_polaczenie = mysql_connect($host, $username, $password);
  8. mysql_select_db($dbName, $this->_polaczenie);
  9. }
  10.  
  11. public function query($sql){
  12. $this->_result = mysql_query($sql, $this->_polaczenie);
  13. $this->_numRows = mysql_num_rows($this->_result);
  14. }
  15.  
  16. public function disconnect(){
  17. mysql_close($this->_polaczenie);
  18. }
  19.  
  20.  
  21. public function numRows(){
  22. return $this->_numRows;
  23. }
  24.  
  25. public function rows(){
  26. $rows = array();
  27. for($x = 0; $x < $this->numRows(); $x++){
  28. $rows[] = mysql_fetch_assoc($this->_result);
  29. return $rows;
  30. }
  31.  
  32. }
  33.  
  34. public function id (){
  35. $tmp=mysql_fetch_assoc(mysql_query("SELECT MAX(goscid) as max FROM gosc"));
  36. $tmp['max']++;
  37. }
  38.  
  39. public function rowsonly(){
  40. $rowsonly[] = mysql_fetch_assoc($this->_result);
  41. }
  42. }
  43.  
  44. ?>
sajegib
sprawdź co siedzi w $result
kudo
Po wykonaniu INSERT INTO w _result mam "1"
sajegib
No tak, bo uzywasz num rows do liczenia BOOL (czyli TRUE albo FALSE) - bez sensu


num rows uzywaj tylko do select
sajegib
albo if'a wrzuc i jesli result trzyma wyniki z db to uzyj num rows
kudo
Wielkie dzięki
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.