Votre question

Récupérer une variable php

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
28 Janvier 2007 14:50:51

Bonjour,

J'ai un formulaire html qui envoie via la méthode Post les champs saisies par un utilisateur.

Mon script "formulaire.php" reçoit ces champs, et les affichent sans aucun problème.

Mais le problème se pose quand je veux récupérer la valeur de ses champs par un autre script php "tester.php". Ce script ne m'affiche rien.

J'ai essayé avec la fonction include, mais "tester.php " récupèrer tous sauf les champs avec _POST.

J'ai essayé les "SESSION", mais ca ne marche pas non plus.

Ma question est comment je pourrais récupérer les valeurs postées par mon formulaire par mon deuxième script "tester.php" sans passer par les sessions.

Merci

Autres pages sur : recuperer variable php

28 Janvier 2007 15:56:02

tout dépend comment est appelé ton 2ème script...
une solution serait de les reposter
mais la solution la plus facile à mettre en place reste les sessions vu que c'est prévu pour
28 Janvier 2007 17:38:35

coca25 a dit :
tout dépend comment est appelé ton 2ème script...
une solution serait de les reposter
mais la solution la plus facile à mettre en place reste les sessions vu que c'est prévu pour


Dans mon "formulaire.php" j'ai:
$titre= $_POST['titre'];
$_SESSION['titre']=$titre;
$variable = $titre;
$toto = "toto1";

Maintenant "$variable" contient le titre posté. Dans la page "tester.php" je fait un include('formulaire.php'),
et quand je fais: echo $toto, ca m'affiche bien "toto1"
et quand je fait echo $variable, il n'ya rien qui s'affiche

Il n'ya pas moyen de convertir et de récupérer la variable posté en tant qu'une variable normal comme $toto, que je pourrais utliser dans mes autres pages php, sans passer biensûr par les "SESSIONS".
Contenus similaires
28 Janvier 2007 19:09:13

... pas clair tout ca!

je vois 2 possibilités:
--
tu as un formulaire dont l'action est : tester.php
ce script (tester.php) inclut formulaire.php

dans ce cas, session ne sert à rien, $variable non plus, il te suffit d'utiliser $titre

--
ou alors tu as un formulaire dont l'action est formulaire.php
ou tu mets:
  1. $titre= $_POST['titre'];
  2. $_SESSION['titre']=$titre;


puis par je ne sais quel facon, tu accedes à tester.php (lien, formulaire...)
dans ce cas dans tester.php tu dois avoir:
  1. $titre = $_SESSION['titre'];


et pour utiliser les sessions, ne pas oublier:
  1. session_start();

à mettre avant toute sortie (echo, print etc...) du script
28 Janvier 2007 21:10:41

91898,4,319370 a dit :
... pas clair tout ca!

Je récapitule, car je pense qu'on s'est mal compris.
Je ne veux pas passer par les sessions!!

1) Dans le formulaire html, j'envoie un titre ex: "Le php".

Je déclare les variables suivantes dans le "formulaire.php"
qui recoit les valeurs postés par le formulaire:
$toto = "toootoooooo "; // une variable bidon pour tester
$titre = $_POST['titre']; // ici le titre est : "Le php"

2) Maintenant je veux récupérer ces variables dans mon script "tester.php"

................................Jusqu'à la tu me suis Coca :) 

