Les tableaux superglobaux et récupération des variables

Rechercher

Les tableaux superglobaux et récupération des variables

Par mctarek  -  3 reponses  -  Le 24/09/2010 06:55  -  Editer  - 

Bonjour.Comme vous le savez, je débute en PHP et je demand doncl'indulgence.

Après des heures de travail, je ne parvenais pas à récupérer les variables d'un simple formulaire sur une 2è page à travers GET ou POST. J'ai ensuite appris que cela était dû au register_globals configuré à off. Au lieu de $variable, il faut écrire $_POST['variable']. C'est ainsi que je j'ai pu faire un pas dans mon apprentissage. Aujourd'hui, je suis à la phase PHP/MySQL, où je dois mettre à jour la base MySQL avec un formulaire PHP. Rien de compliqué, la source est fourni sur le CD du (vieux) livre d'apprentissage. Mais voilà, j'ai des erreurs de type "Undefined variable" Le formulaire donne //// et stock.php3 donne //$requete="INSERT INTO livres(isbn,titre,auteur,collec,paru,image)VALUES('$isbn','$titre','$auteur','$collec','$paru','$ima ge')";// suivi d'une condition avec //echo "Titre:".$titre." de:".$auteur." collection:".$collec." paru le:".$paru."image:".$image." code: ".$isbn;//

Alors j'ai décidé de mettre ma nouvelle compétence en jeu en changent les variables, exemple : //$requete="INSERT INTO livres2(isbn,titre,auteur,collec,paru,image) VALUES('$_POST['isbn']','$_POST['titre']','$_POST['auteur']','$_POST['collec']','$_POST['paru']','$_POST['image']')";// et //echo "Titre:" $_POST['titre'] etc

Et ô déception, j'ai un nouveau message : Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'

Le bon point : echo $_POST['titre']; renvoit bien la donnée du formulaire. Le mauvais point, je ne sais pas de quelle manière envoyer la variable sur la base MySQL

Note: La base et la table sont bien crées. Je suis attentivement les consignes du (vieux) livre.

Help !

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 24/09/2010 08:29  -  Haut de page  - 

Salut mctarek,

un détail : lorsque tu mets du code, utilise donc la barre d'outil, il y a un petit logo « » qui est fait spécialement pour ça, tu sélectionnes alors le langage, tu colles ton code et tu cliques sur [Insertion], l'affichage en sera notablement amélioré.

Pour ton message d'erreur, il y a neuf chances sur dix pour que ce soit à cause d'un « ; » de fin d'instruction manquant sur la ligne précédente.

Enfin, pour te familiariser avec l'utilisation d'une base de données, je te recommande la collection de tutos sur PhpDebutant.org, regarde la colonne de droite et tu auras pas mal de matière sur les bases essentielles.

 
Par mctarek  -  Le 24/09/2010 10:26  -  Haut de page  - 

Merci Cyrano. J'ai suivi ton conseil, et je suis tombé sur la solution...un peu déroutante :

De '$variable' je suis passé à '$_POST['collec']', puis finalement par '$_POST[collec]' (sans ls guillemets simples entre les crochets). Et la requête SQL a bien lue dans phpMyAdmin. Tout fonctionne ! Des heures perdues pour ça !

 
Par Cyrano  -  Le 24/09/2010 17:04  -  Haut de page  - 

Attention, sans les guillemets ou apostrophes, tu risques d'avoir des problèmes : PHP interprète alors l'index comme une constante qui n,existe pas,ou alors il se trouve qu'enne existe et tu va avoir des résultats pour le moins étrange.

Observe ta requête avant correction :

$requete = "INSERT INTO livres2(isbn,titre,auteur,collec,paru,image) VALUES(
    '$_POST['isbn']',
    '$_POST['titre']',
    '$_POST['auteur']',
    '$_POST['collec']',
    '$_POST['paru']',
    '$_POST['image']'
)";

Là il y a un problème parce qu'il y a conflit entre les apostrophes qui délimitent les champs et ceux qui entourent les index.

En faisant des concaténations propres, tu n,aurais eu aucun soucis de ce genre :

$requete = "INSERT INTO livres2(isbn,titre,auteur,collec,paru,image) VALUES(
    '". $_POST['isbn'] ."',
    '". $_POST['titre'] ."',
    '". $_POST['auteur'] ."',
    '". $_POST['collec'] ."',
    '". $_POST['paru'] ."',
    '". $_POST['image'] ."'
)";

Et observe la différence entre les deux au niveau de la coloration syntaxique : l'erreur devient visuellement repérable.

 

 

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |