Problème PHP / Base de donnée

Résolu
Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je suis lycéen et pour le bac je dois proposer un projet informatique (progiciel ou site web). J'ai choisi de présenter un site web. C'est pour un restaurant (inventé), le site permet aux clients de réserver une table (après avoir créer un compte) mais ça ne marche pas. Pourtant j'ai essayer pendant 3h de régler le problème mais rien ne marche.

Quand je rempli le formulaire d'inscription et que je valide sa me met "Parse error: syntax error, unexpected 'mysql_close' (T_STRING), expecting ',' or ';' in C:\www\Les pages du site\insertclient.php on line 28"

Voici le code du fichier "insertclient.php" pour la création de compte:
<?php

$Nom=$_POST['nom'];
$Prenom=$_POST['prenom'];
$Telephone=$_POST['num_tel'];
$Mail=$_POST['mail'];

include("connexion.php");

$reqClient="INSERT INTO CLIENT (nom, prenom, num_tel, mail)
VALUES('$Nom','$Prenom','$Telephone','$Mail')";

mysql_query($reqClient) or die("erreur de connexion".mysql_error());

$NumCli=mysql_insert_id(num_cli);

echo " Merci pour votre inscription, votre numéro de compte est le:".$NumCli." avec ce numéro vous pouvez réserver une table."

mysql_close();

?>


Voici le code du formulaire de ma page HTML:
<form action="insertclient.php" method="POST">
<p><u><h2>Avant de réserver veuillez créer un compte :</u> C'est simple et rapide.</h2></p>
Nom : <input type="text" name="nom" value=""/> <br>
Prénom : <input type="text" name="prenom" value=""/> <br>
Numéro de téléphone : <input type="text" name="num_tel" value=""/> <br>
Adresse mail : <input id="mail" type="text" name="mail" value=""/> <br><br>
<input type="submit" value="S'enregistrer"<br style="width: 100px">  <input type="reset" value="Annuler"<br><br><br>
</form>


Et voici le code du fichier "connexion.php":
<? php
$serveur="localhost";
$utilisateur="ROOT"
$motdepasse=" ";
$base="le perce neige";

$cx_srv= mysql_connect($serveur, $utilisateur, $motdepasse);

if($cx_srv==false)
{
print "Echec de connexion au serveur " .$serveur. ": Veuillez réessayer."
}
else
{
	
$cx_base= mysql_select_db($base, $cx_srv);
if($cx_base==false)
{			
print "Echec de connexion à la base " .$base.
mysql_close(cx_$srv);
}
}

?>


Merci d'avance pour votre aide.

