Page 1 sur 1

formulaire d'insert raté

Posté : 27 oct. 2008, 12:29
par Cypher_PHP
Bonjour mes chers

le résultat d'insertion:
une fois le formulaire rempli, le script se charge d'insérer. malheureusement, il ne prend que l'id_tuteur puisqu'il s'incrémente. donc les champs nom et prenom sont par remplis par un vide
je pense que la récupération de ces champs par un post n'es pas réussie?

avez-vous une idée du problème?

je vous remercie beaucoup de vos réponses
|id_tuteur|nom|prenom|
|1|||
|2|||
voici mon code source:
<?php

$host 		=	"xxx";
$dbbase		=	"xxx";
$dblogin	=	"xxxx";
$dbpass		=	"xxx";

$connect = mysql_connect($host,$dblogin,$dbpass) or die('Erreur de connexion '.mysql_error());
$select	=	mysql_select_db($dbbase, $connect) or die('Erreur de selection '.mysql_error());
$sql	=	"INSERT INTO tuteur (id_tuteur, nom, prenom) VALUES('','$nom','$prenom')	";
$req	=	mysql_query($sql)or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

$_POST['nom'] =	$nom;
$_POST['prenom'] =	$prenom;


// include du fichier header
	include("header.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title></title>
</head>
<body>
<form method="POST" action="list_tuteur.php" name="Form_addtuteur"><br>
  <div style="text-align: center;"><span style="font-weight: bold;">Formulaire de création de tuteur</span><br>
  </div>
  <br>
  <br>
  <table style="width: 641px; height: 112px; text-align: left; margin-left: auto; margin-right: auto;";
   border="0" cellpadding="2" cellspacing="2">
    <tbody>
      <tr style="background-color: #BBCC33;">
        <td style="text-align: right;color:black">Nom de tuteur</td>
        <td> <input type="text" name="nom"></td>
      </tr>
      <tr style="background-color: #ddff00;">
        <td style="text-align: right;color:black">Prénom de tuteur</td>
        <td><input type="text" name="prenom" ></td>
      </tr>
      <tr >
	    <td colspan="2" style="text-align: center;">
	      <input type="submit" name="add_tuteur" value="Créer">
	      <input type="reset" name="reset" value="Effacer">
      	</td>
      </tr>
    </tbody>
  </table>
</form>



</body>
</html>
<?php

//	include du fichier footer
	include("footer.php") ;
?>

Re: formulaire d'insert raté

Posté : 27 oct. 2008, 12:36
par Victor BRITO
$_POST['nom'] =	$nom;
$_POST['prenom'] =	$prenom;
Inverse l'ordre :
$nom = $_POST['nom'] ;
$prenom = $_POST['prenom'];
De plus, corrige ta requête comme suit :
$sql    =    "INSERT INTO tuteur (id_tuteur, nom, prenom) VALUES('','".mysql_real_escape_string($nom)."','".mysql_real_escape_string($prenom)."')    ";
afin de te prémunir d'attaques par injonction SQL.

De plus, si la colonne id_tuteur comporte un système d'auto-incrémentation, il est inutile de la mentionner dans la requête d'insertion : par conséquent, tu peux te contenter de la requête suivante :
$sql    =    "INSERT INTO tuteur (nom, prenom) VALUES('".mysql_real_escape_string($nom)."','".mysql_real_escape_string($prenom)."')    ";

Posté : 27 oct. 2008, 12:37
par agité
<?php
$sql    =    "INSERT INTO tuteur (id_tuteur, nom, prenom) VALUES('','$nom','$prenom')    ";
$req    =    mysql_query($sql)or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

$_POST['nom'] =    $nom;
$_POST['prenom'] =    $prenom;

?>
Si tu définis tes variables après l'insertion.

Posté : 27 oct. 2008, 12:38
par Victor BRITO
Si tu définis tes variables après l'insertion.
Bien vu. ;)

Posté : 27 oct. 2008, 12:55
par Cypher_PHP
merci pour vos réponses

toutefois, le résultat est toujours le même: des champs vides.
Je viens de m'apercevoir qu'en ouvrant la page de formulaire, le script s'exécute avant que je remplisse le formulaire

Re: formulaire d'insert raté

Posté : 27 oct. 2008, 12:59
par Victor BRITO
Modifie le code comme suit, afin de vérifier si le formulaire est soumis ou pas.
if (isset ($_POST['nom']) && isset ($_POST['prenom']))
{
  // Ici les instructions pour l'insertion dans la base de données
}

Posté : 27 oct. 2008, 13:10
par Cypher_PHP
merci beaucoup

j'avais pas pensé à cette condition
je vais même ajouter:
if (isset ($_POST['nom'])&&($_POST['nom']!='') && isset ($_POST['prenom'])&&($_POST['prenom']!=''))
encore merci

je mets mon post en résolu

Posté : 27 oct. 2008, 13:12
par Victor BRITO
je vais même ajouter:
if (isset ($_POST['nom'])&&($_POST['nom']!='') && isset ($_POST['prenom'])&&($_POST['prenom']!=''))
Tu peux l'écrire plus proprement comme suit :
if (isset ($_POST['nom']) && !empty ($_POST['nom']) && isset ($_POST['prenom']) && !empty ($_POST['prenom']))