Changement valeur booléen [Résolu]

Signaler
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
-
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
-
bonjour à tous,
je vais faire de mon mieux pour que vous puissiez comprendre les problèmes d'un ultra novice comme moi :)
je ne sais vraiment pas programmé en php donc si votre reponse n'est pas parfaite et que c'est du bidouillage ça me va !
Alors je suis en train de créer un site de reservation de chaise bref
J'en suis à un stade ou je peux selectionner mes chaises et donc ce que j'aimerai c'est si je clique sur mon bouton avec une chaise selectionné il change l'etat de mon booléen de 0 à 1 (0 quand la chaise est libre et 1 quand elle est reservé) mais je n'ai aucune idée de comment faire donc si vous avezu ne idée ça serait vraiment super merci
<?php

if(isset($_POST['commander'])) {
  $choix = !empty($_POST['chaise']) ? $_POST['chaise'] : "";
}

?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Réservation</title>
    <link rel="stylesheet" href="CSS/Reserver.css">
    <link href="CSS/Reserver.css" rel="stylesheet" media="all" type="text/css">
    
    <style>
/* HIDE RADIO */
[type=radio] { 
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

/* IMAGE STYLES */
[type=radio] + img {
  cursor: pointer;
}

/* CHECKED STYLES */
[type=radio]:checked + img {
  outline: 2px solid #f00;
}


    </style>
  </head>
  <script>
         buttons = document.querySelectorAll(".chaise");
    for (i = 0; i < buttons.length; i++) {
        element = buttons[i];
        element.addEventListener("click", function(){
          var valChaise = this.value;
          document.querySelector('.place_texte').innerHTML(valChaise);
        });
    }
    </script>
  <body class="background-image" style="background-image: url(image/fond.png)">
    <header>
      <img class="logo" src="image/logo.png" ></img>
      <h2><a href="index.html">Cassin Seat</a></h2>
      <hr>
      <h1 class="titre2" >RESERVATION </h1><br>
      <div class="hr2">
      <hr>
      </div>
      <nav>
          <li><a href="index.html">Home</a></li>
          <li><a href="#">À Propos</a></li>
          <li><a href="#">Contacts</a></li>
      </nav>
    
    </header>
    <nav>
      <img class="classe"  src="image/classe.png" align="center"></img>
      <img class="commande"  src="image/commande.png" align="right"></img>
    </nav>
    
    <form method="post" action="">
      <button type="submit" class="btn" name="commander">COMMANDER</button>
      <div class="grid2_radios-chaises">
       <?php
       $rangs = array('A','B','C','D');
       foreach($rangs as $R){
         for($i=1;$i<=6;$i++){
          echo '<label><input id="radio_'.$R . $i.'"" type="radio" class="chaise" name="chaise"   id="" title="'.$R . $i .'" value="'.$R . $i .'"><img class="chaise" src="image/chaise.png"></label>';
          echo '<label for="radio_'.$R . $i.'">'.$R . $i.'</label>'; ;
         }
       }
       ?>
      </div>
    </form>
   <p class='place_texte'> </p>

    <script type="text/javascript">
     buttons = document.querySelectorAll(".chaise");
    for (i = 0; i < buttons.length; i++) {
        element = buttons[i];
        element.addEventListener("click", function(event){
        var targetElement = event.target || event.srcElement;
        console.log(targetElement);
          var valChaise = targetElement.value;
          document.querySelector('.place_texte').innerHTML=" Vous avez choisi le Seat: " +valChaise;
        });
    }
    </script>
  </body>
 </html>

9 réponses

Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380
Bonsoir,

De quel booleen parles tu ?

NB: Tu peux ( dois ;. ) effacer les ligne 37 à 46 ( qui non seulement n'est pas le bon code.. mais en plus est mal placé )
Pour rappel :
Tu dois placer TOUT le "contenu" de ta page ... entre les balises <body> et </body>
Il ne peut rien y avoir entre le </head> et le <body>
ni après le </body>

Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

hey d'acc merci je l'ai enlevé , pour les booléen c'est depuis ma base de donnée dans la table salle il y a les attributs id_table et reserver , reserver est un booléen et donc je sais que je dois faire un SELECT mais pour le where je ne sais pas quoi mettre donc si tu as une idée je suis preneur eheh
<?php  session_start();

  if (isset ($_POST['commander'])) //a t on cliqué sur valider ? 
    
    {


                //on se connecte à la base
                connectMaBase();
                $query = mysql_query("SELECT reserver FROM salle WHERE "?" ");
                if($query==0)
                {         
                    $_SESSION['mail']=$mail;           
                    header("Location: commander.php");
               
          } else echo '<p class="error2">La place est reservé</p>';
  }
?>
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

Ben c’est ça le truc est ce que je dois mettre comme id non pas une incrémentation mais le nom de la chaise ça serait plus simple nan ? Je vais essayer ça
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380 >
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

Oui.
Ça serait pas mal en effet...
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

Ok c'est fait maintenant faut que je fasse une comparaison je pense avec l'id de la table et l'idée de la chaise selectionnée ?mais comment faire :(?
<?php

  session_start();
  if (isset ($_POST['commander'])) //a t on cliqué sur valider ? 
    
    {


                //on se connecte à la base
                connectMaBase();
                $query = mysql_query("SELECT reserver FROM salle WHERE id=? ");
                if($query==0)
                {         
                    $_SESSION['mail']=$mail;           
                    header("Location: commander.php");
               
          } else echo '<p class="error2">La place est reservé</p>';
  }
?>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380 >
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

Avec la variable choix par exemple.

Pourrais tu générer un dump (un export) de ta bdd ?
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

Et j’avais mis ce code à la toute fin parce que je savais pas où le placer ....
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

Je crois que c'est ça
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Ven 26 Mars 2021 à 00:16
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `reservation`
--

-- --------------------------------------------------------

--
-- Structure de la table `clients`
--

CREATE TABLE IF NOT EXISTS `clients` (
  `id_client` int(11) NOT NULL AUTO_INCREMENT,
  `nom` text NOT NULL,
  `prenom` text NOT NULL,
  `tel` int(10) NOT NULL,
  `mail` text NOT NULL,
  `mdp` varchar(20) NOT NULL,
  PRIMARY KEY (`id_client`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table `clients`
--


-- --------------------------------------------------------

--
-- Structure de la table `locations`
--

CREATE TABLE IF NOT EXISTS `locations` (
  `id_place` int(11) DEFAULT NULL,
  `id_client` int(11) DEFAULT NULL,
  `date` date DEFAULT NULL,
  `duree` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table `locations`
--


-- --------------------------------------------------------

--
-- Structure de la table `salle`
--

CREATE TABLE IF NOT EXISTS `salle` (
  `id_place` varchar(2) NOT NULL,
  `reserver` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id_place`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table `salle`
--

INSERT INTO `salle` (`id_place`, `reserver`) VALUES
('A1', 0),
('A2', 0),
('A3', 0),
('A4', 0),
('A5', 0),
('A6', 0),
('B1', 0),
('B2', 0),
('B3', 0),
('B4', 0),
('B5', 0),
('B6', 0),
('C1', 0),
('C2', 0),
('C3', 0),
('C4', 0),
('C5', 0),
('C6', 0),
('D1', 0),
('D2', 0),
('D3', 0),
('D4', 0),
('D5', 0),
('D6', 0);
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380
L'extension mysql_* étant obsolète et ne fonctionnant plus sur les nouvelles versions de php, je te propose de passer à PDO. ( utilisable à partir de php.5.6 (voir 5.2 ))

Donc:
1 - Création d'un fichier contenant la connexion à la bdd cnxbdd.php
<?php
//cnxbdd.php
// voir : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

$user = "tyty";
$password = "tyty";
$host = "localhost"; // hostname ou IP du serveur
$dbname = 'yy'; // nom de la base de données

try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$dbname.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}



Ensuite, ton fichier pour réserver ( attention, il faudra compléter la partie id_client ... (voir commentaire dans le code ))
<?php
//-----------------------------------------//
//affichage des erreurs PHP
//-----------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-----------------------------------------//
//connexion à la bdd
//-----------------------------------------//
require_once "cnxbdd.php";

//-----------------------------------------//
// Liste des places
//-----------------------------------------//

//préparation de la requête et des variables
 $sql = "SELECT * FROM salle ORDER BY id_place ASC";
//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute() ;
  $places = $requete->fetchAll(); // on stocke le resultat de la requête dans un array
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
}

// Récupération PROPRE des variables AVANT de les utiliser
$id_client = "1"; // Ici.. je te laisse compléter... je ne sais pas d'où vient l'id du client.. de variable de SESSION peut-être ??

//-----------------------------------------//
//traitement de la commande
//-----------------------------------------//
if(isset($_POST['commander'])) {
  $choix = !empty($_POST['chaise']) ? $_POST['chaise'] : "";
  
  // ON MET A JOUR LE STATUT DE LA PLACE CHOISIE :
  $sql = "UPDATE salle SET reserver=1 WHERE id_place =:id_place";
  $datas = [':id_place'=>$choix];
  //Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas) ; 
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
  }

   // ON REGARDE SI LE CLIENT AVAIT DEJA UNE RESERVATION
   $sql = "SELECT * FROM locations WHERE id_client =:id_client";
   $datas = [':id_client'=>$id_client];
  //Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas) ; 
    $location = $requete->fetch();
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
  }
  
  // SI LE CLIENT AVAIT DEJA UNE PLACE .. ON MET A JOUR LA TABLE LOCATION ET ON REMET A ZERO L'ANCIENNE CHAISE QUI ETAIT SELECTIONNEE
   if(!empty($location)){
      $old_id_place = $location['id_place'];
    // ICI .. IL FAUDRA CODER LA MISE A ZERO DE L'ANCIENNE CHAISE
       $sql = "UPDATE salle SET reserver=0 WHERE id_place =:old_id_place";
       $datas = [':old_id_place'=>$old_id_place];
       //Execution de la requete
       try{
         $requete = $bdd -> prepare($sql) ;
         $requete->execute($datas) ; 
       }catch(Exception $e){
         // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
       }

     // POUR METTRE à 1 LA NOUVELLE CHAISE
      $sql = "UPDATE locations SET id_place=:id_place WHERE id_client =:id_client";
      $datas = [':id_place'=>$choix,':id_client'=>$id_client];
      //Execution de la requete
      try{
        $requete = $bdd -> prepare($sql) ;
        $requete->execute($datas) ; 
      }catch(Exception $e){
        // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
      }
   }else{
  // SINON.. ON AJOUTE UNE LIGNE DANS LA TABLE LCOATION
     $sql = "INSERT INTO locations (id_place,id_client,date) 
             VALUES(:id_place,:id_client,now())";
      $datas = [':id_place'=>$choix,':id_client'=>$id_client];
      //Execution de la requete
      try{
        $requete = $bdd -> prepare($sql) ;
        $requete->execute($datas) ; 
      }catch(Exception $e){
        // en cas d'erreur :
         echo " Erreur ! ".$e->getMessage();
      }
 
   }
  
}

?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Réservation</title>
    <link rel="stylesheet" href="CSS/Reserver.css">
    <link href="CSS/Reserver.css" rel="stylesheet" media="all" type="text/css">
    
    <style>
      /* HIDE RADIO */
      [type=radio] { 
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
      }

      /* IMAGE STYLES */
      [type=radio] + img {
        cursor: pointer;
      }

      /* CHECKED STYLES */
      [type=radio]:checked + img {
        outline: 2px solid #f00;
      }

      .dejareservee{
        cursor:not-allowed;
      }


    </style>
  </head>
  <body class="background-image" style="background-image: url(image/fond.png)">
    <header>
      <img class="logo" src="image/logo.png" ></img>
      <h2><a href="index.html">Cassin Seat</a></h2>
      <hr>
      <h1 class="titre2" >RESERVATION </h1><br>
      <div class="hr2">
      <hr>
      </div>
      <nav>
          <li><a href="index.html">Home</a></li>
          <li><a href="#">À Propos</a></li>
          <li><a href="#">Contacts</a></li>
      </nav>
    
    </header>
    <nav>
      <img class="classe"  src="image/classe.png" align="center"></img>
      <img class="commande"  src="image/commande.png" align="right"></img>
    </nav>
    
    <form method="post" action="">
      <button type="submit" class="btn" name="commander">COMMANDER</button>
      <div class="grid2_radios-chaises">
       <?php 
       //on boucle sur le résultat de la recherche
       if(!empty($places)){
          foreach($places as $R){
          $reserver = $R['reserver'];
          $dejaReservee = !empty($reserver) ? "dejareservee" : "";
          echo '<label>
                  <input id="radio_'.$R['id_place'].'"" type="radio" class="chaise '.$dejaReservee.'" name="chaise"   id="" title="'.$R['id_place'] .'" value="'.$R['id_place'] .'">
                  <img class="chaise" src="image/chaise.png">
                </label>
                <label for="radio_'.$R['id_place'].'">'.$R['id_place'].'</label>'; ;
        }
       }

       ?>
      </div>
    </form>
   <p class='place_texte'> </p>

    <script type="text/javascript">
     buttons = document.querySelectorAll(".chaise");
    for (i = 0; i < buttons.length; i++) {
        element = buttons[i];
        element.addEventListener("click", function(event){
        var targetElement = event.target || event.srcElement;
        console.log(targetElement);
          var valChaise = targetElement.value;
          document.querySelector('.place_texte').innerHTML=" Vous avez choisi le Seat: " +valChaise;
        });
    }
    </script>
  </body>
 </html>


Il faut également modifier ta table location .. le champ id_place n'est plus un tinyint mais un varchar. ( je te conseille aussi de le mettre sur 4 caractères et non deux .. si jamais ta salle contenait plus de 9 places par ragng... )
-- --------------------------------------------------------
-- Hôte :                        localhost
-- Version du serveur:           5.7.24 - MySQL Community Server (GPL)
-- SE du serveur:                Win64
-- HeidiSQL Version:             10.2.0.5599
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

-- Listage de la structure de la table yy. locations
DROP TABLE IF EXISTS `locations`;
CREATE TABLE IF NOT EXISTS `locations` (
  `id_client` int(11) DEFAULT NULL,
  `id_place` varchar(4) DEFAULT NULL,
  `date` date DEFAULT NULL,
  `duree` int(11) DEFAULT NULL,
  KEY `id_client` (`id_client`),
  KEY `id_place` (`id_place`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Listage des données de la table yy.locations : ~0 rows (environ)
DELETE FROM `locations`;
/*!40000 ALTER TABLE `locations` DISABLE KEYS */;
INSERT INTO `locations` (`id_client`, `id_place`, `date`, `duree`) VALUES
	(1, 'B3', '2021-03-26', NULL);
/*!40000 ALTER TABLE `locations` ENABLE KEYS */;

-- Listage de la structure de la table yy. salle
DROP TABLE IF EXISTS `salle`;
CREATE TABLE IF NOT EXISTS `salle` (
  `id_place` varchar(4) NOT NULL,
  `reserver` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id_place`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- Listage des données de la table yy.salle : ~24 rows (environ)
DELETE FROM `salle`;
/*!40000 ALTER TABLE `salle` DISABLE KEYS */;
INSERT INTO `salle` (`id_place`, `reserver`) VALUES
	('A1', 0),
	('A2', 0),
	('A3', 0),
	('A4', 0),
	('A5', 0),
	('A6', 0),
	('B1', 0),
	('B2', 0),
	('B3', 1),
	('B4', 0),
	('B5', 1),
	('B6', 0),
	('C1', 0),
	('C2', 0),
	('C3', 0),
	('C4', 0),
	('C5', 0),
	('C6', 0),
	('D1', 0),
	('D2', 0),
	('D3', 0),
	('D4', 0),
	('D5', 0),
	('D6', 0);
/*!40000 ALTER TABLE `salle` ENABLE KEYS */;

/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;




Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

Waouh merci beaucoup c'est enorme tout le travail que tu fais pour m'aider juste en utilisant ton code j'ai une petite erreur pour les lignes avec des crochet
  $datas = [':id_place'=>$choix];

et l'erreur est Parse error: syntax error, unexpected '[' in G:\T4\NSI\UwAmp\www\PROJET WEB\reserver.php on line 41 tu as une idée ?
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380 >
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

Lignes 18, 31, et 36... Tu ne peux pas utiliser le même nom de variable..
Modifies celles des lignes 32 et 36. Par sql2. Et sql3
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

c'est fait ! mais malheuresement toujours pas de chaise et toujours la même erreur avec id_place
    <?php
    include("fonctions.php");
    ?>
    <?php
//-----------------------------------------//
//affichage des erreurs PHP
//-----------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-----------------------------------------//
//connexion à la bdd
//-----------------------------------------//
connectMaBase();

//préparation de la requête et des variables
$sql = mysql_query( "SELECT * FROM salle ORDER BY id_place ASC")or die(mysql_error());


// Récupération PROPRE des variables AVANT de les utiliser
$id_client = "1"; // Ici.. je te laisse compléter... je ne sais pas d'où vient l'id du client.. de variable de SESSION peut-être ??

//-----------------------------------------//
//traitement de la commande
//-----------------------------------------//
if(isset($_POST['commander'])) {
  $choix = !empty($_POST['chaise']) ? $_POST['chaise'] : "";
  
  // ON MET A JOUR LE STATUT DE LA PLACE CHOISIE :
  $sql2 = mysql_query ("UPDATE salle SET reserver=1 WHERE id_place ='$id_place'")or die(mysql_error());
  $datas = array('$id_place'=>$choix);


   // ON REGARDE SI LE CLIENT AVAIT DEJA UNE RESERVATION
   $sql3 = mysql_query ("SELECT * FROM locations WHERE id_client ='$id_client'")or die(mysql_error());
   $datas = array('$id_client'=>$id_client);
  //Execution de la requete

  
  // SI LE CLIENT AVAIT DEJA UNE PLACE .. ON MET A JOUR LA TABLE LOCATION ET ON REMET A ZERO L'ANCIENNE CHAISE QUI ETAIT SELECTIONNEE
   if(!empty($location)){
      $old_id_place = $location['id_place'];
    // ICI .. IL FAUDRA CODER LA MISE A ZERO DE L'ANCIENNE CHAISE
      $sql = mysql_query ("UPDATE salle SET reserver=0 WHERE id_place = '$old_id_place'")or die(mysql_error());
       $datas = array('$old_id_place'=>$old_id_place);

     // POUR METTRE à 1 LA NOUVELLE CHAISE
     $sql = mysql_query( "UPDATE locations SET id_place='$id_place' WHERE id_client ='$id_client'")or die(mysql_error());
      $datas = array('$id_place'=>$choix,'$id_client'=>$id_client);
      //Execution de la requete
 
   }else{
  // SINON.. ON AJOUTE UNE LIGNE DANS LA TABLE LCOATION
  $sql = mysql_query ("INSERT INTO locations (id_place,id_client,date) 
             VALUES('$id_place','$id_client',now())") or die(mysql_error());
      $datas = array('$id_place'=>$choix,'$id_client'=>$id_client);

   }
  }
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Réservation</title>
    <link rel="stylesheet" href="CSS/Reserver.css">
    <link href="CSS/Reserver.css" rel="stylesheet" media="all" type="text/css">
    
    <style>
      /* HIDE RADIO */
      [type=radio] { 
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
      }

      /* IMAGE STYLES */
      [type=radio] + img {
        cursor: pointer;
      }

      /* CHECKED STYLES */
      [type=radio]:checked + img {
        outline: 2px solid #f00;
      }

      .dejareservee{
        cursor:not-allowed;
      }


    </style>
  </head>
  <body class="background-image" style="background-image: url(image/fond.png)">
    <header>
      <img class="logo" src="image/logo.png" ></img>
      <h2><a href="index.html">Cassin Seat</a></h2>
      <hr>
      <h1 class="titre2" >RESERVATION </h1><br>
      <div class="hr2">
      <hr>
      </div>
      <nav>
          <li><a href="index.html">Home</a></li>
          <li><a href="#">À Propos</a></li>
          <li><a href="#">Contacts</a></li>
      </nav>
    
    </header>
    <nav>
      <img class="classe"  src="image/classe.png" align="center"></img>
      <img class="commande"  src="image/commande.png" align="right"></img>
    </nav>
    
    <form method="post" action="">
      <button type="submit" class="btn" name="commander">COMMANDER</button>
      <div class="grid2_radios-chaises">
       <?php 
       //on boucle sur le résultat de la recherche
       if(!empty($places)){
        while ($R = mysql_fetch_array($sql)){
          $reserver = $R['reserver'];
          $dejaReservee = !empty($reserver) ? "dejareservee" : "";
          echo '<label>
                  <input id="radio_'.$R['id_place'].'"" type="radio" class="chaise '.$dejaReservee.'" name="chaise"   id="" title="'.$R['id_place'] .'" value="'.$R['id_place'] .'">
                  <img class="chaise" src="image/chaise.png">
                </label>
                <label for="radio_'.$R['id_place'].'">'.$R['id_place'].'</label>'; ;
        }
       }

       ?>
      </div>
    </form>
   <p class='place_texte'> </p>

    <script type="text/javascript">
     buttons = document.querySelectorAll(".chaise");
    for (i = 0; i < buttons.length; i++) {
        element = buttons[i];
        element.addEventListener("click", function(event){
        var targetElement = event.target || event.srcElement;
        console.log(targetElement);
          var valChaise = targetElement.value;
          document.querySelector('.place_texte').innerHTML=" Vous avez choisi le Seat: " +valChaise;
        });
        }
    
    </script>
  </body>
 </html>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380 >
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

lignes 32 37 46 à enlever
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

toujours la même chose :(
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

est ce que tu veux que je t'envoie mon projet en entier pour que tu es une idée en général ?
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380
C'est la galère l'ancienne syntaxe mysql_* .. surtout que je ne peux pas tester ayant une version de php récente.

Mais ça devrait être mieux
   <?php
    include("fonctions.php");
    ?>
    <?php
//-----------------------------------------//
//affichage des erreurs PHP
//-----------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-----------------------------------------//
//connexion à la bdd
//-----------------------------------------//
connectMaBase();

//préparation de la requête et des variables
$places = mysql_query( "SELECT * FROM salle ORDER BY id_place ASC") or die(mysql_error());


// Récupération PROPRE des variables AVANT de les utiliser
$id_client = "1"; // Ici.. je te laisse compléter... je ne sais pas d'où vient l'id du client.. de variable de SESSION peut-être ??

//-----------------------------------------//
//traitement de la commande
//-----------------------------------------//
if(isset($_POST['commander'])) {
  $choix = !empty($_POST['chaise']) ? $_POST['chaise'] : "";
  
  // ON MET A JOUR LE STATUT DE LA PLACE CHOISIE :
  mysql_query ("UPDATE salle SET reserver=1 WHERE id_place ='$id_place'") or die(mysql_error());

   // ON REGARDE SI LE CLIENT AVAIT DEJA UNE RESERVATION
   $sql_location = mysql_query ("SELECT * FROM locations WHERE id_client ='$id_client'") or die(mysql_error());

  // SI LE CLIENT AVAIT DEJA UNE PLACE .. ON MET A JOUR LA TABLE LOCATION ET ON REMET A ZERO L'ANCIENNE CHAISE QUI ETAIT SELECTIONNEE
  $location = mysql_fetch_array($sql_location);
  if(!empty($location)){
    $old_id_place = $location['id_place'];
    // ICI .. IL FAUDRA CODER LA MISE A ZERO DE L'ANCIENNE CHAISE
     mysql_query ("UPDATE salle SET reserver=0 WHERE id_place = '$old_id_place'") or die(mysql_error());
      
     // POUR METTRE à 1 LA NOUVELLE CHAISE
     mysql_query( "UPDATE locations SET id_place='$id_place' WHERE id_client ='$id_client'") or die(mysql_error());
     
   }else{
     // SINON.. ON AJOUTE UNE LIGNE DANS LA TABLE LCOATION
     mysql_query ("INSERT INTO locations (id_place,id_client,date) 
             VALUES('$id_place','$id_client',now())") or die(mysql_error());

   }
  }
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Réservation</title>
    <link rel="stylesheet" href="CSS/Reserver.css">
    <link href="CSS/Reserver.css" rel="stylesheet" media="all" type="text/css">
    
    <style>
      /* HIDE RADIO */
      [type=radio] { 
        position: absolute;
        opacity: 0;
        width: 0;
        height: 0;
      }

      /* IMAGE STYLES */
      [type=radio] + img {
        cursor: pointer;
      }

      /* CHECKED STYLES */
      [type=radio]:checked + img {
        outline: 2px solid #f00;
      }

      .dejareservee{
        cursor:not-allowed;
      }


    </style>
  </head>
  <body class="background-image" style="background-image: url(image/fond.png)">
    <header>
      <img class="logo" src="image/logo.png" ></img>
      <h2><a href="index.html">Cassin Seat</a></h2>
      <hr>
      <h1 class="titre2" >RESERVATION </h1><br>
      <div class="hr2">
      <hr>
      </div>
      <nav>
          <li><a href="index.html">Home</a></li>
          <li><a href="#">À Propos</a></li>
          <li><a href="#">Contacts</a></li>
      </nav>
    
    </header>
    <nav>
      <img class="classe"  src="image/classe.png" align="center"></img>
      <img class="commande"  src="image/commande.png" align="right"></img>
    </nav>
    
    <form method="post" action="">
      <button type="submit" class="btn" name="commander">COMMANDER</button>
      <div class="grid2_radios-chaises">
       <?php 
       //on boucle sur le résultat de la recherche
       if(!empty($places)){
        while ($R = mysql_fetch_array($places)){
          $reserver = $R['reserver'];
          $dejaReservee = !empty($reserver) ? "dejareservee" : "";
          echo '<label>
                  <input id="radio_'.$R['id_place'].'"" type="radio" class="chaise '.$dejaReservee.'" name="chaise"   id="" title="'.$R['id_place'] .'" value="'.$R['id_place'] .'">
                  <img class="chaise" src="image/chaise.png">
                </label>
                <label for="radio_'.$R['id_place'].'">'.$R['id_place'].'</label>'; ;
        }
       }

       ?>
      </div>
    </form>
   <p class='place_texte'> </p>

    <script type="text/javascript">
     buttons = document.querySelectorAll(".chaise");
    for (i = 0; i < buttons.length; i++) {
        element = buttons[i];
        element.addEventListener("click", function(event){
        var targetElement = event.target || event.srcElement;
        console.log(targetElement);
          var valChaise = targetElement.value;
          document.querySelector('.place_texte').innerHTML=" Vous avez choisi le Seat: " +valChaise;
        });
        }
    
    </script>
  </body>
 </html>
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

super je pense qu'on arrive près du but mes chaises ont réapparu mais il y a toujours une erreur le id_place qui n'est pas défini mais je sens que tu tiens le bon bous !!!! Et d’ailleurs pour le id_client je me demandais si on pouvait le récupérer avec un select car on veut l’id de la personne qui s’est connecté et j’ai le mail et le mdp et grâce à ces infos je pourrais pas récupérer son id?
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380
Je crois avoir vu que tu stocker le mail en variable de session.
L'idéal serait de stocker son id.
Il te sera alors facile de récupérer cette variable dans ton code actuel.

Concernant le message d'erreur sur la variable id_place... En effet... Tu n'as pas utiliser la bonne variable...
Regarde la ligne 28 ....
Et corrige à la ligne 31
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

Bon tu dois vraiment pensé que je suis nul mais je vois rien de particulier sur la ligne 28 et je ne vois pas de faute sur la ligne 31.... mais je vais essayer de régler le problème d'id
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380 >
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

Tu as utilisé aux lignes 31, 44 et 49 la variable $id_place
Cette variable est initialisée nul-part

Par contre, on dispose de la variable $choix .. qui elle .. contient le "choix" du client lorsqu'il a sélectionné une chaise puis cliqué sur le bouton commander...

Le plus simple, donc, serait de renommer la variable $choix par $id_place
  $choix = !empty($_POST['chaise']) ? $_POST['chaise'] : "";

devient donc
  $id_place = !empty($_POST['chaise']) ? $_POST['chaise'] : "";
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021

ah ouais d'accord j'ai compris merci eheh par contre pour recuperer l'id je pensais avoir bon mais faut croire que non ! regarde ce que j'ai fais
dans la page ou on se connecte j'ai mis ça (là ou il y à ** devant)
<?php
    connectMaBase();
    session_start();
    if (isset ($_POST['btn3'])) //a t on cliqué sur valider ? 
        
        {
            $mail = $_POST['mail'];
            $mdp = $_POST['mdp'];
            
	        if($mail&&$mdp) /* on teste si les champ sont bien remplis */
                {
                   ** $id= mysql_query("SELECT id_client FROM clients WHERE mail='$mail'&&mdp='$mdp'")or die('ERREUR SQL ! <br>'.$sql.'<br>'.mysql_error());
                    $query = mysql_query("SELECT * FROM clients WHERE mail='$mail'&&mdp='$mdp'")or die('ERREUR SQL ! <br>'.$sql.'<br>'.mysql_error());
                    $rows = mysql_num_rows($query);
                    if($rows==1)
                    {         
                       ** $_SESSION['id_client']=$id;         
                        header("Location: reserver.php");
                        //on ferme la connexion
                        mysql_close();
                    } else echo '<p class="error2"> mail ou mot de passe incorrect!</p>';
                   
	            } else echo '<p class="error2">Veuillez saisir les champs</p>';
	    }
	?>
mais faut croire qu'il reussi pas à recuperer l'id mais pourtant je pensais que ma methode etait bon...
pour ensuite le recuperer dans l'autre page en mode
session_start();
$id_client = $_SESSION["id_client"];
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380
<?php
//Démarrage des sessions ( toujours Au début du code PHP avant tout le reste ! )
session_start();

//connexion à la bdd
connectMaBase();

//a t on cliqué sur valider ? 
if (isset ($_POST['btn3']))  {
  $mail = $_POST['mail'];
  $mdp = $_POST['mdp'];
  
  /* on teste si les champ sont bien remplis */
  if($mail && $mdp) {
    $query = mysql_query("SELECT * FROM clients WHERE mail='$mail'&&mdp='$mdp'")or die('ERREUR SQL ! <br>'.$sql.'<br>'.mysql_error());
    $rows = mysql_num_rows($query);
    $resultatdelarequete = mysql_fetch_array($query); //permet de récuperer la première ligne de résultat de la requête
    if($rows==1) {      
      $_SESSION['id_client'] = $resultatdelarequete['id'];     
      $_SESSION['mail'] = $mail; 
      //on ferme la connexion  ( si tu la fermes avant de changer de page...ça marchera mieux :-) )
      mysql_close();
      
      header("Location: reserver.php");
      exit; // toujours mettre un exit après une instruction de redirection.
    } else {
      echo '<p class="error2"> mail ou mot de passe incorrect!</p>';
    }
  } else {
    echo '<p class="error2">Veuillez saisir les champs</p>';
  }
}
?>


et donc dans ton autre page
<?php
//-----------------------------------------//
//Démarrage des sessions toujours en premier 
//-----------------------------------------//
session_start();

//-----------------------------------------//
//affichage des erreurs PHP
//-----------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-----------------------------------------//
// On inclus les fonctions
//-----------------------------------------//
 include("fonctions.php");

//-----------------------------------------//
//connexion à la bdd
//-----------------------------------------//
connectMaBase();

//-----------------------------------------//
// Récupération des variables AVANT de les utiliser
//-----------------------------------------//
$id_client = !empty($_SESSION["id_client"]) ? $_SESSION["id_client"] : NULL;

//.. puis la suite du code





Bon... va falloir apprendre un peu plus ......
Je ne comprend pas comment un prof peut vous donner un exo de ce genre alors que vous ne connaissez strictement rien au langage .. (ni même que vous n'ayez, me semble t'il, appris un minimum l'algo .. la logique ... )
Messages postés
77
Date d'inscription
dimanche 24 mars 2019
Statut
Membre
Dernière intervention
2 avril 2021

YEES! ça marche ! alors oui complètement d'accord avec toi en fait le projet était sur les bases de données tu vois mais on a fait en cours que 2h de tp php et donc j'ai vraiment aucune connaissance , bon après c'est moi qui est choisi de faire un site de réservation c'était peut-être trop ambitieux pour un tout tout débutant comme moi ! mais grâce a toi je suis en train d'y arriver !!! bon maintenant je passe à la prochaine étape .... Merci mille fois en tout cas
ps: même si je pense que tu vas encore entendre parlé de moi ... ;)
Messages postés
32042
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 avril 2021
3 380
Pense à mettre ce sujet en résolu.
Le lien pour le fer se trouve au niveau de ta question initiale