romain14g59
Messages postés74Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention26 mai 2011
-
10 sept. 2006 à 11:21
romain14g59
Messages postés74Date d'inscriptionjeudi 5 janvier 2006StatutMembreDernière intervention26 mai 2011
-
12 sept. 2006 à 12:48
Bonjour a tous je vient de creer un formulaire mais j'ai un probléme lors de l'enregistrement.
En clair quand je valide mon formulaire rien ne s'enregistre dans la base mysql.
Es parce que j'ai trop de champ???
// déclaration de quelques variables
$user="root";
$host="localhost";
$pass="";
$bdd ="pmu_1";
$table = "test_2";
// connection avec MySQL
@mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données"); // Le @ indique à php de ne pas afficher de message d'erreur
@mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");
// affichage sélection
echo 'Enregistrement de la course ' . htmlentities($_POST['nom']) . ', le ' . htmlentities($_POST['datecourse']) . ', sur une distance de ' . htmlentities($_POST['email']) . 'a ' . htmlentities($_POST['lieucourse']) . '
franco_se
Messages postés151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 12 sept. 2006 à 02:02
je t'ai legerement modifier le script:
- j'ai supprimer l'input hidden 'action', et j'ai renomé le bouton submit en "action".
- le script verifie l'existance de $_POST['action'] , comme dit pas malalam[auteurdetail.aspx?ID= 58031 ]
- le switch a été sucré
- l'utilisation de addslash n'est plus subordoné a l'absence de get_magic_quotes_gpc
en principe, ça devrait tres bien marcher.
au fait, tu a des champs de 27.5 px .... c'est impossible, je les ai mis a 27
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<title>Interfacage de MySQL avec PHP</title>
<link rel="stylesheet" type="text/css" media="all" href="exemples.css" />
</head>
Gestion PMU
<?php
if (isset($_POST['action']) && $_POST['action'] == "Inserer" ){
// déclaration de quelques variables
$user="root";
$host="localhost";
$pass="";
$bdd ="pmu_1";
$table = "test_2";
// connection avec MySQL
@mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données");
// Le @ indique à php de ne pas afficher de message d'erreur
@mysql_select_db($bdd) or die("Impossible d'accéder a la table");
// affichage sélection
echo 'Enregistrement de la course ' . htmlentities($_POST['nom']) . ', le ' . htmlentities($_POST['datecourse']) . ', sur une distance de ' . htmlentities($_POST['email']) . 'a ' . htmlentities($_POST['lieucourse']) . '
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 10 sept. 2006 à 12:25
Hello,
plusieurs choses :
- mets error_reporting (E_ALL); en début de page. Ca règlera la gestion des erreurs correctement, et tu verras les erreurs produites dans tons cript.
- tu as un bouton de type submit pour valider ton formulaire. Sa valeur est "Ok", son nom est "Submit" (mauvaise idée...au passage). Tu as un champ de type caché qui s'appelle action et qui a pour valeur "insérer".
- en début de page, tu testes un $_POST['action'] (problème déjà : tu le testes sur sa valeur sans te demander s'il existe!) et tu switches sur sa valeur. En clair, tu testes le champ caché de ton formulaire. Pourquoi pas. Sauf que tu devrais déjà tester l'existence de cette variable hein, parce que quand tu arrives la 1ère fois sur ta page, elle n'existe pas! (tu le verras avec error_reporting (E_ALL);
Bref, sans avoir regardé le code plus en détail, ça devrait à peu près fonctionner. Ca doit donc se situer au niveau de la requête, ou de l'arrivée dans le switch.
Plusieurs trucs à faire pour débugger : vire les @... devant tes fonctions (ça masque les erreurs...pas pratique pour débugger) (d'ailleurs, même en prod, si tu utilises @, pense à attraper toute erreur : if (false === @fonction) {// gestion de l'erreur}).
Tu verras si tu arrives à te connecter. Mets un echo 'test' aussi dans le case de ton switch pour voir si tu entres bien dans le cas "inserer".
Bref, faut debugger. echo est trsè pratique pour ça, travailler au niveau de log des erreurs le plus élevé, et tester le retour de toutes tes fonctions! : if (false ($res mysql_query ($query))) {echo 'erreur, la requête n\'a pas pu aboutir : '.mysql_error();}