Dans mon script "tester.php" je fais : include ('formulaire.php');
pour tester je fait: echo $toto, et le résultat = "toootoooooo".(
exactement ce que j'avais dans "formulaire.php").
ensuite je fait echo $titre, et là il n'ya rien qui s'affiche.
Donc comment je peux faire pour récupérer la valeur
de $titre, sans passer par les sessions.
Est-ce qu'il n'ya pas moyen de récupérer $titre=$_POST['titre'],
comme une variable normal, comme $toto ?
28 Janvier 2007 21:51:09

Si ca se trouve ton problème c'est juste que tu as oublié le session_start(); qui doit re mis en tout premier.
28 Janvier 2007 23:39:07

phplayer a dit :
Si ca se trouve ton problème c'est juste que tu as oublié le session_start(); qui doit re mis en tout premier.


Mais non, puisque je ne veux pas utiliser de session.
Je veux juste récupérer la variable $_POST['titre'] comme n'importe
quelle autre variable Php, comme $toto dans mon exemple plus haut
29 Janvier 2007 10:11:50

j'ai du mal qd meme (mauvais we surement :) )
Citation :

Je déclare les variables suivantes dans le "formulaire.php"
qui recoit les valeurs postés par le formulaire:

donc formulaire.php recoit les valeurs postés ok
ensuite tu APPELLES tester.php COMMENT??
c'etait la question que j'insinuais par:
Citation :

puis par je ne sais quelle facon, tu accedes à tester.php (lien, formulaire...)


le plus simple serait de poster le code du formulaire, de formulaire.php et de tester.php
29 Janvier 2007 19:12:29

Les variable de type POST ne sont valables que pendant l'execution de la page qui les reçoit. Si tu veux appeler ta page test.php par un lien tu peux l'appeler en passant par des variable GET :
<?php
echo "<a href='test.php?titre=".$titre.">Lien vers test</a>'";
?>

et dans ta page test.php :
<?php
if(isset($_GET['titre'])){
$titre=$_GET['titre'];
}
else{
$titre="";
}
?>
30 Janvier 2007 07:26:15

coca25 a dit :
le plus simple serait de poster le code du formulaire, de formulaire.php et de tester.php


Effectivement, un exemple vaut milles mots ;) 

formulaire.php:
  1. session_start();
  2. $titre =$_POST['titre'];
  3. $_SESSION['titre'] = $titre;
  4. $toto = "tooootoooo";// variable de test


teste.php:
  1. <?php
  2. session_start();
  3. include ("formulaire.php");
  4. // upload d'un fichier
  5. $file=$_FILES['Filedata']['name'];
  6. $uploadDir = './upload/';
  7. $uploadFile = $uploadDir.$file;
  8. move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
  9.  
  10. $connection=mysql_connect($host,$user,$password)
  11. or die("Connexion impossible");
  12. $db = mysql_select_db($db,$connection)or die ("Erreur sur la base");
  13. $sql = "INSERT INTO titre (titre,fichier,toto) VALUES ('$titre','$file','$toto')";
  14. mysql_query($sql) or die("Erreur sur la requette");
  15.  
  16. ?>

Résumé de tout ça, la variable toto que j'avais dans formulaire.php s'insère bien dans ma base de données, donc
j'ai "toootoooo". De plus, le nom du fichier que j'upload s'insère également dans ma base. Par contre, le champ titre est resté vide.
Comme vous avez vu, j'ai utilisé les sessions et ca ne fonctionne
pas, c'est la raison pour laquelle je voudrais savoir si il ya moyen de récupérer le variable $titre comme j'ai récupérer $toto.
30 Janvier 2007 11:25:03

premier point: dis moi ce que tu ne comprends pas dans:
donc formulaire.php recoit les valeurs postés ok
ensuite tu APPELLES tester.php COMMENT??


ensuite 2eme point qui va, je crois, clarifier pas mal de chose:
ajoute dans ton formulaire.php:
  1. echo "<br/>-----<br/>";
  2. echo $_POST['titre'];
  3. echo "<br/>-----<br/>";
  4. $titre =$_POST['titre'];
  5. $toto = "tooootoooo";// variable de test

et tu me diras ce que ca te sort
30 Janvier 2007 16:10:57

coca25 a dit :
premier point: dis moi ce que tu ne comprends pas dans:
donc formulaire.php recoit les valeurs postés ok
ensuite tu APPELLES tester.php COMMENT??


coca25 a dit :

le plus simple serait de poster le code du formulaire, de formulaire.php et de tester.php


Tu voulais que je poste le code, alors je t'ai posté le code.

Si tu veux savoir comment j'appele "tester.php", c'est en cliquant sur "envoyer " de mon formulaire qui m'envoie sur "tester.php".
Une fois que je suis sur tester.php, j'upload un fichier qui s'insère


dans la base de données. Je veux que le titre envoyé par l'usager s'insère aussi, et ce n'est pas le cas.
Ce qui est bizzare, c'est que j'ai fait un teste sur une autre page "toto.php". Sur cette page, j'ai mis le même code que sur "teste.php" sauf le code pour l'upload d'un fichier ,et cette fois,
le titre s'insère correctement dans la base de données.

Le problème vient apparement de l'ulpoad, et c'est étrange.

