Insert INTO

Mammouth du PHP | 702 Messages

09 mai 2008, 07:22

Bonjour, je débute en PHP, je viens de créer un fomulaire qui est censé incrémenter les données récuperées dans la base.
Pour ça je passe par un fichier verif.

Voici le code:
Voici ce qu'il m'affiche
<?php

// on teste si les variables du formulaire sont bien déclarées  
if (isset($_POST['civilite']) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['adresse']) && isset($_POST['ville']) && isset($_POST['code_postal']) && isset($_POST['telephone_fixe']) && isset($_POST['telephone_mobile']) && isset($_POST['e_mail']) && isset($_POST['login']) && isset($_POST['pass_md5'])) 

{ 
      $sql = 'INSERT INTO clients(civilite, nom, prenom, adresse, ville, code_postal, telephone_fixe, telephone_mobile, e_mail, login, pass_md5) VALUES ("$_POST['civilite']","$_POST['nom']","$_POST['prenom']","$_POST['prenom']","$_POST['ville']","$_POST['adresse']","$_POST['code_postal']","$_POST['telephone_fixe']","$_POST['telephone_mobile']","$_POST['e_mail']","$_POST['login']","$_POST['pass_md5']")';
       // on prépare la requête pour récupérer le numero du propriétaire 
      $sql = 'SELECT nom FROM clients WHERE nom = "'.$_POST['nom'].'"'; 
   
      // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
 
      // on récupère le résultat sous forme d'un tableau 
      $data = mysql_fetch_array($req); 
 
      // on libère l'espace mémoire alloué pour cette interrogation de la base 
      mysql_free_result ($req); 
  
      // on ferme la connexion à la base 
      mysql_close(); 
   
      echo 'Nous venons d\'ajouer un nouveau client : '.$_POST['nom'].'<br />'.$_POST['civilite'].$_POST['prenom'].'<br />'.$_POST['adresse'].'<br />'.'<br />'.$_POST['code_postal'].'<br />'.$_POST['ville'].'<br />'.$_POST['telephone_fixe'].'<br />'.$_POST['telephone_mobile'].'<br />'.$_POST['e_mail'].'<br />'.$_POST['login'].'<br />'.$_POST['pass_md5'];  
}  
else { 
      echo 'Les variables du formulaire ne sont pas déclarées';  
      }

?>
Et ce qu'il m'affiche:


Parse error: syntax error, unexpected T_STRING in /mnt/110/sdc/f/3/stan113/espace clients/admin/verif_client.php on line 19


Ici est l'url du formulaire:
http://stan113.free.fr/espace%20clients ... client.php

et celle de la page de vérification:
http://stan113.free.fr/espace%20clients ... client.php

D'avance merci de votre aide...

d0m
Mammouth du PHP | 1141 Messages

09 mai 2008, 09:07

Salut,

l'erreur te dit d'où vient le problème. Par contre nous on ne connait pas tes numéros de ligne, peux tu indiquer quel est la ligne 19?

Eléphant du PHP | 422 Messages

09 mai 2008, 10:11

Concentre toi sur ta ligne INSERT ... Tu as des simples quotes et des doubles quotes qui s'enchevêtrent. Tu devrais avoir quelque chose comme
$sql = "INSERT INTO ... VALUES ('".$_POST['civilite']."', '".$_POST['nom']."', '" ...
Attention : il faut que tu gères la présence d'apostrophes dans les noms, prénoms, ...

Autre problème, fonctionnel celui-là : il faut que tous les champs soient remplis pour pouvoir s'inscrire ? Un type qui a un fixe et pas de portable ne peut pas s'inscrire dans ta base ?
$sql = 'SELECT nom FROM clients WHERE nom = "'.$_POST['nom'].'"'; 
Ca c'est une question qui signifie : "donne-moi le nom de famille d'une personne dont le nom de famille est Dupont." Est-ce que c'est VRAIMENT la question que tu veux poser ?

Mammouth du PHP | 702 Messages

09 mai 2008, 18:02

Merci à vous, cela fonctionne.
en fait il s'agit d'un espace client, donc c'est nous qui inscrivont les membres. Ce problème et résolu, cependant j'en ai un autre. Puis-je poster ici ou un nouveau post doit être établi?
Si le nouveau problème est une suite de celui la...

Bon, je poste quand même:

Voila en fait, suite au login et au pass définis, je créé un espace pour le membre, ou il peut consulter et modifier certaines informations, donc voici le code:

Code : Tout sélectionner

<? //insertion de fichier de configuration require("infos/config.inc.php"); // connection et selection de la base ce donnée $connect=mysql_connect($host,$login,$pass) or die ("Connection impossible"); mysql_select_db($base,$connect) or die ("selection impossible"); ?> <?php // on teste si le visiteur a soumis le formulaire de connexion if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') { if ((isset($_POST['loginclient']) && !empty($_POST['loginclient'])) && (isset($_POST['pass_md5']) && !empty($_POST['pass_md5']))) { // on teste si une entrée de la base contient ce couple login / pass $sql = 'SELECT count(*) FROM clients WHERE loginclient="'.mysql_escape_string($_POST['loginclient']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass_md5'])).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); mysql_free_result($req); mysql_close(); // si on obtient une réponse, alors l'utilisateur est un membre if ($data[0] == 1) { session_start(); $_SESSION['loginclient'] = $_POST['loginclient']; header('Location: membre.php'); exit(); } // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe elseif ($data[0] == 0) { $erreur = 'Compte non reconnu.'; } // sinon, alors la, il y a un gros problème :) else { $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; } } else { $erreur = 'Au moins un des champs est vide.'; } } ?> <html> <head> <title>CONNEXION A VOTRE ESPACE CLIENTS</title> <meta name="generator" content="Namo WebEditor v5.0"> </head> <body> Connexion à votre espace client :<br /> <form action="index.php" method="post"> Login : <input type="text" name="loginclient" value="<?php if (isset($_POST['loginclient'])) echo htmlentities(trim($_POST['loginclient'])); ?>"><br /> Mot de passe : <input type="password" name="pass_md5" value="<?php if (isset($_POST['pass_md5'])) echo htmlentities(trim($_POST['pass_md5'])); ?>"><br /> <input type="submit" name="connexion" value="Connexion"> </form> <?php if (isset($erreur)) echo '<br /><br />',$erreur; ?> </body> </html>
Le premier client porte le login:
fbi
et le pass:
123456
(Il s'agit d'un test), cependant quand je fait une connexion sur le compte client, il m'affiche l'erreur du compte non reconnu.
Image

Voici aussi le code de la page membre.php

Code : Tout sélectionner

<?php session_start(); if (!isset($_SESSION['loginclient'])) { header ('Location: index.php'); exit(); } ?> <html> <head> <title>Espace Client</title> <meta name="generator" content="Namo WebEditor v5.0"> </head> <body> Bienvenue <?php echo htmlentities(trim($_SESSION['loginclient'])); ?>!<br /> <a href="deconnexion.php">Déconnexion</a> </body> </html>
D'avance merci de vos éclaircissements sur le problème.