Probleme insertion php/mysql

Fermé
c+cool - 9 avril 2004 à 13:04
 omda87 - 27 mars 2009 à 12:36
Bonjour

j ai recupere un fichier a partir d un site de tutorial php pour pouvoir inserer des elements dans ma table mais ca ne marche pas et voila ce que ca m'affiche:

Notice: Undefined variable: action in c:\program files\easyphp1-7\www\agenda\inscription.php on line 6

Votre nom :
Votre email :
votre prenom :
votre mot de passe :
votre telephone :
votre adresse :
votre codepostal :
votre ville :


j entre tout de meme les valeurs et alors ca m'affiche:

You don't have permission to access /agenda/<br /><b>Notice</b>: Undefined variable: PHP_SELF in <b>c:/program files/easyphp1-7/www/agenda/inscription.php</b> on line <b>34</b><br /> on this server.

je comprends rien a ces erreurs.


voila mon fichier de code source:
<html>
<body>
<?php


switch ($action){

case "inserer": //INSERTION DANS LA BASE

/* déclaration de quelques variables */

/* connection avec MySQL */
$connect=mysql_connect('localhost','root','weilack') or die("Impossible de se connecter à la base de données");
mysql_select_db('agenda',$connect) or die("Impossible de se connecter à la base de données");

/* affichage sélection */
echo "Bonjour $nom $prenom ";

/* stockage dans la bdd */
$query = "INSERT INTO personne (dateheure,nom,prenom,mdp,telephone,adresse,codepostal,ville,email) VALUES($IdPers,'$Nom','$Prenom','$Mdp','$Tel','$Adr,'$Codep','$Ville','$Mail')";
$result = mysql_query($query);

/* déconnection avec MySQL */
mysql_close();

break;

default: // FORMULAIRE HTML

?>



<form method="post" action="<?echo $PHP_SELF;?>">
<p>Votre nom :
<input type="text" name="nom">
<br>
Votre email :
<input type="text" name="email">
<br>
votre prenom :
<input type="text" name="prenom">
<br>
votre mot de passe :
<input type="text" name="mdp">
<br>
votre telephone :
<input type="text" name="telephone">
<br>
votre adresse :
<input type="text" name ="adresse">
<br>
votre codepostal :
<input type="text" name ="codepostal">
<br>
votre ville :
<input type="text" name="ville">
<br>


<input type="submit" name="Submit" value="Ok">
<input type="hidden" name="action" value="inserer">
</p>
</form>
<?

break;

}

?>
</body>
</html>










Me comprenez vous?

merci
A voir également:

11 réponses

Mr.White Messages postés 251 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 17 juillet 2012 53
9 avril 2004 à 15:50
Je suis au regrès de t'annoncer que je n'ai pas le temps pour résoudre ton problème mais je peu t'indiquer quelque méthode pour que tu puisse cibler ton problème.

Il sagit tout simplement de faire de affichage (echo "test"; par exemple). Tout affiche en début de page ce test qui devrai normalement s'afficher puis tu le descent petit à petit dans ton code. Tu trouverra normalement la ou les ligne de code qui posse problème quand ton test ne s'affichera plus.

Une autre méthode consiste à mettre une parti de code (celle qui est senssé poser problème) en commentaire puis tu libère petit à petit les lignes de code du commentaire. Le problème avec cette méthode est qu'il faut veiller à ce que le code mis en commentaire n'est pas essentiel à une autre partit de ton code.

J'ai tout de même une petite idée sur l'origine de ta première erreur: il te dit qu'une variable n'est pas défini, ca doit être la variable $action.
Tu récupérer cette variable en début de page avec un $_POST['action'].

