Insérer des données dans sa base à l'aide de formulaire

Répondre
lythis
le 19/04/2010 à 16:48
lythis
Bonjour, voilà mon souci, j'essaye d'insérer des nouvelles données dans ma base à partir d'un formulaire que je remplis. Cependant quand je le test rien ne se passe et je n'ai même pas de message d'erreur ? Je ne comprends pas d'où vient le problème. Si vous pouviez m'aider cela serait gentil.

Voici le code de la page php:
<html>
<head>
<title>Projet</title>
</head>
<BODY bgcolor=58C3F2>
<?php

//on vérifie que le champ est bien rempli:

if (!isset($_REQUEST["code_enseignant"])||!isset($_REQUEST["civilite"])||!isset($_REQUEST["Nom"])||!isset($_REQUEST["Prenom"])||!isset($_REQUEST["Statut"])) {

exit;
}

//connection au serveur:
$connexion = mysql_connect( "localhost", "root", "" ) ;

// Test de la connexion
if (!$connexion) {
echo "La connexion au serveur n'a pu être établie<BR>";
exit;
}

//Test de l'accès à la base
if (!mysql_select_db("projetweb",$connexion)) {
echo "L'accès à la base n'est pas permis<BR>";
exit;
}

// récupération des variables du formulaire
$Code_enseignant=$_REQUEST["code_enseignant"];
$Civilite=$_REQUEST["civilite"];
$Nom=$_REQUEST["Nom"];
$Prenom=$_REQUEST["Prenom"];
$Statut=$_REQUEST["Statut"];

// Requete SQL

$sql="INSERT INTO enseignants (code_enseignant, civilité, Nom, Prenom, Statut) VALUES ('$Code_enseignant', '$Civilite', '$Nom', '$Prenom','$Statut')";

// execution SQL

$interrogation=mysql_query($sql,$connexion);

// on ferme la connexion à la base
mysql_close();



if($interrogation)
{
echo 'Nous venons d\'insérer un nouvel enseignant :'.$_REQUEST["civilité"] .$_REQUEST["Nom"].$_REQUEST["Prenom"];
}

else {
echo 'Les variables du formulaire ne sont pas déclarées';
}

?>

</body>
</html>


Merci beaucoup de votre aide! Je me suis déjà servi des cours en ligne sur ce site mais je n'arrive pas à voir d'où vient l'erreur :(.

En espérant que vous pourrez m'aider ^^
anasha
le 19/04/2010 à 16:53
anasha
Hello,

Peux-tu fournir le code du form plz ?
Anasha [php-kiche-nomore]
lythis
le 19/04/2010 à 17:07
lythis
oups oui pardon ^^

le voici :

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Ajouter un enseignant</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<FORM ACTION="add_enseignants.php">

</div>
<!-- header ends -->
<!-- content begins -->
<div align=justify id="content">
<h1><br>Ajouter un enseignant</br></h1>

<div class="text">
<span><br>Veuillez remplir le formulaire ci dessous et appuyer sur "Envoyer" pour confirmer<hr><hr><hr><hr><hr>
Numéro enseignant:<input type="text" name="code_enseignant">
<hr><hr><hr><hr><hr><hr><hr>
Civilite:&nbsp;&nbsp; Mr<input type="radio" value="Mr" name="civilite"checked>&nbsp;&nbsp;&nbsp;Mme<input type="radio" value="Mme" name="civilite">&nbsp;&nbsp;&nbsp;Mlle<input type="radio" value="Mlle" name="civilite">
<hr><hr><hr><hr><hr><hr><hr>
Nom de l'enseignant: <input type="text" name="Nom">
<hr><hr><hr><hr><hr><hr><hr>
Pr&eacute;nom de l'enseignant: <input type="text" name="Prenom">
<hr><hr><hr><hr><hr><hr><hr>
Statut de l'enseignant:<select name="Statut">
<option value="Professeur">Professeur</option>
<option value="Enseignant chercheur">Enseignant chercheur</option>
</select>
</div>
<Div align=center>
<input type=submit value=" Envoyer ">

</div>


<!-- content ends -->
<!-- footer begins -->
<div id="footer">


</FORM>
</body>
</html>


J'ai enlevé quelques passages inutiles pour que ca reste clair
dark_nemo
le 20/04/2010 à 15:24
dark_nemo
Pour débugger tu peux faire quelque chose comme ça

print_r($_REQUEST); ça va te retourner l'ensemble du tableau associatif envoyer lorsque tu cliques sur ton bouton envoyer. ça va te permettre de voir les données envoyer et de voir ou ça coince.

Juste un truc en passant. $_REQUEST c'est pas terrible comme méthode...utilises plutot $_POST ou $_GET tu auras plus de chance de savoir d'où viennent tes données. Pour utiliser $_POST et $_GET ajouter method="post" ou method="get" à ta balise form
lythis
le 20/04/2010 à 22:57
lythis
Merci beaucoup dark_nemo ! je vais essayer ta méthode et changer le $_REQUEST :)
LupusMic
le 21/04/2010 à 01:04
LupusMic
Pour information, la présence de l'attribut method de la balise form est implicite avec une valeur par defaut à GET. La création des tableaux $_GET et $_POST n'est pas conditionnée par cet attribut HTML.

Par contre, je plus-une l'usage de GET et POST en opposition à REQUEST (qui mélange les paramètres GET, POST et COOKIE).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
lythis
le 21/04/2010 à 12:38
lythis
J'ai effectué les changements mis $_post à la place des $_request changé la méthode dans la balise form. A la fin de mon script j'avais mis un message d'erreur au cas où les variables ne soient pas déclarées et c'est cela qui s'affiche.

Mais je ne comprend pas j'ai pourtant mis les bons noms qui correspondent aux balises "name" du formulaire ?
dark_nemo
le 21/04/2010 à 18:22
dark_nemo
En fait la réponse est simple tu tests l'existance de tes données alors que ton formulaire n'a pas encore été complété donc dès le début tu entres dans la condition et ton exit; arrête le script.

Tu dois tester que ton bouton submit à bien été appuyer avant de tester les données du formulaire.

exemple :
<?php
if(isset($_POST['envoyer']))
{
echo'formulaire envoyé';
//là je test mes données
}
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" method="post">
<input type="submit" name="envoyer">
</form>


Puis il serait bien que tu écrives un message d'erreur pour chaques champs obligatoire.

Un peu comme ça :

<?php

$champ1 = isset($_POST['champ1']) ? $_POST['champ1'] : '';

if(empty($champ1))
{
echo'Vous devez remplir le champ 1';
}
?>
lythis
le 22/04/2010 à 12:37
lythis
Ok merci beaucoup, j'ai fais les corrections et ca marche !! Merci de votre aide ca m'a été utile ^^
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours