UPDATE une bdd après un delay

Fermé
titienne57 - 28 août 2015 à 01:33
 titienne57 - 28 août 2015 à 03:08
Bonjour,

J'ai un magasin de jeux, ou les gamers peuvent payer pour jouer 30minutes ou 1heure à différentes consoles. Je voudrais donc afficher en temps réel les consoles disponibles, et en fonctions du temps choisi (30 ou 60 minutes) UPDATE la bdd pour remettre la valeur de la console utilisé à NULL. Tout fonctionne, sauf la partie UPDATE de la bdd, dont je n'ai aucune idée de comment m'y prendre. Voici mon code:

<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=sqv2', 'root', '');

$pc_libre_req = $bdd->query("SELECT * FROM pc WHERE libre = true");
$pc_libre = $pc_libre_req->rowCount();

$pc_req = $bdd->query("SELECT * FROM pc");
$pc_infos = $pc_req->fetch();

$pc_total_req = $bdd->query('SELECT id FROM pc');
$pc_total = $pc_total_req->rowCount();
	
if(isset($_POST['valider'])) {
	$libre = 0;
	$id_pc = htmlspecialchars($_POST['id_pc']);
	
	$update_pc = $bdd->prepare("UPDATE pc SET libre = $libre WHERE id = $id_pc");
	$update_pc->execute(array($id_pc, $libre));
	echo "<div class='pc_use_div'><p class='pc_use'>Mise à jour du pc effectuée.</p></div><br>";
}

if(isset($_POST['valider'])) {
	$originalDate = $pc_infos['date_occupe'];
    $newDate = date("H:i:s", strtotime($originalDate));
	$id_pc = htmlspecialchars($_POST['id_pc']);
	
	$update_pc = $bdd->prepare("UPDATE pc SET date_occupe = now() WHERE id = $id_pc");
	$update_pc->execute(array($id_pc));
}

if(isset($_POST['valider'])) {
	$duree = htmlspecialchars($_POST['duree']);
	$id_pc = htmlspecialchars($_POST['id_pc']);
		
	$update_pc = $bdd->prepare("UPDATE pc SET temps = $duree WHERE id = $id_pc");
	$update_pc->execute(array($id_pc, $duree));
}

if(isset($_POST['valider'])) {
	$gamer = htmlspecialchars($_POST['gamer']);
	$id_pc = htmlspecialchars($_POST['id_pc']);
		
	$update_pc = $bdd->prepare("UPDATE pc SET gamer = '$gamer' WHERE id = $id_pc");
	$update_pc->execute(array($id_pc));
}

?>
<html>
<head>
	<meta charset="UTF-8" />
	<title>Square Game Valence 2.0 | Salon de jeu</title>
	<link rel="stylesheet" type="text/css" href="css/index.css" />
	<link rel="icon" href="images/icon.png" />
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
	<!--[if gte IE 9]
	<style type="text/css">
	.gradient {
	filter: none;
	}
	</style>
	<![endif]-->
</head>
<body>
	<h1>Square Game Valence 2.0 ! <img src="images/icon.png" width="40" height="40" /></h1>
	<div class="container">
		<form method="POST" action="">
			<table class="addpc">
				<tr>
					<td>
						<select name="id_pc">
							<optgroup label="PC n°">
								<option value="1">1</option>
								<option value="2">2</option>
								<option value="3">3</option>
								<option value="4">4</option>
								<option value="5">5</option>
								<option value="6">6</option>
								<option value="7">7</option>
								<option value="8">8</option>
								<option value="9">9</option>
								<option value="10">10</option>
								<option value="11">11</option>
								<option value="12">12</option>
							</optgroup>
						</select>
					</td>
					<td>
						<select name="duree">
							<option value="30">30 minutes</option>
							<option value="60">60 mintes</option>
						</select>
					</td>
					<td>
						<label for="gamer">Gamer :</label>
					</td>
					<td>
						<input type="text" name="gamer" />
					</td>
					<td>
						<input type="submit" value="Valider" name="valider" />
					</td>
				</tr>
			</table>
		</form>
		<h3>Il y a <?php echo $pc_libre; ?> pc de libre(s):</h3>
		<table class="pc" cellpadding="15">
					<tr>
						<th class="id">N°</th>
						<th class="libre">Libre</th>
						<th class="date">Depuis</th>
						<th class="temps">Temps</th>
						<th class="gamer">Gamer</th>
					</tr>
					<?php
					$pc_req = $bdd->query("SELECT * FROM pc");
					while ($pc = $pc_req->fetch()) {
						$date_occupe = $pc['date_occupe'];
						$temps = $pc['temps'];
						$now = date('H:i:s');
						$temps_restant = $date_occupe + $temps - $now;
						$fichier = 'salut';
						
					?> 
					<tr>
						<td class="td"><?php echo $pc['id']; ?></td>
						<td class="td"><?php if($pc['libre'] == TRUE) { echo "<p class='true'>Oui</p>"; } else { echo "<p class='false'>Non</p>"; }; ?></td>
						<td class="td"><?php if(is_null($pc['date_occupe'])) { echo "<p>-</p>"; } else { echo(ago($date_occupe)); } ?></td>
						<td class="td"><?php if(isset($pc['temps'])) { echo $pc['temps'].' minutes'; } else { echo "<p>-</p>"; } ?></td>
						<td class="td"><?php if(isset($pc['gamer']) AND strlen($pc['gamer']) > 1) { echo $pc['gamer']; } else { echo "<p>-</p>"; } ?></td>
					</tr>
					<?php
					}
					?>
				</table>
	</div>
</body>
</html>


Merci de votre aide, A bientôt
Etienne
A voir également:

1 réponse

jordane45 Messages postés 38164 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 mai 2024 4 658
Modifié par jordane45 le 28/08/2015 à 02:43
Bonjour,

Déjà ... tu utilises les requêtes préparées.... sans les utiliser correctement...
essayes ceci :

$libre = 0;
$id_pc = isset($_POST['id_pc']) ? htmlspecialchars($_POST['id_pc']) : NULL;

if($id_pc){
  try{
    $ql = "UPDATE pc 
                    SET libre = :libre
             WHERE id = :id";

    $params = array(":id"=>$id_pc,":libre"=> $libre);

     $update_pc = $bdd->prepare($sql);
     $update_pc->execute($params);

  }catch(Exception $e){
   // en cas de pb dans la requete :
    echo $e->getMessage();
  }
}


Cordialement,
Jordane
0
Merci bien de m'avoir corriger, je débute seulement en PHP alors je n'utilise pas forcément la bonne syntaxe. Et maintenant que la bonne syntaxe est utilisée, comment faire pour pouvoir réinitialiser cette table à nul s'il vous plaît ? Je n'ai absolument aucune idées de comment m'y prendre, et je ne trouve pas sur les forums.
Cordialement
0