Probleme de liaison avec base mysql et formul

[Résolu/Fermé]
Signaler
Messages postés
6
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
28 juin 2008
-
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
-
Bonjour,

Il y a plusieurs heures que j'essaye de lier mon formulaire et ma base mysql;
La dernière réponse de la base est: "L'insertion a echouée car Query was empty"

j'ai consulté de nombreux tutos et je n'arrive pas a aboutir.

J'ai compris qu'il fallait créer deux pages;
une pour le formulaire et l'autre pour le transfert des données à la base.

C'est ce que j'ai fait;

voici mes codes:

page 1: index2.php (formulaire)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>formulaireclient</title>
</head>
<body bgcolor="#FFFFFF">
<form id="form1" name="contactclient" method="post" enctype="multipart/form-data" action="merci.php">
<td width="372"><table width="600">
<tr>
<td>Prénom</td>
<td><input type="text" name="prenom" /></td>
</tr>
<tr>
<td>Nom</td>
<td><input type="text" name="nom" /></td>
</tr>
<tr>
<td>Adresse</td>
<td><input type="text" name="adresse" /></td>
</tr>
<tr>
<td>Cp</td>
<td><input type="text" name="cp" /></td>
</tr>
<tr>
<td>Ville</td>
<td><input type="text" name="ville" /></td>
</tr>
<tr>
<td>Télèphone fixe</td>
<td><input type="text" name="telfixe" /></td>
</tr>
<tr>
<td>Portable</td>
<td><input type="text" name="portable" /></td>
</tr>
<tr>
<td>Fax</td>
<td><input type="text" name="fax" /></td>
</tr>
<tr>
<td>E-mail</td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Type Investisseur</td>
<td><select name="typeclient">
<option>Acheteur</option>
<option>Vendeur</option>
</select></td>
</tr>
<tr>
<td>Etes vous déja investisseur?</td>
<td><select name="dejainvest">
<option>OUI</option>
<option>NON</option>
</select></td>
</tr>
<tr>
<td>Type de bien </td>
<td><select name="typebien">
<option>Studio</option>
<option>Appartement</option>
<option>Maison de ville</option>
<option>Immeuble de rapport</option>
<option>Meublé</option>
<option>Autres</option>
</select></td>
</tr>
<tr>
<td>Budget</td>
<td><select name="budget">
<option>50 à 100 000 €</option>
<option>100 à 150 000 €</option>
<option>150 à 200 000 €</option>
<option>200 à 300 000€</option>
<option>300 à 500 000 €</option>
<option>500 000 à 1 million €</option>
<option>+ de 1 Million</option>
</select></td>
</tr>
<tr>
<td>Région ou Ville</td>
<td><input type="text" name="region" /></td>
</tr>
<tr>
<td>Observations</td>
<td><textarea name="observations" rows="10" wrap="virtual" cols="45"></textarea></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="Envoyer" />
</div></td>
<td><div align="center">
<input type="reset" name="Submit2" value="Réinitialiser" id="Submit" />
</div></td>
</tr>
</table>
</form>
</body>
</html>

Page 2 (merci.php) page de reception

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php

// parametres d'access
$base='baseamphitrion';
$login='baseamphitrion';
$pwd= 'mot de passe';
$host="mon serveur";

// connection au serveur
$db=mysql_connect($host, $login, $pwd) or die('Erreur de connexion');

if(!$db)
{
print "erreur connection $db";
exit;
}

// on choisit la bonne base
if(!mysql_select_db($base,$db)){
print "erreur ".mysql_error()."<br>";
mysql_close($db);
exit;
}
$resultat = mysql_query($query)
or die("L'insertion a echouée car ". mysql_error() .".");

// on ferme la base
mysql_close($db);

?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


<title>pagede reception</title>


</head>
<body>
<?php
$prenom=$_POST['prenom'];
$nom=$_POST['nom'];
$adresse=$_POST['adresse'];
$cp=$_POST['cp'];
$ville=$_POST['ville'];
$telfixe=$_POST['telfixe'];
$portable=$_POST['portable'];
$email=$_POST['email'];
$typeclient=$_POST['typeclient'];
$dejainvest=$_POST['dejainvest'];
$datecontact=$_POST['datecontact'];
$typebien=$_POST['typebien'];
$budget=$_POST['budget'];
$region=$_POST['region'];
$observations=$_POST['observations'];

/* puis faire la requete : */
$query = "INSERT INTO baseamphitrion VALUES('$prenom','$nom','$adresse','$cp','$telfixe','$telfixe','$portable','$fax','$email', '$typeclient','$dejainvest','$datecontact', '$typebien','$budget','$budget','$region','$observations' )";
?>



</body>

</html>

J'ai recopié et adapté ces scripts de différents tutos.

Question subsidiaire si vous avez le temps !: comment faire quand il y a plusieurs tables dans la base ???