Ensuite, plutôt qu'un switch, j'obterai plutôt pour ceci :
if(ISSET($_POST['action']))
{
if($_POST['action']=="inserer")
{ ton traitement }
else
{
ton form
}

Je ne suis pas certain de toute la syntaxe mais ca doit être à peu prés ca.

Donc finalement j'ai peut-être résolut tout ton problème ;o)
Essay donc ceci et si ca ne marche pas, refait moi signe.

Bon courage !!!
0
Bonjour

Merci pour vos reponses

En ce qui concerne le message de laurent g je pense que tu voulais dire de mettre on a la place de off ce que j 'ai fait mais il n'accepte toujours pas ma variable action et lorsque je mets $action =0; en debut de fichier il ne me demande plus d'entree les noms prenoms..
et il m'affiche directement qu'il ne connait as $nom,$prenom...

J espere que j ai ete clair

merci
0
Mr.White Messages postés 251 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 17 juillet 2012 53
9 avril 2004 à 16:33
Je revient sur ma suggestion d'afficher des test car personnellement je ne voit pas trop d'où peut bien provenire le problème, quel code est executer ...
0
Voila
j ai mis des tests un peu partout mais ca ne mavance pas plus je t envoie le code source +l 'affichage si ca peut t'aider a m'aider

Merci encore

code source:
html>
<body>
<?php

echo "test";
switch ($_POST['action']){

case "inserer": //INSERTION DANS LA BASE

/* déclaration de quelques variables */

/* connection avec MySQL */
$connect=mysql_connect('localhost','root','weilack') or die("Impossible de se connecter à la base de données");
mysql_select_db('agenda',$connect) or die("Impossible de se connecter à la base de données");

/* affichage sélection */
echo "Bonjour $nom $prenom ";

/* stockage dans la bdd */
$query = "INSERT INTO personne VALUES('dateheure','$Nom','$Prenom','$Mdp','$Telephone','$Adresse,'$Codepostal','$Ville','$Mail')";
$result = mysql_query($query);
echo "test";
/* déconnection avec MySQL */
mysql_close();
echo "test";
break;

default: // FORMULAIRE HTML

?>



<form method="post" action="<?echo $PHP_SELF;?>">
<p>Votre nom :
<input type="text" name="Nom">
<br>

Votre email :
<input type="text" name="Mail">
<br>
votre prenom :
<input type="text" name="Prenom">
<br>
votre mot de passe :
<input type="text" name="Mdp">
<br>
votre telephone :
<input type="text" name="Telephone">
<br>
votre adresse :
<input type="text" name ="Adresse">
<br>
votre codepostal :
<input type="text" name ="Codepostal">
<br>
votre ville :
<input type="text" name="Ville">
<br>


<input type="submit" name="Submit" value="Ok">
<input type="hidden" name="action" value="inserer">
echo "test";
</p>
</form>
<?

break;

}

?>
</body>
</html>



premiere page php:
test
Notice: Undefined index: action in c:\program files\easyphp1-7\www\vendredi\a.php on line 6

Votre nom :
Votre email :
votre prenom :
votre mot de passe :
votre telephone :
votre adresse :
votre codepostal :
votre ville :
echo "test



deuxieme page apres avor entrer des valeurs:
Forbidden
You don't have permission to access /vendredi/<br /><b>Notice</b>: Undefined variable: PHP_SELF in <b>c:/program files/easyphp1-7/www/vendredi/a.php</b> on line <b>34</b><br /> on this server.


--------------------------------------------------------------------------------

Apache/1.3.27 Server at 127.0.0.1 Port 80
0
ericpons Messages postés 39 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 1 avril 2005 15
15 avril 2004 à 18:04
Bonjour!
Je suis tout juste débutant en PHP et en programmtion tout court, mais je peux si tu veux te dire ce que m'évoques ton problème.
D'abord pour tes tests tu devrais faire afficher tes variables, savoir que l'interpréteur est passé à un endroit c'est bien, savoir ce qu'il pensait à ce moment là, c'est mieux.
Je remplacerais donc le premier
echo "test";

par
echo "action : ".$_POST[action]."<br/>";

et ainsi de suite.
Ensuite comme toutes les variables d'environnement, PHP_SELF a changé de statut avec la dernière version de PHP, et devrait être accessible par $_SERVER['PHP_SELF'].
Ensuite c'est sympa de nous filer ton mot de passe root sur ta base de données. Heureusmeent normalement avec easyPHP elle est innacessible de l'extérieur, mais je n'y connais pas assez.
Tu as également des problèmes de majuscules sur tes variables : un coup en minuscule (formulaire), un coup en majusqule (script). Hors elles sont case sensistive.
Lorsque je fais des formulaires qui se rappelle eux-même, j'utilise l'URI pour envoyer le type de traitement (c'est à dire que l'action de mon formulaire c'est
action="vendredi.php?inserer" 
,
que je récupère ensuite avec $_SERVER['REQUEST_URI']. Je ne sais pas si c'est qu'il y a de plus simple, mais ça m'évite de rajouter des champs hidden.
mysqlclose demande le handle de ta connexion en argument.
Bon ben je sais pas si ça va t'aider mais c'est déja ce qui m'est venu.

Eric.
0
Bonjour

Me revoila j ai toujours pas reussi a resoudre mon probleme lorsque j execute mon script d insertion il m' affiche qu il ne connait pas la variabla action je ne sais pas pourquoi voila mon code source qui a ete un peu modifie par rapport a ce qu on m a indiqué:


<html>
<body>
<?php



if(true)


if($_POST['action']=="inserer")
{



echo "action : ".$_POST[action]."<br/>";



/* connection avec MySQL */
$connect=mysql_connect('localhost','root','weilack') or die("Impossible de se connecter à la base de données");
mysql_select_db('agenda',$connect) or die("Impossible de se connecter à la base de données");

/* affichage sélection */
echo "Bonjour $Nom $Prenom ";
echo "action : ".$_POST[action]."<br/>";

/* stockage dans la bdd */
$query = "INSERT INTO personne VALUES(NOW(),'Nom','Prenom','Mdp','Telephone','Adresse,'Codepostal','Ville','Mail')";
$result = mysql_query($query);

/* déconnection avec MySQL */
mysql_close($connect);



}



else{
?>

<form method="post" action="<?echo $_SERVER['PHP_SELF'];?>">

<p>Votre nom :
<input type="text" name="Nom">
<br>
Votre email :
<input type="text" name="Mail">
<br>
votre prenom :
<input type="text" name="Prenom">
<br>
votre mot de passe :
<input type="text" name="Mdp">
<br>
votre telephone :
<input type="text" name="Telephone">
<br>
votre adresse :
<input type="text" name ="Adresse">
<br>
votre codepostal :
<input type="text" name ="Codepostal">
<br>
votre ville :
<input type="text" name="Ville">
<br>


<input type="submit" name="Submit" value="Ok">
<input type="hidden" name="action" value="inserer">
</p>
</form>
<? } ?>
</body>
</html>

et voila ce que l execution m'affiche :

Notice: Undefined index: action in c:\program files\easyphp1-7\www\agenda\inscription.php on line 10

Votre nom :
Votre email :
votre prenom :
votre mot de passe :
votre telephone :
votre adresse :
votre codepostal :
votre ville :

Merci d' avance!!
0
Utilisateur anonyme
19 avril 2004 à 11:20
la derniere modif est de remplacer if($_POST['action'] == 'inserer')
par if(isset($_POST['action']))
qui verifie si une variable est positionnée, l'origine de ton erreur.
De rien!
Bravo à ericpons qui a fait une tres bonne reponse intermediaire (il m'a enlevé les mots de la bouche...)!

Fat_Cartman,
Parce que je le vaux bien... 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Super coool!!
merci a toi fat_cartman j ai plus cette erreur
Mais comme la vie serait trop belle sinon lorsque j'entre les valeurs, il ne connait pas mes variables nom ,prenom... voila le message d erreur:

Notice: Undefined variable: Nom in c:\program files\easyphp1-7\www\agenda\inscription.php on line 25

Notice: Undefined variable: Prenom in c:\program files\easyphp1-7\www\agenda\inscription.php on line 25
Bonjour
Notice: Use of undefined constant action - assumed 'action' in c:\program files\easyphp1-7\www\agenda\inscription.php on line 26
action : inserer

Notice: Undefined variable: Nom in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Prenom in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Mdp in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Telephone in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Adresse in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Codepostal in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Ville in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

Notice: Undefined variable: Mail in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29


ps :
Dans cette ligne il y a
$query = "INSERT INTO personne VALUES(NOW(),'$Nom','$Prenom','$Mdp','$Telephone','$Adresse,'$Codepostal','$Ville','$Mail')";
et non pas
$query = "INSERT INTO personne VALUES(NOW(),'Nom','Prenom','Mdp','Telephone','Adresse,'Codepostal','Ville','Mail')";

merci encore!!
0
Utilisateur anonyme
19 avril 2004 à 11:40
Je croyais que tu avais compris...
$query = "INSERT INTO personne VALUES(NOW(),'$_POST['Nom']','$_POST['Prenom']','$_POST['Mdp']','$_POST['Telephone']','$_POST['Adresse']','$_POST['Codepostal']','$_POST['Ville']','$_POST['Mail']')";
Voilà!


Fat_Cartman,
Parce que je le vaux bien... 
0
C est bien ce que j avais essaye mais ca marchait pas il m'affichait cette erreur:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\program files\easyphp1-7\www\agenda\inscription.php on line 29

ps : jsuis debutant en php alors desole si c est une erreur a la con.
0
Utilisateur anonyme
19 avril 2004 à 15:19
Essaie ca : (concatenation de chaines)
$query = "INSERT INTO personne VALUES(NOW(),'".$_POST['Nom']."','".$_POST['Prenom']."','".$_POST['Mdp']."','".$_POST['Telephone']."','".$_POST['Adresse']."','".$_POST['Codepostal']."','".$_POST['Ville']."','".$_POST['Mail']."')";
C'est pas une question con, c'est des choses qui passent parfois, et parfois pas, alors faut connaitre les styles et... tous les essayer!

Fat_Cartman,
Parce que je le vaux bien... 
0
Salut

Pour etre cool c est cool enfin ca marche t un as fat_cartman j etais sur plusieurs forums php et y en a pas un qui m'a repondu correctement
merci encore et vive les forums!
0
j'ai un un probléme de déclaration de variables dans MYSQ,ainsi le web local m'affiche toujours:


Notice: Undefined variable: Code in c:\program files\easyphp1-8\www\sindpro\script_connection.php on line 22

Notice: Undefined variable: Designation in c:\program files\easyphp1-8\www\sindpro\script_connection.php on line 23

Notice: Undefined variable: PRIX_Vente in c:\program files\easyphp1-8\www\sindpro\script_connection.php on line 24

Notice: Undefined variable: PRIX_Achat in c:\program files\easyphp1-8\www\sindpro\script_connection.php on line 25

Notice: Undefined variable: PrixVttc in c:\program files\easyphp1-8\www\sindpro\script_connection.php on line 26
Inexistant
et voila mon script de la connection:
<html>
<body>

<p align="center"> <b> Article Récherché</b></p>
<table border="1" width="100%">
<tr>
<td width="20%" ><p align="center" ><font color="#FF00FF"size="2"><B>Code Article</B></font></p></td>
<td width="20%" ><p align="center" ><font color="#FF00FF" size="2"><B>Désignation Article</B></font></p></td>
<td width="20%" ><p align="center" ><font color="#FF00FF"size="2"><B>Prix d'achat</B></font></p></td>
<td width="20%" ><p align="center"><font color="#FF00FF"size="2"><B>Prix de Vente HT</B></font></p></td>
<td width="20%" ><p align="center"><font color="#FF00FF" size="2"><B>Prix de Vente TTC</B></font></p></td>





<?php
$bdd ="SINDPRO";
$err=0;
$localhost="127.0.0.1";
$user="walid";
$password="walid";
$Code;
$Designation;
$PRIX_Vente;
$PRIX_Achat;
$PrixVttc;
//Connexion au serveur
$db=mysql_connect($localhost,$user,$password) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

//Creation et envoi de la requete
$query="select * from article";
$result=mysql_query($query);
if($result)
{
while(($use = mysql_fetch_object($result))&&($err==0))
{
if($use-Code == $_GET['article'])
$err=1;
$Code= $use-Code;
$Designation = $use-Designation;
$PRIX_Vente = $use-PRIX_Vente;
$PRIX_Achat = $use-PRIX_Achat;


}
}

if($err == 1)
{
//echo n OK n;
//echo ,$Code,,$Designation,,$PRIX_Vente, DT HT;
//echo ,$PRIX_Vente1.18, DT TTC;

$PrixVttc = $PRIX_Vente * 1.18;
$PrixVttcr =round($PrixVttc,3);
echo"
<tr>
<TD class=\"txtlst\" width=\"163\"bgColor=#ffcc00>$art</TD>\n
<TD class=\"txtlst\" width=\"163\"bgColor=#ffcc00>$Des</TD>\n
<TD class=\"txtlst\" align=\"middle\" width=\"163\"bgColor=#ffcc00>$Prixach</TD>\n
<TD class=\"txtlst\" align=\"middle\" width=\"163\"bgColor=#ffcc00>$Prixv</TD>\n
<TD class=\"txtlst\" align=\"middle\" width=\"163\"bgColor=#ffcc00>$PrixVttcr</TD>\n
<TD noWrap align=\"middle\" width=\"10\">\n
<p align=\"middle\">";


}
else
{
echo "Inexistant";
}


?>

</body>
</html>
0
Laurent G Messages postés 35 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 26 mai 2004 4
9 avril 2004 à 15:41
Première solution :
la version 1-7 ne prend pas en compte les variables globales.
Pour modifier cela : rechercher php.ini dans easyPhp
et modifi : registers_globals="OFF" =>registers_globals="OFF"

(le premier registers_globals à ; devant c'est un commentaires, modifi le 2èmes)

Deuxième soluion :

déclare au début du fichier :
$PHP_SELF = 0;
$action = 0;
-1