PB: insertion des données saisies dans base mysql

Signaler
Messages postés
7
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
13 novembre 2005
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
je suis sous easyphp 1.7(php 4.3.3) en localhost, et j'ai un problème pour insérer des données dans ma base mysql, ca ne fonctionne pas si je laisse ma variable php prédéfinie "register_globals=off".

Par contre ca marche si "register_globals" est sur on, mais j'ai un message d'erreur qui apparaît en permanence dans le chargement de ma page:
"Notice: Undefined variable: action in c:\program files\easyphp1-7\www\ajoutlivre.php on line 8"
-->correspnd à la ligne: switch ($action)

la variable $action etant pourtant bien déclaré.

quelles sont les autres méthodes pour insérer des données dans la base mysql autre que :
<form method="post" action="<?echo $PHP_SELF;?>">

Voici mon code, si quelq'un veut bien le tester (en créant la petite table qui correspond si possible)ou me dire d'ou viens le problème, merci.
--------------------------------------------------------------------------------------
<html>
<title>Test AJOUT Livre</title>

<?

switch ($action)
{
case "inserer": //Insertion dans la base MySQL

/* déclaration de quelques variables */
$server = "localhost";
$user = "root";
$pass = "";
$bdd = "media";
$table = "livre";

/* connection avec MySQL */
mysql_connect($server,$user,$pass) or die("Impossible de se connecter à la base de données"); // Le @ ordonne a 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 "Le livre $titr de l'auteur $aut a bien été enregistré";?>

<?
echo "Remarques particulières : $comm .";

/* stockage dans la bdd */
$query = "INSERT INTO $table(titre,auteur,comment)
VALUES('$titr','$aut'','$comm')";
$result = mysql_query($query);
/*echo "$result";*/
/* déconnection avec MySQL */
mysql_close();

break;

default: // FORMULAIRE HTML
?>
<caption></caption>

AJOUTER NOUVEAU TITRE
</td>

<hr align=\"left\" width=\"660\"></hr></td>

<form method="post" action="<?echo $PHP_SELF;?>">

Titre du livre</td>
Auteur du livre

</,

Commentaires sur le livre ou l'auteur</td>

<textarea rows="1" name="comm" cols="79"></textarea>

,

</form>
<?

break;

}

?>

</html>

2 réponses

Messages postés
34
Date d'inscription
lundi 15 novembre 2004
Statut
Membre
Dernière intervention
27 octobre 2005

1 ) Tu n'as pas besoin de fermer les tag php pour insérer du HTML :
echo "Le livre $titr de l'auteur $aut a bien été enregistré";?>

<?

peut être remplacé par
echo "Le livre $titr de l'auteur $aut a bien été enregistré
";

et s'est tout de suite a la fois plus lisible et mieux

2 ) Ensuite pour ton problème la solution est simple. Lorsque tu envoi des données depuis un formulaire à une page, les données ne sont pas directement affecté à des variables php ( sauf si le register_global est sur on mais c'est pas génial ), il faut donc les récupérer. Pour cela, comme les données viennent d'un formulaire envoyé des POST , tu fait, par exemple pour aut :
$aut = $_POST['aut'];


Tu fait cela pour toute tes valeurs transmises et c'est bon !

3 ) Pour le $action aps définie, je ne sais pas si ce n'est qu'il y a peut être un problème avec le


qui n'a rien à faire là ( et ne sert à rien ?? ) juste avant l'ouverture de ton tag php.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

[citation : echo "Le livre $titr de l'auteur $aut a bien été enregistré
";

et s'est tout de suite a la fois plus lisible et mieux]

Heu, le meilleur reste encore le echo 'Le livre',$titr,'de l\'auteur ',$aut,' a bien été enregistré
';

a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique