Problème PHP / Base de donnée

Résolu/Fermé
Arkilym Messages postés 14 Date d'inscription samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019 - 18 mai 2019 à 15:26
Arkilym Messages postés 14 Date d'inscription samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019 - 19 mai 2019 à 13:21
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

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 mai 2019 à 16:12
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 mai 2019 à 16:13
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 samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019
18 mai 2019 à 16:34
C'est du rapide, je prend note de tout ça. Merci beaucoup.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 18 mai 2019 à 23:04
<?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 samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019
19 mai 2019 à 09:22
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Arkilym Messages postés 14 Date d'inscription samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019
19 mai 2019 à 10:49
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
19 mai 2019 à 10:57
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 samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019
19 mai 2019 à 13:21
Tout fonctionne, merci beaucoup.
0
Arkilym Messages postés 14 Date d'inscription samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019
18 mai 2019 à 19:07
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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
18 mai 2019 à 20:41
Sans voir ton code impossible de t'aider de te répondre
0
Arkilym Messages postés 14 Date d'inscription samedi 18 mai 2019 Statut Membre Dernière intervention 21 novembre 2019
18 mai 2019 à 22:15
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