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.