4 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    A la ligne avant ton mysql_close... tu as oublié de la terminer avec un point-virgule.

    Au passage... l'extension Mysql est OBSOLETE (elle ne fonctionne plus en php 7 ). A la place il faut désormais utiliser mysqli ou PDO.
    https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
    1
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Tu as également un souci dans ton troisieme fichier
    mysql_close(cx_$srv);
    

    A corriger par
    mysql_close($cx_srv);
    


    Mais bon.. si tu passes à PDO ou mysqli ... faudra de toutes façons réécrire ces instructions...

    1
    1. Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
       
      C'est du rapide, je prend note de tout ça. Merci beaucoup.
      0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    <?php
    //Fichier de connexion à la bdd
    $serveur="localhost";
    $utilisateur="ROOT";
    $motdepasse=" ";
    $base="leperceneige";
    
    $cx_srv = mysqli_connect($serveur, $utilisateur, $motdepasse,$base);
    // Check connection
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    ?> 
    

    
    <?php
    /**
    // Fichier insertclient.php
    */
    
    //---------------------------------------------//
    //On active l'affichage des erreurs PHP
    //---------------------------------------------//
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    //---------------------------------------------//
    //connexion à la bdd
    //---------------------------------------------//
    require_once("connexion.php");
    
    //---------------------------------------------//
    //On récupere PROPREMENT les variables AVANT de les utiliser
    //---------------------------------------------//
    $nom=!empty($_POST['nom']) ? $_POST['nom'] : "";
    $prenom=!empty($_POST['prenom']) ? $_POST['prenom'] : "";
    $num_tel=!empty($_POST['num_tel']) ? $_POST['num_tel'] : "";
    $mail=!empty($_POST['mail']) ? $_POST['mail'] : "";
    
    //---------------------------------------------//
    //on traite la demande
    //---------------------------------------------//
    $reqClient="INSERT INTO CLIENT (nom, prenom, num_tel, mail)
                VALUES('". mysqli_real_escape_string($cx_srv, $nom)."'
                    ,'". mysqli_real_escape_string($cx_srv, $prenom)."'
                    ,'". mysqli_real_escape_string($cx_srv, $num_tel)."'
                    ,'". mysqli_real_escape_string($cx_srv, $mail)."'
                )";
    
    
    if(!mysqli_query($reqClient) ){
      //https://www.w3schools.com/php/func_mysqli_error.asp
     echo("Error description: " . mysqli_error($cx_srv));
     exit();
    }else{
      //id nouvellement créé : https://www.w3schools.com/php/func_mysqli_insert_id.asp
      $NumCli=mysqli_insert_id($cx_srv);
      echo " Merci pour votre inscription, votre numéro de compte est le:".$NumCli." avec ce numéro vous pouvez réserver une table.";
      //fermeture de la connexion
      // https://www.w3schools.com/php/func_mysqli_close.asp
      mysqli_close($cx_srv);
    }
    
    ?>
    

    Au passage, je t'invite à lire les liens qui sont dans les commentaires du code
    ainsi que celui-ci
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    .
    1
    1. Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
       
      Voilà ce que j'obtient en message d'erreur "Warning: mysqli_connect(): (HY000/1045): Access denied for user 'ROOT'@'localhost' (using password: YES) in C:\www\Les pages du site\connexion.php on line 19
      Failed to connect to MySQL: Access denied for user 'ROOT'@'localhost' (using password: YES)
      Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\www\Les pages du site\insertclient.php on line 39

      Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\www\Les pages du site\insertclient.php on line 40

      Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\www\Les pages du site\insertclient.php on line 41

      Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in C:\www\Les pages du site\insertclient.php on line 42

      Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\www\Les pages du site\insertclient.php on line 46

      Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\www\Les pages du site\insertclient.php on line 48
      Error description:"
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
         
        Tous les messages d'erreur sont causés par le premier

        Access denied for user 'ROOT'@'localhost' (using password: YES) in C:\www\Les pages du site\connexion.php on line 19


        Il semble que les identifiants utilisés ne soient pas les bons...
        et en effet
        $utilisateur="ROOT";
        $motdepasse=" ";
        

        A remplacer par
        $utilisateur="root";
        $motdepasse="";
        
        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Ce qui, au passage, montre bien l'importance de gérer correctement la détection des éventuelles erreurs...
        0
    2. Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
       
      Tout fonctionne, merci beaucoup.
      0
  4. Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
     
    J'ai tout corriger mais ça me met "Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\www\Les pages du site\insertclient.php on line 22

    Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\www\Les pages du site\insertclient.php on line 22
    erreur de connexion"

    Une solution ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Sans voir ton code impossible de t'aider de te répondre
      0
    2. Arkilym Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
       
      Code du fichier "connexion.php"
      <? php
      $serveur="localhost";
      $utilisateur="ROOT";
      $motdepasse=" ";
      $base="leperceneige";
      
      $cx_srv= mysqli_connect($serveur, $utilisateur, $motdepasse);
      
      if($cx_srv==false)
      {
      print "Echec de connexion au serveur " .$serveur. ": Veuillez réessayer.";
      }
      else
      {
      	
      $cx_base= mysqli_select_db($base, $cx_srv);
      if($cx_base==false)
      {			
      print "Echec de connexion à la base " .$base.;
      mysqli_close($cx_srv);
      }
      }
      
      ?>


      Code du fichier "insertclient.php"
      <?php
      
      $Nom=$_POST['nom'];
      $Prenom=$_POST['prenom'];
      $Telephone=$_POST['num_tel'];
      $Mail=$_POST['mail'];
      
      include("connexion.php");
      
      $reqClient="INSERT INTO CLIENT (nom, prenom, num_tel, mail)
      VALUES('$Nom','$Prenom','$Telephone','$Mail')";
      
      mysqli_query($reqClient) or die("erreur de connexion".mysqli_error());
      
      $NumCli=mysqli_insert_id(num_cli);
      
      echo " Merci pour votre inscription, votre numéro de compte est le:".$NumCli." avec ce numéro vous pouvez réserver une table.";
      
      mysqli_close();
      
      ?>


      Formulaire de la page html
      <form action="insertclient.php" method="POST">
      <p><u><h2>Avant de réserver veuillez créer un compte :</u> C'est simple et rapide.</h2></p>
      Nom : <input type="text" name="nom" value=""/> <br>
      Prénom : <input type="text" name="prenom" value=""/> <br>
      Numéro de téléphone : <input type="text" name="num_tel" value=""/> <br>
      Adresse mail : <input id="mail" type="text" name="mail" value=""/> <br><br>
      <input type="submit" value="S'enregistrer"<br style="width: 100px">  <input type="reset" value="Annuler"<br><br><br>
      </form>
      0