Rechercher : dans
Par :

[PHP/SQL] Insertion données

Dernière réponse le 27 sep 2008 à 19:26:19 ed, le 15 avr 2007 à 00:13:26 
 Signaler ce message aux modérateurs

Bonsoir,
Cela fait quelques semaines que je patauge sur une requête simple même pour un débutant.
Je cherche à alimenter une table sql par un formulaire php.

J'ai visité nombres de forums et de tutos que j'ai suivi à la lettre... enfin je crois.
En réalité, il ne se passe rien. Quand je teste ma requete sql dans sql, cela fonctionne mais qd je suis dans mon formulaire, cela ne fonctionne pas. Qui pourrait m'aider ?

<?php
// Connexion avec fichier include
include('connexion/connexion_inc.php');

// -- on récupère les champs --
if(isset($_POST['nom'])) $nom = $_POST['nom'];else $nom="";
if(isset($_POST['prenom'])) $prenom = $_POST['prenom'];else $prenom="";
if(isset($_POST['DateNaiss'])) $DateNaiss = $_POST['DateNaiss'];else $DateNaiss="";
if(isset($_POST['LieuNaiss'])) $LieuNaiss = $_POST['LieuNaiss'];else $LieuNaiss="";
if(isset($_POST['PrenomPere'])) $PrenomPere = $_POST['PrenomPere'];else $PrenomPere="";
if(isset($_POST['PrenomMere'])) $PrenomMere = $_POST['PrenomMere'];else $PrenomMere="";
if(isset($_POST['NomMere'])) $NomMere = $_POST['NomMere'];else $NomMere="";

if (empty($prenom)) {
ECHO $message = 'Attention, le champ Prénom est obligatoire.';
}
else {
$req = "INSERT INTO
fichierglobal('id', 'nom', 'prenom', 'DateNaiss', 'LieuNaiss', 'PrenomPere', 'PrenomMere', 'NomMere')
VALUES('', $nom, $prenom, $DateNaiss, $LieuNaiss, $PrenomPere, $PrenomMere, $NomMere);";

mysql_query($req)or die('Erreur SQL !'.$req.'<br>'.mysql_error());
header("Location: merci.php");
}
?>
Merci à tous ceux qui m'apporteront un début de solution
ed

Configuration: Windows XP
Firefox 1.5.0.11

Meilleures réponses pour « [PHP/SQL] Insertion données » dans :
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...

1

gryzzly, le 15 avr 2007 à 00:20:36
  • +1

Est ce que ca ne viendrait pas des parametres de ton fichier conexion_inc.php ?

Répondre à gryzzly

2

ed, le 15 avr 2007 à 00:28:35

Hello Gryzzly,

Pour le moment, je suis en local et mes autres requetes, (du style, j'affiche des données de ma base sql) fonctionnent.
Je ne pense pas que cela vienne de là.

<?php
--------------------------------------------------------
// Paramètres de la connexion
$hote = 'localhost';
$login = 'root';
$pass = '';
$base = 'xxxxx';
// Connexion
$idConn = mysql_connect($hote, $login, $pass);
// Sélection de la base
mysql_select_db($base) or die(mysql_error());
?>

ed

Répondre à ed

3

gryzzly, le 15 avr 2007 à 01:46:59
  • +1

Alors je pense que ca vient du formulaire en lui même, pas la partie sql qui me semble correcte. donne nous ton code qu'on regarde

Répondre à gryzzly

4

ed, le 15 avr 2007 à 10:43:03

Le formulaire ressemble à ceci:
<form id="formun" name="formun" method="post" action="">
<table >
<tr >
<td >Nom :</td>
<td ><select name="nom" id="nom">
<?php
//-------------------------------------------------------------------------
// La boucle d'affichage des patros dans le menu déroulant commence ici...
while ($aPatro = mysql_fetch_array($resPatro)) {

?>
<option value="<?php echo $aPatro['idPatro']; ?>"><?php echo $aPatro['nom']; ?></option>
<?php
}
//-------------------------------------------------------------------------
?>
</select>
</td>
<td >Prénom :</td><td><input type="text" id="prenom" value="" size=25></td>
</tr>
<tr>
<td>Date Naissance :</td><td><input type="text" id="DateNaiss" value="" size=25></td>
<td>Lieu Naissance :</td><td><input type="text" id="LieuNaiss" value="" size=25></td>
</tr>
<tr>
<td>Prénom du Père :</td><td><input type="text" id="PrenomPere" value="" size=22></td>
</tr>
<tr>
<td>Prénom de la Mère :</td><td><input type="text" id="PrenomMere" value="" size=22></td>
<td>Nom de la Mère :</td><td><input type="text" id="NomMere" value="" size=22></td>
</tr>
<tr >
<td ><input type="submit" name="boutonAjouter" id="boutonAjouter" value="Ajouter" /></td><td class="attention" ><?php if (isset($message)) echo $message;?></td>
</tr>
</table>

Merci encore de votre aide
ed

Répondre à ed

5

gryzzly, le 15 avr 2007 à 12:28:37
  • +1

Bon, perso je bloque... mes courtes connaissances ne doivent pas être suffisantes. mais je suis sur que qq'un va trouver!

Répondre à gryzzly

6

ed, le 15 avr 2007 à 14:20:48

Hello Gryzzly et merci pour ton aide.
Dans un sens cela me rassure. Je comprends pkoi je tourne en rond depuis des semaines. Je ne vois pas ou ça cloche et je ne sais pas faire les tests qui pourraient me donner un début de solution.

En espérant que qqun pourra m'éclairer.
ed

Répondre à ed

7

ed, le 15 avr 2007 à 15:01:33

Je peux fournir deux indications de "test"

1- le message "attention le champ.... est obligatoire" s'affiche alors que je n'ai pas encore pressé le bouton "Ajouter"...

2- après validation par "Ajouter", leformulaire se vide des informations et n'est pas redirigé vers la page "merci.php".

Déjà ces deux points sont un pb.
Merci
ed

Répondre à ed

8

gryzzly, le 15 avr 2007 à 20:48:24
  • +1

Salut,
j'ai revu tes fichiers, voila mes commentaires, sans garantie 100% de résultat... :

1) connexion_inc.php :
dans ton fichier de connexion , il me semble qu'il manque (en gras) :

