[PROB]Formulaire: transformer nom de champs en variable directement

Signaler
Messages postés
14
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
12 juillet 2006
-
Messages postés
128
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
12 août 2005
-
Bonjour, j previens j suis un noob en php,

je suis les exercicss d'un livre pour apprendre les bases de php avant de m envoler moi meme ds mes propres codes sources...

Cependant, je cale sur un problème (resolu d une certaine maniere, mais qui n'est pas des plus pratique :) )

Je construit un formulaire relatant une bibliothèque: on entre le code isbn, le nom , l auteur et le prix du livre. Chaque champs porte un nom specifique.

Ds mon book php, leur code reprend directement le nom des champs en tant que variable sans specialement passé par un $_POST();

Voyez plutot:

ceci est mon formulaire:
<form action="add_book.php" method="post">
ISBN, ,
----
Author, ,
----
Title, ,
----
Price €, ,
----


</form>

PS: que je mette des quotes ou des guillemets ou meme rien du tout aux noms des propriétés (ex: name='title' ou name="title" ou name=title) , ca ne change rien au problème

Et voici le code de add_book.php d'apres le livre(même si un peu modifié par moi même:

<?

if (!$isbn || !$author || !$title || !$price)
{
echo "You have not entered all the required details.
"
."Please go back and try again.";
exit;
}

$isbn = addslashes($isbn);
$author = addslashes($author);
$title = addslashes($title);
$price = doubleval($price);

@ $db = mysql_pconnect("localhost", "root", "", "books");

if (!$db)
{
echo "Error: Could not connect to database. Please try again later.";
exit;
}

$query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')";
$result = mysql_db_query("books",$query);
if ($result)
echo mysql_affected_rows()." book inserted into database.";
?>

Si j utilise ce code il me met une erreur de ce type : NOTICE: Undefined variable: isbn in c:\laurent\easyphp1-7\www\bookorama\add_book.php on line 10

Par contre ca marche si je met
$isbn = $_POST['isbn'];
$author = $_POST['author'];
$title = $_POST['title'];
$price = $_POST['price'];
au debut de mon code
Puiske ds ce cas il reprend bien les valeur des champs d apres leur nom.

Mais ma question est là: comment transformer les valeurs en variable a partir de leur nom de champs sans passer par un $_POST[];????

Dois je configurer mon fichier PHP.ini? si ui comment?
Changer la cfg d'Apache?

Ne me dites pas que c pas possible, puiske le codeur du livre y arrive bien(j vois mal l interet de montrer des sources ki marchent pas aux lecteurs). Version 4 de php.

J'oubliais de dire ke je test mes codes sur EASY PHP 1.7 => version 4 de php lui aussi.

___________________
Just me! Not another...

1 réponse

Messages postés
128
Date d'inscription
mardi 11 mai 2004
Statut
Membre
Dernière intervention
12 août 2005

Bonsoir,

ton bouquin travaille avec les variables globales à ON dans le php.ini
Or, sur easyphp 1.7, les variables globales sont à OFF par défaut (ce qui est beaucoup mieux du point de vue de la sécurité).
Pour t'en convaincre, voici un petit article.
Donc, deux solutions :
- tu passes register_globals à ON dans php.ini (c'est mal !!)
- tu rajoute les $_POST[], $_GET[] et autres ... tu trouveras des exemples commentés ici.

Bonne lecture ;)