Transfert de variables

Résolu
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010 - 2 janv. 2009 à 11:45
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010 - 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

37 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
3 janv. 2009 à 22:49
$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 -
3
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
5 janv. 2009 à 20:19
Je n'avais pas mis les doubles quotes dans la variable table :
nouvel_id("latable");
3
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
2 janv. 2009 à 12:06
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:
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 12:25
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 12:37
Salut,

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

Kohntark -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 12:38
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.
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 12:41
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.
0
pysco68 Messages postés 681 Date d'inscription samedi 26 février 2005 Statut Membre Dernière intervention 21 août 2014 8
2 janv. 2009 à 12:42
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é...
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 12:44
Tu as des problèmes de cache Jonas ?

Kohntark -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 12:51
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)."
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 13:08
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 -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 13:35
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 ?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 14:01
Re

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

Kohntark -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 14:05
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 ...
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 14:28
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 -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 14:45
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");
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 14:59
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 -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 15:30
Je vous ai envoyé ma page1.php en MP.
Merci de votre aide.
Jonas03
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
2 janv. 2009 à 15:32
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 -
0
cs_jonas03 Messages postés 52 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 7 mars 2010
2 janv. 2009 à 15:42
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.
0
Rejoignez-nous