Ce qui serai plus sage, c'est de convertir le variable $_POST en un e variable normale, genre un string, comme ma variable $toto
qui s'insère correctement dans la base de données quand je l'appèle depuis "formulaire.php";

"Je ne sais pas si c'est faisable,mais bon, tout est possible"
30 Janvier 2007 16:38:26

ta saisie dans le formulaire se fait en 1 ou 2 étapes:
d'abord l'utilisateur saisit le titre, clique sur envoyer, ce qui l'envoie vers formulaire.php qui récapitule ce qu'il a saisi.
ensuite il choisit un fichier et clique sur envoyer qui l'envoie vers tester.php
c'est comme ca que ca se deroule?
2 Février 2007 02:50:21

Citation :
Ouai, c'est presque ainsi que ca se déroule, mais j'ai enlever complètement la page "tester.php" pour réduire les dégâts, et maintenant tout ce fait au niveau de "formulaire.php".Donc le tout ce passe au niveau du "formulaire.html" et "formulaire .php". Mais mon problème persiste toujours.

Maintenant ca se passe ainsi:

- L'utilisateur saisit le titre dans "formulaire.hml", clique sur envoyer, ce qui l'envoie vers formulaire.php qui récapitule ce qu'il a saisi.
Maintenant l'upload du fichier se fait via le "formulaire.php" et non
"teste.php".

Pour faire un premier test, j'ai mis le code suivant dans "formulaire.php": (Pas d'upload de fichier).

  1. 1. <?php
  2. 2. // Récupérer le titre.
  3. 3. $titre=$_POST['titre'];
  4. 4. // Connection à la base de données
  5. 5. $connection=mysql_connect($host,$user,$password)
  6. 9. or die("Connexion impossible" );
  7. 10. $db = mysql_select_db($db,$connection)or die ("Erreur sur la base" );
  8. 11. $sql = "INSERT INTO titre (titre) VALUES ('$titre')";
  9. 12. mysql_query($sql) or die("Erreur sur la requette" );
  10. 13. ?>


Et là, tout ce passe bien, le titre posté par le formulaire s'insère correctement dans la base de données.

Deuxième test:
Dans mon "formulaire.php" j'ai mis le nouveau code suivant:
(Upload d'un fichier).

  1. 1. <?php
  2. 2. // Récupérer le titre.
  3. 3. $titre=$_POST['titre'];
  4. 4. // upload d'un fichier
  5. 5. if($_FILES['Filedata']['name']){
  6. 6 $file=$_FILES['Filedata']['name'];
  7. 7. $uploadDir = './upload/';
  8. 8. $uploadFile = $uploadDir.$file;
  9. 9. move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
  10. 10. $connection=mysql_connect($host,$user,$password)
  11. 11. or die("Connexion impossible" );
  12. 12. $db = mysql_select_db($db,$connection)or die ("Erreur sur la base" );
  13. 13. $sql = "INSERT INTO titre (titre,fichier) VALUES ('$titre','$file')";
  14. 14. mysql_query($sql) or die("Erreur sur la requette" );
  15. 15. ?>
  16. }


Dans ce deuxième test, le fichier s'upload et son nom s'insère correctement dans la base de données, mais le titre ne s'insère pas.Donc, c'est sûrement un problème dans l'upload, et je ne sais pas comment le règler.
Quand on veut uploader un fichier, le $_POST['titre'] n'est plus reconnu ?

Ca commence à m'énèrver tous ca lol.

2 Février 2007 11:53:32

quand un formulaire poste des données (depuis une page A) vers une page (B), celle-ci les récupère dans la variables $_POST (en l'occurence ton titre est bien récupéré).
si aprés tu postes un fichier de B vers une autre page C, le fichier sera recupéré mais le titre non car la variables POST est recrée avec les valeurs postées depuis B

en gros tu as une etape en plus dans ton algorithme qui fait que titre n'existe plus dans C et c'est pour ca que je voulais connaitre la facon dont tu accedes à tester.php ou le cheminement de tes formulaires

donc on en revient à 15 messages avant, la solution est ou bien de reposter titre (avec un input hidden) ou alors d'utiliser les sessions mais depuis la page B au moins.

mais comme je n'ai que des bribes de codes, je peux pas en dire plus.

en aucun cas le fait de mettre un upload dans un formulaire ne cause un probleme.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS