Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2007, 10h27   #1
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Par défaut [SQL] Problème insertion dans Base SQL après saisie d'un formulaire

J'aimerai ajouter une personne à ma table personnel dont voici la constitution :

Code SQL :
1
2
3
4
5
6
Id_Perso  int(10) AUTO_INCREMENT              
Nom_Perso  varchar(30)              
Prenom_Perso  varchar(30)
Emploi  varchar(100) 
Id_Section  varchar(5)
Salaire_Perso  float(10,0)

Voici le code ma requête sql :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['emploi']) && isset($_POST['section']) && isset($_POST['salaire']))
{
// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
$nom = htmlentities ($_POST['nom'],ENT_QUOTES);
$prenom = htmlentities ($_POST['prenom'],ENT_QUOTES);
$emploi = htmlentities ($_POST['emploi'],ENT_QUOTES);
$section = htmlentities ($_POST['service'],ENT_QUOTES);
$salaire = htmlentities ($_POST['salaire'],ENT_QUOTES);
 
$sql2 = "INSERT INTO personnel (Id_Perso, Nom_Perso, Prenom_Perso, Emploi, Id_Section, Salaire_Perso) VALUES('','$nom','$prenom','$emploi','$service','$salaire')";
 
$query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error()); 
 
echo 'L\'employé a bien été inseré';
}
mysql_close(); 
?>
L'erreur ne viendrait pas du auto-increment ?
Je ne vois pas du tout mon erreur, Merci de me conseiller !!
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 10h35   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451


Je suppose que tu fais bien la connexion à la base de données.
Si tu donnais l'erreur que le sytème t'a renvoyé, on irait plus vite

Au fait, si dans ta balise code, tu ajoutes le langage, ça colore le code [CODE=php] ou [CODE=SQL]
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 10h37   #3
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
A vue de nez comme ca je ne la vois pas non plus, mais tu ne précises pas quelle est ton erreur?
Parce que soit tu n'affiches rien parce que tu n'entres pas dans le if (certains des $_POST[] ne sont pas remplis correctement) soit c'est une erreur mysql et dans ce cas il faut que tu nous donnes l'erreur.

EDIT: grillé par Celira ! Faut que j'arrete de faire autre chose au milieu d'un post
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 10h45   #4
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
J'aimerais bien vous indiquer l'erreur mais il ne m'indique aucune erreur.

Lorsque je je suis sur cette page le dernier echo s'affiche, celui du else :

Code php :
1
2
3
else	{
		echo 'Erreur : l\'employé n\'a pas été inséré';
		}

Voici le code de ma page si jamais :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
		session_start();
 
		mysql_connect("localhost", "root", ""); // Connexion à MySQL
		mysql_select_db("evian royal resort"); // Sélection de la base evian royal resort
 
?>
 
 
 
<!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" xml:lang="fr" lang="fr">
    <head>
        <title>Ajouter employé</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
 
		<p><center><h1>Ajout de personnel</h1></center></p> <hr>
		<p> <?php 
		// on récupère le numéro identifiant de l'utilisateur grâce à la variable session.
		$id = $_SESSION['Id_CDS'];
		// Grâce à l'identifiant on récupère le service de l'utilisateur pour qu'il ne puisse insérer qu'au sein de son service
		$sql ="SELECT Service FROM `chef_de_service` WHERE Id_CDS='$id'";
		$query = mysql_query($sql) or die($sql . ' : '  . mysql_error());
		$data=  mysql_fetch_assoc($query);
		$service=$data['Service'];	
		?>
 
		<form action="" method="post">
	<p>
<li>Nom employé 		: <input type="text" name="nom" /> </br>
<li>Prénom employé  	: <input type="text" name="prenom" />  </br> 
<li>Emploi      		: <input type="text" name="emploi" />  </br>
<li>Section     		: <input type="text" name="service" value="<?php echo $service; ?>"READONLY>  </br>
<li>Salaire     		: <input type="float" name="salaire" />  </br></br>
<input type="submit" value="Inserer" />
	</p>
       </form>
   </body>
</html>
 
		<?php
if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['emploi']) && isset($_POST['section']) && isset($_POST['salaire']))
		{
		// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
		$nom = htmlentities ($_POST['nom'],ENT_QUOTES);
		$prenom = htmlentities ($_POST['prenom'],ENT_QUOTES);
		$emploi = htmlentities ($_POST['emploi'],ENT_QUOTES);
		$section = htmlentities ($_POST['service'],ENT_QUOTES);
		$salaire = htmlentities ($_POST['salaire'],ENT_QUOTES);
 
		$sql2 = "INSERT INTO personnel (Id_Perso, Nom_Perso, Prenom_Perso, Emploi, Id_Section, Salaire_Perso) VALUES('','$nom','$prenom','$emploi','$service','$salaire')";
		$query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error()); 
 
		echo 'L\'employé a bien été inseré';
		}
else	{
		echo 'Erreur : l\'employé n\'a pas été inséré';
		}
		mysql_close(); 
		?>

EDIT : Merci Celira pour l'information [CODE=php]
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 10h54   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
A priori, si tu as le message du else, c'est que le if n'est pas validé
Question : ton message c'est après avoir soumis le formulaire ou avant ?

Tel qu'il est écrit, lors du premier chargement de la page (avant soummission du formulaire), ça doit t'afficher le fomulaire avec en dessous un message "l'utilisateur n'a pas été inséré". C'est ça ton problème?

[off] >> koopajah : un bon truc pour éviter de se faire griller : tu fais prévisualisation du message avant d'envoyer. ça met les messqges en dessous à jour et ça te permet de voir si quelqu'un a répondu dans l'intervalle
>> Raito : de rien, j'ai trouvé ça par hasard en voulant indiquer qu'un code était en sql au lieu d'être en php [/off]
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 10h58   #6
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
J'aimerais que sur ma page il y ai le formulaire que l'utilisateur remplit et s'il oubli un champ ou quelque chose comme ca que ca lui re-affiche le formulaire avec la phrase l'employé n'a pas été inséré. Voila un problème et le deuxième c'est que le INSERT ne se fait pas, lorsque je test le formulaire et que je vais voir dans ma base l'employé n'a pas été inséré.

Merci
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h11   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Donc tu as une amélioration à rajouter et un problème à résoudre.

D'abord le problème : tes champs sont bien remplis, le système ne te renvoie pas d'erreur, mais ça ne fait pas l'insertion...
Bon, on va appliquer la methode de debugage n°1, à savoir : mettre des echos partout Après chaque affectation, ajoutes un echo, genre :
Code php :
1
2
3
4
5
6
7
8
$nom = htmlentities ($_POST['nom'],ENT_QUOTES);
echo " nom : $nom";
...
$sql2 = "INSERT INTO personnel ...";
echo " sql2 : $sql2";
 
// et aussi en dehors du if (au début par exemple)
echo $_POST;
et vérifies qu'il n'y a pas des choses bizarres.

Pour l'amélioration, il faut ajouter des value=$_POST['la_variable'] un peu partout (mais ça, je vais vérifier la syntaxe )
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h41   #8
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Voila j'ai mis des echo un peu partout :

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
		<?php
		echo $_POST;
 
if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['emploi']) && isset($_POST['section']) && isset($_POST['salaire']))
		{
		// On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table
		$nom = htmlentities ($_POST['nom'],ENT_QUOTES);
		echo " nom : $nom";
		$prenom = htmlentities ($_POST['prenom'],ENT_QUOTES);
		echo " prenom : $prenom";
		$emploi = htmlentities ($_POST['emploi'],ENT_QUOTES);
		echo " emploi : $emploi";
		$section = htmlentities ($_POST['service'],ENT_QUOTES);
		echo " service : $service";
		$salaire = htmlentities ($_POST['salaire'],ENT_QUOTES);
		echo " salaire : $salaire";
 
		$sql2 = "INSERT INTO personnel (Id_Perso, Nom_Perso, Prenom_Perso, Emploi, Id_Section, Salaire_Perso) VALUES('','$nom','$prenom','$emploi','$service','$salaire')";
		$query2 = mysql_query($sql2) or die('Erreur SQL !'.$sql2.''.mysql_error()); 
		echo " sql2 : $sql2";
 
		echo 'L\'employé a bien été inseré';
		}
 
		mysql_close(); 
		?>

Mais rien de nouveau si ce n'est le mot "Array" en dessous de mon bouton "Inserer" !!

Je perds la tête la !!!
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h45   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
le Array vient surement du echo $_POST; que tu devrais remplacer par var_dump($_POST); pour voir le contenu.

Apparemment tu ne rentres jamais dans ton if, surement parce que tes variables ne sont jamais remplies et donc pas postées
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h49   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Je vérifies qu'on parle bien de la même chose :
tu remplis tout le formulaire, tu cliques sur insérer, et tu te retrouves avec "array" comme seule réponse ?
Dans la famille prise de tête, je voudrais...

Ah effectivement p'tite erreur : au lieu de echo $_POST, print_r($_POST) fonctionne aussi.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h54   #11
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Non je remplis pas le formulaire, des que j'arrive sur la page "Ajouter personnel" il y a deja le "Array" de marqué.

Pour le pirnt_r($_POST) ben même chose sauf que maintenant j'ai Array()



Quelle galère !!
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 11h58   #12
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Comment veux-tu ajouter quelqu'un si tu ne remplis pas le formulaire ?
Remplis, cliques, et ensuite regarde ce qu'il se passe.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h00   #13
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Oui c'est bon c'est fait désolé !!

Voila ce qui est écrit après :

Array ( [nom] => Lovna [prenom] => Lisa [emploi] => Informaticienne [service] => C23 [salaire] => 2000 )
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 12h06   #14
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
voila

tu fais un isset($_POST['section']) alors que ton champs s'appelle service

faut faire isset($_POST['service']) dans ton if, sinon tu n'y rentres jamais, et remplacer les références à $_POST['section'] par $_POST['service']
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 13h31   #15
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
ok j'espere que c'est ca! Je vais essayé! Merci en tout cas et vive developpez.net bien sur !!
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 13h34   #16
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Merci ca marche enfin !!
Désolé de vous faire perdre votre temps pour des bétises comme ca

Merci beaucoup en tout cas
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 13h44   #17
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 2
Points : 2
Par défaut harmony

haw haw
belakhdarbts10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h50.


 
 
 
 
Partenaires

Hébergement Web