Transfert de variables [Résolu]

cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 11:45 - Dernière réponse : cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention
- 5 janv. 2009 à 20:19
Bonjour a tous,
J'ai un formulaire avec plusieurs variables et je voudrais récupérer ces valeurs dans d'autres pages mais je n'y arrive pas.
Explications: page1-->mon formulaire avec les données
page1 envoie vers page2 et la page2 choisit après la page3 ou 4 ou 5, et je veut que les valeurs soient transmises dans les 3,4,5.
J'espère avoir été assez précis
merci de vos réponses
Afficher la suite 

Votre réponse

37 réponses

Meilleure réponse
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 3 janv. 2009 à 22:49
3
Merci
$id_periode2=$conn->nouvel_id(); Ici c'est pareil mais sa marche bien. Aucun problème



=> non, ça ne peut pas marcher :

function nouvel_id($table) // erreur, l'argument n'est pas présent
    {   
        $id='id'.$table.''; // erreur, $table n'existe pas
       
               
        $identif=$this->requete("select ".$id." from ".$table." order by ".$id." desc limit 1");
=> SELECT id FROM ORDER BY id DESC LIMIT 1 // plantage
                if($this->nb_ligne($identif)==0) // peut être est ce validé ?
                    $identifiant=1;
            else{
                $res_identif=$this->extraction_tab_numerique($identif);
                $identifiant=$res_identif[0]+1;
                }
           
        return $identifiant;
// retourne soit une erreur soit 1, mais pas de résultat SQL
Il te faut revoir tous tes accès à la BD.
Soit la requête est nécessaire et il faut renseigner l'argument (la table) soit elle ne l'est pas et il faut la supprimer avec toutes les datas qui en découlent.

Tiens moi au courant,

Kohntark -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de kohntark
Meilleure réponse
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 5 janv. 2009 à 20:19
3
Merci
Je n'avais pas mis les doubles quotes dans la variable table :
nouvel_id("latable");

Merci cs_jonas03 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de cs_jonas03
pysco68 681 Messages postés samedi 26 février 2005Date d'inscription 21 août 2014 Dernière intervention - 2 janv. 2009 à 12:06
0
Merci
Bonjours,

solution 1:

tu peux faire un champs caché dans lequel tu stocke tes valeurs... par exemple a l'aide des fonctions serialize() et unserialize() ( http://fr2.php.net/serialize | http://fr2.php.net/manual/fr/function.unserialize.php )

donc en pseudo code:
<hr size= "2" width="100%" />-> page 1:  form1
-> page 2:  form2 avec champ "hidden" data_from_1 value ="serialise(les_valeurs_de_form1" )
-> page 3:  form3 avec champ "hidden" data_from_(1+2) value ="serialise(les_valeurs_de_form1")
.....
<hr size="2" width="100%" />
je pense que c'est relativement facile a mettre en œuvre ;)

solution 2:

faire environ la même chose en utilisant une session de banque de donnée en complêtant tour a tour les champs de la bdd....

si tu a plus de questions n'hésite pas

<hr size="2" width="100%" />Some Geek: Tous les programmeurs sont des brutes, [...] ils violent chaque ligne, chaque language [...] et n'on aucun goût pour la beauté de ./sh

Pysco68:
Commenter la réponse de pysco68
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 12:25
0
Merci
Je ne peut pas utiliser cette méthode car je ne ve pas mettre les données dans la bdd.je m'explique :
la page1 ressemble a ça :
echo "

<form name='convention' method='post' action='page2.php'>";
        echo '
       
etc...
page2-->elle permet de choisir en fonction de $idetudiant la page qu'il lui faut.soit 4,5,6
page4,5,6 elle permettent de créer chacunes un pdf avec les données du formulaire de la page1 sans que les données soient mises dans la bdd.
exemple de page4 :
$pdf->Text(112.13,188.35,($_POST['nom_etudiant'])." ".unhtmlentities($resconv['prenom_etudiant']));

cela permet de mettre le nom de l'etudiant et son prenom dans le pdf sans avoir a mettre les données dans la bdd.

Merci de m'aider.
Commenter la réponse de cs_jonas03
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 12:37
0
Merci
Salut,

L'utilisation des sessions serait sans doute une fort bonne idée.

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 12:38
0
Merci
Je ne peut pas utiliser cette méthode car je ne ve pas mettre les données dans la bdd.je m'explique :
la page1 ressemble a ça :
echo "

<form name='convention' method='post' action='page2.php'>";
        echo '
       
