Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Sprawdzanie dostępnych godzin z SQL poprzez AJAXa


Rekomendowane odpowiedzi

Cześć, potrzebuje skryptu który po wybraniu daty sprawdzi jakie godziny mamy wolne do rezerwacji. Zakres rezerwacji co 30 minut od godziny 7:30-18:00

Chciałbym aby po wybraniu daty select się przeładowywał pobierając dane z SQL

https://codepen.io/anon/pen/PxgYWX

<h1>Rezerwacja</h1>

<form action="">
<input type="date" name="bday">
  <br />
  <select>
  <option>10:00</option>
  <option>10:30</option>
  <option>12:30</option>
  <option>14:00</option>
</select>
  <br />
  <input type="submit" value="Rezerwuj">
</form>
Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

Robisz AJAXowe zapytanie do bazy danych i odświeżasz content.

Co do sprawdzania, czy masz wolny termin, to po prostu zapisuj godzinę spotkania (czy co tam to jest) do bazy i na tej podstawie odrzucaj już zajęte godziny.

P.S.

Nikt za free Ci gotowego skryptu nie wrzuci.

Edytowane przez arces
Odnośnik do komentarza
Udostępnij na innych stronach

Mi chodzi tylko o sprawdzanie...

Wszelkie zapytania porobię sam.

Odnośnik do komentarza
Udostępnij na innych stronach

w3schools nie jest najlepszym źródłem wiedzy, ale myślę, że Twój problem został przedstawiony tutaj

<!DOCTYPE html>
<html>
<style>
table,th,td {
  border : 1px solid black;
  border-collapse: collapse;
}
th,td {
  padding: 5px;
}
</style>
<body>

<h1>The XMLHttpRequest Object</h1>

<form action=""> 
<select name="customers" onchange="showCustomer(this.value)">
<option value="">Select a customer:</option>
<option value="ALFKI">Alfreds Futterkiste</option>
<option value="NORTS ">North/South</option>
<option value="WOLZA">Wolski Zajazd</option>
</select>
</form>
<br>
<div id="txtHint">Customer info will be listed here...</div>

<script>
function showCustomer(str) {
  var xhttp;    
  if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
  }
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("txtHint").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "getcustomer.asp?q="+str, true);
  xhttp.send();
}
</script>

</body>
</html>
Odnośnik do komentarza
Udostępnij na innych stronach

26 minut temu, CSGOShop napisał:

Mi chodzi tylko o sprawdzanie...

Wszelkie zapytania porobię sam.

Ale co my mamy Ci sprawdzić? Kod HTML, który wrzuciłeś? I co nam po tym?

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak masz zbudowane tabele w bazie, ale...

Pobierz dzień z forma - utwórz timestamp. Zrób z tego godzinę otwarcia i zamknięcia zakładu. Pobierz rekordy pomiędzy tymi datami z pomocą klauzuli BETWEEN.

Następnie... Pamiętasz jak utworzyłeś daty otwarcia/zamknięcia? Podziel je po 30 minut i zrób różnicę między tym co podzieliłeś a tym co otrzymałeś z bazy.

#umniedziala

Odnośnik do komentarza
Udostępnij na innych stronach

13 minut temu, El Profesor napisał:

Nie wiem jak masz zbudowane tabele w bazie, ale...

Pobierz dzień z forma - utwórz timestamp. Zrób z tego godzinę otwarcia i zamknięcia zakładu. Pobierz rekordy pomiędzy tymi datami z pomocą klauzuli BETWEEN.

Następnie... Pamiętasz jak utworzyłeś daty otwarcia/zamknięcia? Podziel je po 30 minut i zrób różnicę między tym co podzieliłeś a tym co otrzymałeś z bazy.

#umniedziala

jeszcze raz xD

Odnośnik do komentarza
Udostępnij na innych stronach

53 minuty temu, CSGOShop napisał:

jeszcze raz xD

No jeszcze raz. Powtórz to co napisałem i będziesz mieć rozwiązanie

A jak chcesz kod na tacy, to napisz do mnie na PW - podpiszemy umowę i dostaniesz to co chcesz.

Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)
--
-- Struktura tabeli dla tabeli `rezerwacja`
--

CREATE TABLE `rezerwacja` (
  `id` int(10) NOT NULL,
  `time` datetime NOT NULL DEFAULT '00:00:00',
  `expirationtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Zrzut danych tabeli `rezerwacja`
--

INSERT INTO `rezerwacja` (`id`, `time`, `expirationtime`) VALUES
(0, '00:00:00', '0000-00-00 00:00:00');

połączenie z bazą:

<?php
	$host = 'localhost';
	$user = 'user';
	$passdb = 'password';
	$dbn = 'database';

    global $mysqli;
    $mysqli = @new mysqli($host, $user, $passdb, $dbn);
    if($mysqli->connect_errno != 0)
    {
        echo '
			nie ma połączenia z bazą
        ';
        exit;
    }
?>

formularz:

<h1>Rezerwacja</h1>

<form action="check.php">
<input type="date" name="bday">
  <br />
  <select>
  <option>10:00</option>
  <option>10:30</option>
  <option>12:30</option>
  <option>14:00</option>
</select>
  <br />
  <input type="submit" value="Rezerwuj">
</form>

check.php

<?php
	$day = $_GET['bday'];
	$hour = $_GET['hour'];
	
	$sql = $mysqli->query("SELECT * FROM rezerwacja WHERE expirationtime = '$day' AND time = '$hour'");
	if(mysqli_num_rows($sql) > 0)
	{
		while($row = mysqli_fetch_assoc($sql))
		{
			$date = date("Y-m-d");
			$time = date("H:i:s");
			if($date <= $row['expirationtime']) 
			{
				if($time <= $row['time'])
				{
					echo 'ten termin zajęty';
				}
				else
				{
					echo 'nie jest zajęty';
				}
			}
			else
			{
				echo 'nie jest zajęty';
			}
		}
	}
?>

dalej raczej będziesz wiedział jak to zrobić, mogą zawierać błędy bo na szybko pisane ☺️

#edit:

zobacz na http://forum.php.pl/index.php?showforum=97

Edytowane przez nastii
Odnośnik do komentarza
Udostępnij na innych stronach

Taki. Sposobem umiem. Zależy mi na ajaxie...

Odnośnik do komentarza
Udostępnij na innych stronach

Jak zależy Ci na AJAXie to poczytaj jak to się robi przesyłając dane do PHP i po problemie. Trujesz o to od wczoraj i oczekujesz czegoś autorskiego za free...

Zależy Ci na gotowcu to zapłać, a jak nie to poczytaj o technologiach, których musisz użyć. Jeżeli potrafisz napisać to co jest wyżej, to AJAX też nie sprawi Ci problemu...

Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...