Changement valeur booléen

Résolu/Fermé
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 - 25 mars 2021 à 18:11
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 26 mars 2021 à 21:51
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>
A voir également:

9 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 mars 2021 à 20:04
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>

0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2
25 mars 2021 à 20:12
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>';
  }
?>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 mars 2021 à 20:23
Déjà,
Ce code php .. il se trouve où ?
A la place des lignes 3 à 5 du code précédent ?


Ensuite,
L'extension mysql_* est obsolète.
Il faut désormais utiliser PDO ou mysqli.
(moi j'ai une grosse préférence pour PDO )

Et enfin ... ben... tu veux update cette table ok ... mais tu as déjà des données dedans ?
Comment fais tu l'insert ?
Sur quoi veux tu te baser ?
Lorsqu'un utilisateur clique sur une chaise ( et clique ensuite sur le bouton commander sinon ça ne marchera pas ) ... il a déjà une réservation ?
Quelle est la structure de ta base de données ?
Quelles sont les étapes pour arriver à la page de choix des chaises ?
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
25 mars 2021 à 20:42
alors mysql_ est surement obsolète mais comme je te le disais c'est un projet pour le lycée donc pas grande importance ensuite je veux faire un update de cette table c'est ça et oui il y a deja des données dedans il y à l'id et reserver qui est donc ici False car aucune chaise est reservé , sur quoi je veux me baser , ben en gros j'aimerai que quand je selectionne la chaise puis que j'appuie sur le bouton "commander" le booléen devienne "True" pour dire que cette chaise est reservé et si possible que cette chaise change de couleur pour montrer qu'elle est reservé , ma base de donnée est construite comme ça et je pense que ma table lcoation ne sert pas et pour finir pour arrive a la page de choix chaise il a fallut soit se créer un compte soit se connecter voilà je crois que je t'ai tout dit :)

CREATE TABLE Locations (
	id_place INTEGER,
	 id_client INTEGER,
	 date date,
	 duree INTEGER
	 );

CREATE TABLE Salle (
	id_place INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
	reserver BOOL
	);
		
INSERT INTO Salle(id_place, reserver) VALUES
	(' ',false),
    ("",false),
    ("",false),
    ("",false),
    ("",  false),
    ("",false),
    ("",  false),
    ("",  false),
    ("",  false),
    ("", false),
    ("", false),
    ("",false),
    ("",  false),
    ("",  false),
    ("", false),
    ("", false),
    ("", false),
    ("",false),
    ("",  false),
    ("",  false),
    ("", false),
    ("",  false);


CREATE TABLE Clients (
	id_client INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
	nom TEXT NOT NULL,
	prenom TEXT NOT NULL,
	tel INTEGER(10) NOT NULL,
	mail TEXT NOT NULL,
	mdp VARCHAR(20) NOT NULL
	);
	

0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
25 mars 2021 à 21:00
Et j’avais mis ce code à la toute fin parce que je savais pas où le placer ....
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022
25 mars 2021 à 21:38
Comment sais-tu quelle place correspond à quelle chaise ?
par exemple la chaise B2 correspond à quelle chaise dans ta table ?
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
Modifié le 25 mars 2021 à 22:09
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
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2
26 mars 2021 à 00:17
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);
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 11:24
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 */;




0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2
26 mars 2021 à 12:13
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 ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 13:23
Quelle version de PHP as-tu ?

Tu peux éventuellement remplacer les crochets
des variables $datas par :
$datas =array(':id_place'=>$choix);
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
26 mars 2021 à 14:16
je crois que ça marche mais j'avoue que je ne sais pas quoi mettre dans le id_client car le id vient de nul part je l'ai jamais demandé dans aucune page php :(
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022
26 mars 2021 à 14:23
Ben elles te servent à quoi ta table client et le champ id_client dans la table location ?
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
26 mars 2021 à 14:26
la table client c'est pour pouvoir se connecter ( mais c'est une connection bidon comme c'est pas un site serieux c'est du bidouillages) mais j'avoue que je sais pas vraiment pourquoi j'ai mis id_client surement parce que on m'a toujours dit de mettre un id
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
Modifié le 26 mars 2021 à 14:33
mais comme je te disais c'est vraiment un petit projet pas très important qui peut être bidouillé c'est pour ca tout ce que tu fais c'est génial mais j'ai franchement pas le niveau pour je pense , parce que dans le site il va surement avoir plein de petit bug ou bien des trucs pas cohérent mais moi ce que je veux c'est juste que le client puisse réserver une chaise voilà... par exemple notre prof nous avait donnée un code php a utilisé pour démarrer la base
<?php
function connectMaBase(){
    $base = mysql_connect ('localhost', 'root', 'root');  
    mysql_select_db ('reservation', $base) ;
   
}
?>
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 19:24
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>
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2
Modifié le 26 mars 2021 à 19:52
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?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 20:07
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
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
26 mars 2021 à 20:23
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022
26 mars 2021 à 21:15
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'] : "";
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
26 mars 2021 à 21:20
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"];
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 21:36
<?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 ... )
0
Yazho Messages postés 87 Date d'inscription dimanche 24 mars 2019 Statut Membre Dernière intervention 14 septembre 2022 2
26 mars 2021 à 21:49
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 ... ;)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mars 2021 à 21:51
Pense à mettre ce sujet en résolu.
Le lien pour le fer se trouve au niveau de ta question initiale
0