Problème PHP / Base de donnée

Résolu
Arkilym Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Arkilym Messages postés 14 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.
A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Arkilym Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
C'est du rapide, je prend note de tout ça. Merci beaucoup.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
<?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
Arkilym Messages postés 14 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Arkilym Messages postés 14 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 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
Arkilym Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Tout fonctionne, merci beaucoup.
0
Arkilym Messages postés 14 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Sans voir ton code impossible de t'aider de te répondre
0
Arkilym Messages postés 14 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