<?php
--------------------------------------------------------
// Paramètres de la connexion
$hote = 'localhost';
$login = 'root';
$pass = '';
$base = 'xxxxx';
// Connexion
$idConn = mysql_connect($hote, $login, $pass);
// Sélection de la base
mysql_select_db($base,$idConn) or die(mysql_error());
?>

2) le formulaire :

dans ton formulaire, action n'est pas déclaré :

<form id="formun" name="formun" method="post" action="envoi.php">

(si ton fichier s'appelle envoi.php)

3) envoi.php :

voici ce que je ferais :

<?php
// Connexion avec fichier include
include('connexion/connexion_inc.php');

// -- on récupère les champs --
if(isset($_POST['nom'])) $nom = $_POST['nom'];else $nom="";
if(isset($_POST['prenom'])) $prenom = $_POST['prenom'];else $prenom="";
if(isset($_POST['DateNaiss'])) $DateNaiss = $_POST['DateNaiss'];else $DateNaiss="";
if(isset($_POST['LieuNaiss'])) $LieuNaiss = $_POST['LieuNaiss'];else $LieuNaiss="";
if(isset($_POST['PrenomPere'])) $PrenomPere = $_POST['PrenomPere'];else $PrenomPere="";
if(isset($_POST['PrenomMere'])) $PrenomMere = $_POST['PrenomMere'];else $PrenomMere="";
if(isset($_POST['NomMere'])) $NomMere = $_POST['NomMere'];else $NomMere="";

if (empty($prenom)) {
ECHO $message = 'Attention, le champ Prénom est obligatoire.';
}
else {
$req = "INSERT INTO
fichierglobal('id', 'nom', 'prenom', 'DateNaiss', 'LieuNaiss', 'PrenomPere', 'PrenomMere', 'NomMere')
VALUES('', '$nom', '$prenom', '$DateNaiss', '$LieuNaiss', '$PrenomPere', '$PrenomMere', '$NomMere')";

mysql_query($req)or die('Erreur SQL !'.$req.'<br>'.mysql_error());
header('Location: merci.php');
}

// fermeture de la connexion vers Mysql
mysql_close();

?>

4) redirection :

il faut que merci.php soit bien dans le même dossier que envoi.php, sinon a toi de revoir l'adresse relative ET qu'il n'y ai eu AUCUN affichage html avant, balises comprises, sinon la fonction n'est pas exécutée, en clair que rien ne soit envoyé à l'utilisateur.

je me demande donc si ton ECHO $message = 'Attention, le champ Prénom est obligatoire.'; ne poserais pas probleme

5) euh, j'abandonne la, on m'appelle... regarde ca dejà ;-)

Répondre à gryzzly

9

flattazor, le 27 sep 2008 à 19:15:30

<?php
--------------------------------------------------------
// Paramètres de la connexion
$hote = 'localhost';
$login = 'root';
$pass = '';
$base = 'xxxxx';
// Connexion
$idConn = mysql_connect($hote, $login, $pass);
// Sélection de la base
mysql_select_db($base) or die(mysql_error());
?>


il manque le nom de ta base !

mysql_select_db('nom_de_la _base',$db)

Répondre à flattazor

10

 flattazor, le 27 sep 2008 à 19:26:19

Oups, mea culpa gryzzly, c'est juste pour la connection à la base, il falliat bien mettre $idconnect...

honte à moi

Répondre à flattazor