PHP AJAX wyświetlanie godzin po zmianie osoby

0

Hej,

Mam pewien problem z kodem i liczę na pomoc :)

Jest sobie pewien formularz w którym klient ma wybrać pewnego konsultanta , następnie termina spotkania (data i godzina).
Podczas wyboru konsultanta i dnia z bazy danych pobieram sobie informację o tym w jakich godzinach konsultant jest wolny. Chciałbym aby to wszystko wykonało się bez przeładowania strony.
Do przechwycenia imienia konsultanta oraz dnia spotkania użyłem Ajaxa. No i spoko, zadziałało. Do wyświetlania godzin (wyłączając te w których konsultant jest zajęty) użyłem jquery.datapicker a następnie zablokowałem, te które wczytałem z bazy danych. Problem pojawia się, gdy klient chce zminić konsultanta, wtedy zablokowane godziny pozostaną takie jakie były dla pierwszego wybranego konsultanta. Nie dziwi mnie, że tak jest, bo godziny zajęte wczytuję z bazy danych używając PHP. Niestety nie bardzo wiem jak to zmienić. Czyli jak zrobić aby po zmianie konsultanta bez przeładowania wczytały się z bazy danych godziny w których jest on zajęty.

Trochę kodu:
index.php

Wybierz konsultanta
				<div id="wybor">
				<?php
					include ("dbconfig.php");
					$conn->select_db("zapis");
					echo '<div class="form-group">';
						echo '<select  name="ad1" class="form-control" id="ad1" >';
						echo '<option value="0">0. Dowolny </option>';
						$zapytanie = $conn->query("SELECT id, imie, nazwisko FROM konsultanci_m");
						while($row = $zapytanie->fetch_assoc()){
							 	echo '<option value="'.$row['id'].'"> '.$row['id'].' '.$row['imie'].' '.$row['nazwisko'].'</option>';
							}
							echo '</select>';
					echo '</div>';
				$zapytanie->free();
				$conn->close();
				?>
				Wybierz termin:
				<div class="input-append date form_datetime" data-date="2013-02-21T15:25:00Z">
				  Data:
				    <input size="10" type="text" name="date" class="date" />
				  Godzina:
				    <input size="10" type="text" class="time" />
				</div>
			</div>

				<script type="text/javascript">
					$('#wybor').change(function(){
						var Destination=$('#ad1').val();
						var datka=$('.form_datetime .date').val();
						$.ajax({url:"ShowSelectedValue.php?Destination="+Destination+"&datka="+datka,cache:true,success:function(result){
							$(".ShowSelectedValueDiv").html(result);
						}});
					});
					$('.form_datetime .date').datepicker({
						'format': 'yyyy-m-d',
						'autoclose': true
					});
				</script>
<div class='ShowSelectedValueDiv'></div>

ShowSelectedValue.php

<?php
include ("dbconfig.php");
$a=$_GET['Destination'];
$b=$_GET['datka'];
$conn->select_db("zapis");
$konsultant = $conn->query("SELECT imie FROM konsultanci_m WHERE id='$a'");
while($abc = $konsultant->fetch_assoc()){
$d = $abc['imie'];
}
try{
  $js_ddates = "";
    $q=$_GET['datka'];
  $stmt = $conn->query("SELECT data, godzina FROM klient_zapisany WHERE konsultant_k='$d' AND data='$b' ");
  while($record = $stmt->fetch_assoc()){
    $godz = $record['godzina'];
    $hour = strtotime(''.$godz.'');
    $js_ddates .= "['".$godz ."'".", "."'".date("H:i", strtotime("+30 minutes", $hour)) ."'"."],";
  }
    echo $js_ddates;
}
catch(\PDOException $e) {
  echo $e->getMessage();
}
echo "</div>";
$stmt->free();
$conn->close();
?>
 <script>
 $(".form_datetime .time").timepicker({
   'minTime': '7:30',
   'maxTime': '22:00',
   'timeFormat': 'H:i',
   'step': 30,
   'disableTimeRanges': [<?php echo $js_ddates; ?>]
 });
 $('.form_datetime .date').datepicker({
   'format': 'yyyy-m-d',
   'autoclose': true
 });

 </script>

Krótko mówiąc, po wyborze innego konsultanta, chcę aby wyświetlały się godziny w których można się z nim umówić, a nie te stare. Jak mogę to rozwiązać?

Z góry dziękuję
Pozdrawiam.

0

Niestety nie bardzo wiem jak to zmienić. Czyli jak zrobić aby po zmianie konsultanta bez przeładowania wczytały się z bazy danych godziny w których jest on zajęty.

Choćby i tak:

$('select.changeStatus').change(function(){
   $.ajax({
    // pobierasz id konsultanta z selecta i ładujesz via ajax
    });
});

https://stackoverflow.com/a/10365669/5497893

Jeżeli do zmiany parametrów musisz wykorzystać 2 i więcej selectów (zebrać dane z kilku list), proponuję dołożyć przycisk 'Pokaż godziny' albo 'Szukaj', w którym przypiszesz swoją akcję do tego przycisku, zbierzesz wszystkie dane i wyślesz w świat, zwracając żądane godziny.

0

Trochę źle sprecyzowałem pytanie. Godziny mi się wczytują, tylko nie aktualizuje się pole w którym następuje wybór godzin.

Skorzystam z Twojej propozycji i stworzę przycisk. Będzie najłatwiej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1