Verification de dispo [PHP/MySQL]

cs_Mystic666 Messages postés 2 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 5 août 2009 - 5 août 2009 à 13:45
cs_singulier Messages postés 9 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 14 août 2009 - 14 août 2009 à 16:57
bonjour,

voila j'ai fait un calendrier de réservation de matériel... quand on clique sur le jour on est redirigé vers le formulaire pour le compléter... jusque là tout marche très bien mais mon soucis c'est que par exemple si une personne réserve un portable de 8h à 10h et qu'il n'y en avait qu'un, personne ne peut le réserver tant qu'il est pas rendu...

comment puis je faire pour que même si il est réservé de 8h à 10h quelqu'un puisse le réserver de 12h à 14h par exemple?

j'espère que j'ai été claire dans ma demande :(

merci d'avance pour vos aides
Mystic666


<?php
if(isset($_POST['nom'])){
// recupe var post
$nom = $_POST['nom'];
$materiel = $_POST['materiel'];
$date_depart = $_POST['date_depart'];
$heure_debut = $_POST['heure_debut'];
$date_retour = $_POST['date_retour'];
$heure_retour = $_POST['heure_retour'];
$quantite = $_POST['quantite'];
$type = $_POST['type'];

$quantite_dispo mysql_result(mysql_query ("SELECT dispo FROM materiel WHERE materiel '".$materiel."'"),0);
$dispo = ($quantite_dispo - $quantite);

// if les champ sont pas rempli
if ($quantite '' XOR ($date_depart '' && $heure_debut == '' && $date_retour == '' && $heure_retour == '' ) ) {
// affiche le message d'erreur
echo "Merci de remplir tous les champs";
echo ('<META HTTP-EQUIV="Refresh" CONTENT="2;URL=\'\'">');
// sinon on va verif ce que c'est comme script
}else{
// si on s'inscrit
if($type == 'ins'){
if ($quantite_dispo < $quantite)
{
echo "il reste $quantite_dispo $materiel en sotck
Pour valider votre réservation veuillez reformuler votre réservation";
}
if ($quantite_dispo > = $quantite)
{
mysql_query("INSERT INTO reservation VALUES ('', '$nom','$materiel','$date_depart','$heure_debut','$date_retour','$heure_retour','$quantite')");
mysql_query("UPDATE materiel SET dispo '$dispo' WHERE materiel '$materiel'");
echo "
Réservation de matériel enregistrée !!" ;
//echo "$quantite_dispo - $quantite = $dispo" ;
//echo "
j'ai reserve $quantite $materiel mnt il en reste $dispo !!" ;
echo ('<META HTTP-EQUIV="Refresh" CONTENT="2;URL=\'\'">');
}
}
}
}
//------------------------------------------------------| Display HTML
?>
Réservation de matériel

Merci de remplir le formulaire suivant. Inscrire la date de retour sous la forme <?php echo $aujourdhui2; ?>


<form id ="form1" name="form1" method="post" action="">
<?php $sql= "SELECT * FROM materiel ORDER BY materiel ASC";
$rep= mysql_query($sql);
echo ",
votre nom,

----

,
date d'emprunt,

----

,
heure d'emprunt,

----

,
date de retour,

----

,
heure de retour,

----

<select name='materiel' size='1'><option value='0'>Choisir le materiel</option>";

while($objet=mysql_fetch_array($rep))
{
if ($materiel == $objet['catalogue'])
echo "<option Value=\"".$objet['materiel']."\">".$objet['materiel']." (".$objet['dispo'].")</option>";
}
echo "</select>,
type d'objet,

----

,
quantité,

----

,

----

";
?>
</form>






-- Base de données: `resa`
CREATE DATABASE `resa` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `resa`;

-- Structure de la table `materiel`

CREATE TABLE `materiel` (
`idmateriel` int(11) NOT NULL AUTO_INCREMENT,
`materiel` varchar(100) NOT NULL,
`quantite` int(11) NOT NULL,
`dispo` int(11) NOT NULL,
PRIMARY KEY (`idmateriel`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=4 ;

-- Contenu de la table `materiel`

INSERT INTO `materiel` (`idmateriel`, `materiel`, `quantite`, `dispo`) VALUES
(1, 'tv', 4, 4),
(2, 'portable', 20, 20);

-- Structure de la table `reservation`

CREATE TABLE `reservation` (
`idresa` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(100) NOT NULL,
`materiel` varchar(100) NOT NULL,
`date_depart` varchar(10) NOT NULL,
`heure_depart` varchar(5) NOT NULL,
`date_retour` varchar(10) NOT NULL,
`heure_retour` varchar(5) NOT NULL,
`quantite` int(11) NOT NULL,
PRIMARY KEY (`idresa`),
KEY `materiel` (`materiel`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5 ;

1 réponse

cs_singulier Messages postés 9 Date d'inscription jeudi 13 novembre 2008 Statut Membre Dernière intervention 14 août 2009
14 août 2009 à 16:57
Salut

en utilisant le timestamp tu peux savoir ce qui a ete reserve entre deux date

ex
<?php
  // Secondes écoulées entre le 1er janvier 1970 et le 27 mai 2002 à midi
  echo mktime(12, 0, 0, 5, 27, 2002); Affichera 1022493600
?>


il faudra donc comparer si entre le timestamp de depart et celui d'arrivee il reste des produits de disponible

en esperant avoir ete comprehensible.
0
Rejoignez-nous