etc...
page2-->elle permet de choisir en fonction de $idetudiant la page qu'il lui faut.soit 4,5,6
page4,5,6 elle permettent de créer chacunes un pdf avec les données du formulaire de la page1 sans que les données soient mises dans la bdd.
exemple de page4 :
$pdf->Text(112.13,188.35,($_POST['nom_etudiant'])." ".unhtmlentities($resconv['prenom_etudiant']));

cela permet de mettre le nom de l'etudiant et son prenom dans le pdf sans avoir a mettre les données dans la bdd.

Merci de m'aider.
Commenter la réponse de cs_jonas03
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 12:41
0
Merci
Je ne peut pas utiliser cette méthode car je ne ve pas mettre les données dans la bdd.je m'explique :
la page1 ressemble a ça :
echo "

<form name='convention' method='post' action='page2.php'>";
        echo '
       
etc...
page2-->elle permet de choisir en fonction de $idetudiant la page qu'il lui faut.soit 4,5,6
page4,5,6 elle permettent de créer chacunes un pdf avec les données du formulaire de la page1 sans que les données soient mises dans la bdd.
exemple de page4 :
$pdf->Text(112.13,188.35,($_POST['nom_etudiant'])." ".unhtmlentities($resconv['prenom_etudiant']));

cela permet de mettre le nom de l'etudiant et son prenom dans le pdf sans avoir a mettre les données dans la bdd.

Merci de m'aider.
Commenter la réponse de cs_jonas03
pysco68 681 Messages postés samedi 26 février 2005Date d'inscription 21 août 2014 Dernière intervention - 2 janv. 2009 à 12:42
0
Merci
je ne vois pas pourquoi tu ne pourrais pas utiliser les deux variantes.... et comme Kohntark l'a dit... utiliser les sessions serait la meilleur des deux solutions... surtout coté sécurité...
Commenter la réponse de pysco68
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 12:44
0
Merci
Tu as des problèmes de cache Jonas ?

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 12:51
0
Merci
Désolé pour ces problemes de messages. Je veux bien utiliser les sessions mais je ne voit pas comment faire le lien avec les pages.
Je doit faire un truc du genre
$_SESSION['nom_etudiant']=$nom  dans la page1 ?