Merci pour votre aide

3 réponses

Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
118
Bonsoir,
Je pense que ton soucis vient du fait que tu fait ta requête avant de déclarer ton $query, d'où ton message d'erreur de "query was empty". D'autre part je me permet de te rajouter un else {}, en effet dans le script que tu as donné tu aurais eu plusieurs messages d'erreurs s'additionnant en cas de mauvais mysql_select_db
Correction :
Page 2 (merci.php) page de reception

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php

// parametres d'access
$base='baseamphitrion';
$login='baseamphitrion';
$pwd= 'mot de passe';
$host="mon serveur";

// connection au serveur
$db=mysql_connect($host, $login, $pwd) or die('Erreur de connexion');

if(!$db)
{
print "erreur connection $db";
exit;
}

// on choisit la bonne base
if(!mysql_select_db($base,$db))
{
  print "erreur ".mysql_error()."<br>";
  mysql_close($db);
  exit;
}
else
{ 
  
  ?>
  <html>

  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


  <title>pagede reception</title>


  </head>
  <body>
  <?php
  $prenom=$_POST['prenom'];
  $nom=$_POST['nom'];
  $adresse=$_POST['adresse'];
  $cp=$_POST['cp'];
  $ville=$_POST['ville'];
  $telfixe=$_POST['telfixe'];
  $portable=$_POST['portable'];
  $email=$_POST['email'];
  $typeclient=$_POST['typeclient'];
  $dejainvest=$_POST['dejainvest'];
  $datecontact=$_POST['datecontact'];
  $typebien=$_POST['typebien'];
  $budget=$_POST['budget'];
  $region=$_POST['region'];
  $observations=$_POST['observations'];

  /* puis faire la requete : */
  $query = "INSERT INTO baseamphitrion VALUES('$prenom','$nom','$adresse','$cp','$telfixe','$telfixe','$portable','$fax','$email'­, '$typeclient','$dejainvest','$datecontact', '$typebien','$budget','$budget','$region','$observations' )";
  $resultat = mysql_query($query)
  or die("L'insertion a echouée car ". mysql_error() .".");

  // on ferme la base
  mysql_close($db);
}
?>



</body>

</html> 
Voilà ça devrait fonctionner comme ça.
Je me permet quand même de te dire que ton script tel quel est très vulnérable. En effet, il est plus que recommandé d'échapper toutes les variables reçues par POST et GET. Je te laisse te renseigner tout seul là dessus car c'est comme ça que l'on apprend le mieux mais tu verras c'est vraiment pas compliquer.

Et sinon j'ai pas compris la question subsidiaire... Comment faire quoi si l'on a plusieurs tables ? Si c'est l'insertion, tu peux tout simplement faire plusieurs requêtes à se suivre, la première pour insérer dans la table 1, la seconde pour insérer dans la table 2, etc

En espérant que j'ai été assez clair.
Messages postés
6
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
28 juin 2008

Bonjour et merci pour ta réponse;

J'obtiens maintenant la réponse suivante: "L'insertion a échouée car Table 'baseamphitrion.baseamphitrion' doesn't exist."

/* puis faire la requete : */
$query = "INSERT INTO baseamphitrion

c'est à ce niveau que cela pourrait clocher ?


En ce qui concerne ma question sur les tables, je voulais dire que ma base comporte 2 tables différentes et que je me demandais si il ne fallait pas préciser dans le script le nom de la table qui contient les champs concernés.

Jai essayé INSERT INTO baseamphitrion clients (nom de ma table) et j'ai reçu:

"L'insertion a echouée car You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'clients VALUES('Michel','COPIN','32 rue d\'hébuterne','59126','0320465020','0613' at line 1."

Merci pour ton aide.

je précise aussi que je débute en php et que la première partie du script m'a été donné par mon hébegeur online.net
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
118
Pour ton premier message d'erreur, ça vient du fait que, apparemment, tu n'as pas de table "baseamphitrion" dans ta base "baseamphitrion". Dans la requète INSERT INTO, tu dois mettre le nom de la table dans laquelle tu veux insérer tes données et non le nom de la base de données que tu utilises. Ce nom tu le donnes déja avec le "mysql_select_db".

Et pour la deuxième partie, en fait c'est exactement la même réponse que la première partie ;) Tu mets le nom de la table dans laquelle tu veux insérer tes données après le INSERT INTO
Ex :
  $query = "INSERT INTO clients VALUES('$prenom','$nom','$adresse','$cp','$telfixe','$telfixe','$portable','$fax','$email'­­, '$typeclient','$dejainvest','$datecontact', '$typebien','$budget','$budget','$region','$observations' )";

une petite documentation si je ne suis pas clair : ici
Messages postés
6
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
28 juin 2008

Merci beaucoup pour tes conseils; cela fonctionne maintenant!
Messages postés
409
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
118
De rien ce fut un plaisir