11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Cela fait plusieurs semaines que je bloque malgrès beaucoup de recherche sur internet. Smiley fache

J'ai un formulaire de prise de rendez-vous avec un entreprot, le fournisseur ( supplier en anglais) renseigne un certain nombre de champs dont le numéro de commande ( Order Number), le nombre de produit (Sku), le nombre de carton, la date d'arrivée à l'entreprot ainsi que son heure d'arrivée et d'autres informations mais qui ne sont pas utile ici.

Cependant l'entreprot ne peut traiter que 5 fournisseurs par plage horaire d'une heure ( par exemple la plage horaire 8:00) j'aimerais donc que lorsque le fournisseur renseigne sa date d'arrivée seules les plages horaires disponibles ( i.e. celles où il y a moins de 5 fournisseurs inscrits dans la base de données) soient affichées.

J'ai vu sur ce site un sujet presque similaire :
https://forum.alsacreations.com/topic-5-64223-1-JQuery-SQL---champ-de-formulaire-dynamique.html
mais je ne connais pas assez ajax et je n'arrive pas à mettre en place la réponse apportée. Quelqu'un pourrait il m'aider ?

Merci Smiley biggrin

Je met mon code ci- après :
<!-- Last modified in August 2017 -->
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8"/>
		<link rel="stylesheet" type="text/css" href="style_booking.css">
		<title>Arrival Date and Time</title>
	</head>
		<body>
			<div id="bloc_page">
				<div id="title_page">
					<h3>Supplier date and arrival time</h3>
				</div>
				<form action="arrival.php" method="POST">
					<div id="p_OrderNo">
					<label for="OrderNo"><strong>Order Number :</strong></label>
					<input type="int" name="OrderNo" id="OrderNo"  autofocus />
					</div>

					<br/> 
					<div id="p_sku_delivered">
					<label for="sku_delivered"><strong>How many sku can be deliver ?</strong></label>
					<input type="int" name="sku_delivered" id="sku_delivered"  />
					</div>

					<br/>
					<div id="p_carton_delivered">
					<label for="carton_delivered"><strong>How many cartons can be deliver ?</strong></label>
					<input type="int" name="carton_delivered" id="carton_delivered"    />
					</div>

					<br/>
					<div id="p_arrival_date">
					<label for="arrival_date"><strong>Arrival Date :</strong></label>
					<input type="Date" name="arrival_date" id="arrival_date" />
					</div>

					<!-- <br/>
					<button id="available_time">See available time</button> -->
					<br/>

					<div id="p_arrival_time">
					<label for="arrival_time"><strong>Arrival Time :</strong></label>
					<select name="arrival_time" id="arrival_time" required >
						<option id="time_slot_8"  value="8:00">8:00 </option>
						<option id="time_slot_9"  value="9:00">9:00 </option>
						<option id="time_slot_10" value="10:00">10:00 </option>
						<option id="time_slot_11" value="11:00">11:00 </option>
						<option id="time_slot_13" value="13:00">13:00 </option>
						<option id="time_slot_14" value="14:00">14:00 </option>
						<option id="time_slot_15" value="15:00">15:00 </option>	
					</select>
					</div>
					<br/>
				</form>
				
<!-- Connection to the database -->
				<?php
				try
				{
					// Connection to the database 
					$bdd = new PDO('mysql:host=localhost;dbname=fournisseurs;charset=utf8', 'root', '',
				    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
				}
				catch(Exception $e)
				{
				
				        die('Erreur : '.$e->getMessage());
				}
				// We test if the user has really fill an order number,an arrival date and an arrival time 
				if (isset($_POST['OrderNo']) && isset($_POST['arrival_date']) && isset($_POST['arrival_time'])) 
				{ 
				
					// We make benign HTML tag which might be fill by the visitor
					$_POST['OrderNo']=htmlspecialchars($_POST['OrderNo']);
					$OrderNo_lu=$_POST['OrderNo'];

					// We convert any format dat filled by visitor into the us format : YYYY-MM-DD
					$_POST['arrival_date']=htmlspecialchars($_POST['arrival_date']);
					$arrival_date=$_POST['arrival_date'];
					$arrival_date_us=date('Y-m-d 00:00:00', strtotime(str_replace ('/', '-', $arrival_date)));

					$_POST['arrival_time']=htmlspecialchars($_POST['arrival_time']);
					$arrival_time=$_POST['arrival_time'];

					echo "The date collected is $arrival_date_us <br/>";

					// Variable session
					$fournisseur_nom='fournisseur2';

					$pickup_8="0";
					$pickup_9="0";

					// We insert information filled by user in database
					$req = $bdd->prepare('INSERT INTO commande(fournisseur_name,PoNumber,date_commande,time_commande) VALUES(:fournisseur_name, [langue]oNumber, :arrival_date, :time_arrival)') or die(print_r($bdd->errorInfo()));
					$req->execute(array(
							'fournisseur_name' => $fournisseur_nom,
							'PoNumber'=>$OrderNo_lu,
							'arrival_date'=>$arrival_date_us,
							'time_arrival'=>$arrival_time));
					$req->closeCursor();

					// We ask database how many distinct supplier have booked for 8:00 at the date choosen
					$answer8= $bdd->query('SELECT COUNT(DISTINCT fournisseur_name) AS number_supplier_8 FROM commande WHERE date_commande=\''.$arrival_date_us.'\' AND time_commande="8:00"') or die(print_r($bdd->errorInfo()));
							while ($number_supplier_time8=$answer8->fetch())
								{
									echo 'There is '.$number_supplier_time8['number_supplier_8'].' supplier on '.$arrival_date_us.' at 8:00 <br/>';
									if($number_supplier_time8['number_supplier_8'] >= 5)
									{
                                        $pickup_8 ="5";
									}	
								}
					$answer8->closeCursor();
					echo json_encode($pickup_8);												
				?>
					<?php	
				}
				else
				{
					echo nl2br("Please fill all form");
				}	
					?>
			</div>
			<script src="jquery321.js"></script>
			<script src="jqueryscripy.js"></script>
			<script type="text/javascript">
			$(function() {
				var pickup_8_collected = <?php echo json_encode($pickup_8); ?>;

				$.ajax({
						url: "http://localhost/proto_supplier/arrival.php",
						type: "POST",
						data: { 'MonCul': 'C\'est du poulet' }, /* peu importe le emssage envoyé a ton fichier php */
						dataType: 'json',
						success: function(json){
						if (json.reponse == '5') { /* json.X == X  dépend de ce que renvoi ton fichier php */
							$("#time_slot_8").remove();
						} else {
										
								}
							}
						});
			});
			</script>
		</body>
</html>

Désolé pour la longueur du code Smiley confus