et je mets quoi dans les autres pages, un code du genre :
$pdf->Text(112.13,188.35,($nom)."
Commenter la réponse de cs_jonas03
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 13:08
0
Merci
Non, tu ne fais rien dans la page1
Tu récupères les infos de ton formulaire dans la page2, et tu les affectes aux variables de sessions, par ex :

$_SESSION['nom_etudiant'] = $_POST['nom_etudiant'];
[...]
Si la page2 ne sert qu'à la redirection en fonction de l'id, du fait un beau :
switch ($_SESSION['idetudiant']) {
   case 'bhjkbugiugm':
   $location = page4;
   break;
   case 'boooouds':

   $location = page5;

   break;
   [...]
}
header("Location:$location");

Puis dans tes pages 4,5,6 ... :
$pdf->Text(112.13,188.35,($_SESSION['nom_etudiant'])."

C'est beaucoup plus souple et sécuritaire que sérialiser les données.
En plus ça te permet très simplement de réutiliser ces données ailleurs si besoin est.

Cordialement,

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 13:35
0
Merci
Quand je fait : $_SESSION['nom_etudiant'] = $_POST['nom_etudiant']; il me dit que le nom_etudiant est pas defini alors que dans la page1 j'envoie nom_etudiant grace a :
<form name='convention' method='post' action='page2.php'>

comment je peut faire pour recuperer ce nom_etudiant ?
Commenter la réponse de cs_jonas03
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 14:01
0
Merci
Re

Quel est le message d'erreur exactement ?
humm ... tu as bien fait un session_start() hein ?

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 14:05
0
Merci
J'ai bien fait session_start()  et j'ai ça comme erreurs :
Notice: Undefined index: nom_etudiant in ...
Notice: Undefined index: idetudiant in...
Notice: Undefined variable: location in ...
Commenter la réponse de cs_jonas03
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 14:28
0
Merci
Heu ... ça devrait marcher pourtant.

Questions cons :
Les lignes indiquées par les erreurs correspondent elles bien à l'affectation des vars de session ?
Le fichier de l'erreur est bien page2.php ? (avec les header(location) on ne sait jamais)

( je ne te prends pas pour un abruti avec ces questions, c'est juste que qqfois quand on a la tête dedans on zappe l'évidence)

Tente un debug en mettant un print_r($_POST); tout en haut de page2.php

Poste plus de code sinon, parce que sur ce que tu as fourni je ne vois pas.

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 14:45
0
Merci
les lignes d'erreurs sont les lignes ou il y a :
erreur1 : $_SESSION['nom_etudiant'] = $_POST['nom_etudiant'];
erreur2 : switch ($_SESSION['idclasse']) {
erreur3 : header("Location:$location");
et c'est bien sur la page2.php.

Quand je fait le debug j'ai Array ( )  qui apparait avec les erreurs.

Je vous donne un bout du code de la page2 avant modif

if($_SESSION['niveau'] == 0 || $_SESSION['niveau']==1 || $_SESSION['niveau']==2)
    {
   
    $idetudiant=NULL;
        include('../connexion/connexion.php');           
          include('../utile.php');
        $conn=new CONNEXIONBDD();
           $conn->connexion();

                $idlog=$_SESSION['idlogin'];
        $repidp=$conn->requete("select id_personne from tlogin where idtlogin='$idlog'");
        $residp=$conn->extraction_tab($repidp);
        $idetudiant=$residp['id_personne'];
       
           
            $rep=$conn->requete("select idclasse from etudiant where idetudiant='$idetudiant'");   
           
            if(!$rep)
                echo "Erreur lors de la rechercher de données";
            else
                {
                $rep=$conn->requete("select typeconv from classe,etudiant where etudiant.idclasse=classe.idclasse and idetudiant='$idetudiant'");
                $res=$conn->extraction_tab($rep);
                $type_conv=$res['typeconv'];

               
                if($type_conv=="M" && !isset($_POST['conv'])){
                 echo "   <center>

<form action='choix_conventions2.php?idconvention=".$idconvention."' method='POST' >
                Choisissez votre type de convention :       <select name='conv'>
                    <option value='non'>Suite</option>
                    <option value='oui'>Nouvelle convention</option>  
                 </select>";

                 
                     echo "</form></center>";   
                }
                else
                    {               
               
                if (isset($_POST['conv']) && $_POST['conv']=='oui')
                      
                  
                if($type_conv=="M")     
                    include("page3.php");   
                else if($type_conv=="N")
                    include("
page4
.php");       
                }
               
            }
        }

apres modif

                if($type_conv =="M" && !isset($_POST['conv'])){
                 echo "   <center>

<form action='choix_conventions2.php?idconvention=".$idconvention."' method='POST' >
                Choisissez votre type de convention :       <select name='conv'>
                    <option value='non'>Suite</option>
                    <option value='oui'>Nouvelle convention</option>  
                 </select>";

                     echo "</form></center>";
               
                }
                else
                    {                           

$_SESSION['nom_etudiant'] = $_POST['nom_etudiant'];
                   
switch ($_SESSION['idclasse']) {
   case 1:
   $location = page3.php;
   break;

   case 2:

   $location = page4.php;

   break;

}
header("Location:$location");
Commenter la réponse de cs_jonas03
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 14:59
0
Merci
Quand je fait le debug j'ai Array ( )

=> inutile d'aller plus loin, tu as une erreur dans ta page formulaire

Poste le code complet de page1 où se trouve ton formulaire.

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 15:30
0
Merci
Je vous ai envoyé ma page1.php en MP.
Merci de votre aide.
Jonas03
Commenter la réponse de cs_jonas03
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 2 janv. 2009 à 15:32
0
Merci
Bon, il y a pas mal de monde dans ton fichier envoyé en MP.

Ce que je vois au premier coup d'oeil, c'est que toutes les vars non définies sur page2.php sont conditionnées par if($_SESSION['niveau']!=0) {

9 chances / 10 que la condition ne soit jamais vraie.
Fais le test, mets juste ça en tout début de page :
print_r($_SESSION);
regarde si 'niveau' est différent de 0, à mon avis il n'y est jamais.
modifie pour le debug 2/3 type "hidden" faisant parti du "if"en "text" et regarde si ils s'affichent.

Cordialement,

Kohntark -
Commenter la réponse de kohntark
cs_jonas03 52 Messages postés samedi 20 octobre 2007Date d'inscription 7 mars 2010 Dernière intervention - 2 janv. 2009 à 15:42
0
Merci
Quand je mets print_r($_SESSION); j'obtient :
 Array ( [idlogin] => 3 [nom] => VIGNAUD [prenom] => Emmanuel [niveau] => 2 )
donc il y a bien un niveau different de 0.
Commenter la réponse de cs_jonas03

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

transfert de variables - page 2