IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

$_session et header(url)


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut $_session et header(url)
    Bonjour,

    Je cherche à créer un tableau multidimentionnel de ce genre :
    $_SESSION['facture'][0][quantite]=8 //par exemple...

    Lorsque l'utilisateur du site ajoute une autre vente, cela enregistre un nouveau tableau :
    $_SESSION['facture'][1][quantite]=5

    Le souci provient de ce qu'après chaque enregistrement d'un array supplémentaire, je fais un header("location: url"); qui ramène vers la page où le dernier article avait été choisi.

    Du fait de ce header(url) le premier tableaux n'est pas enregistré dans $_SESSION. En revanche, quand je comment le header(url) ou si je dit de payer la facture immédiatement après l'enregistrement du premier tableau, ce premier tableau de $_SESSION est bien trouvé !

    Quelqu'un comprend ça ???

    Merci d'avance !

  2. #2
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    bonjour,

    Peux tu nous envoyer les partis des code concernant tes varaibles de sessions de ta pages 'choix article'.

    Car pour moi tu écrase ou supprime le tableau et le problème ne viens pas de ton header.
    Tuc l'Original, On ne peut que l'aimer

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Merci de ta réponse.

    Voici le bout de code de index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    if (isset($_GET['a'])) //c'est le cas pour les achats et ventes
    {
    include_once('get.a.php');
     
    switch ($_GET['cl']){
    	case '':
    	$envoi= SCRIPT_ADR.'?i='.$_GET['i'].'&next='.$_GET['next'];
    	break;
     
    	default:
    	$envoi= SCRIPT_ADR.'?i='.$_GET['i'].'&next='.$_GET['next'] .'&cl='.$_GET['cl'];
    	break;
    	}
    session_write_close();
     header("Location: $envoi"); //voici le header qui fait mal....
     exit;
    }
    Après cela c'est get.a.php qui est exécuté. Dans ce fichier je teste, dans une boucle switch, si $_GET et $_POST contiennent des ventes et demande de facture. Voici le passage de get.a.php qui s'exécute pour les ventes de plusieurs articles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    case 'vente':
    	$act = $_GET['a']; //je vends
    	$id = $_GET['no']; //identifiant du produit vendu
    	$qte = $_POST['qte']; //quantité vendue
    	$actions->plusMoinsUn($act, $id, $qu_idvin, $qu_majvin, $qu_ou, $qte); //change le stock
    	$actions->empti_vendi($taux_tva, $id, $qte, $qu_idvin, $qu_vte, $qu_empt); //enregistre la vente pour le calcul t.v.a.
    	if($_POST['f'] == 'f') //c'est à dire si une facture est demandée
    {
    		if(!isset($_SESSION['facture']))
    //si c'est le premier article ajouté à la facture (et c'est ceci qui est "perdu":
    {
    			$facture->nouvelle($id, $qte, $qu_idvin, $_POST['i'], $taux_tva, $smarty);
    		}else{
    //s'il y a déjà des articles dans le array facture :
    			$facture->suivante($id, $qte, $qu_idvin, $_POST['i'], $taux_tva, $smarty);
    		}
    	}
    	break;
    Et voici la méthode $facture->nouvelle de mon fichier Facture.class.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public function nouvelle ($id, $qte, $qu_idvin, $i, $taux_tva, $smarty){
    	$huh = $qu_idvin . $id;
    //$huh est la requete mysql permettant de 
    //chercher des infos relatives à l'article vendu.
    	$demande = $this->execrequete($huh);
    	while ($nn = $this->objetsuivant($demande)){
    	$pr_ht =  $nn->prix_empt_ht;
    	$port = $nn->port;
    	$coeff = $nn->coeff;
    	$_SESSION['facture'][1]['qte'] = $qte;
    	$_SESSION['facture'][1]['nom_vin'] = $nn->nom_vin;
    	$_SESSION['facture'][1]['annee'] = $nn->annee;
    	}
    	$coefTVA = ($taux_tva + 100) / 100;
    	$vte_ttc = round(($pr_ht + $port ) * $coeff, 2);
    	$vte_ht = round($vte_ttc / $coefTVA, 2);
    	$_SESSION['facture'][1]['prix_ht'] = $vte_ht;
    	$_SESSION['facture'][1]['prix_ht_tot'] = $vte_ht * $qte;
    				if($i == 'i'){
    				$this->imprime($taux_tva);
    //si j'appelle cette méthode imprime ici, $_SESSION['facture'] n'est pas perdu
    				}else{
    				ob_start($_SESSION['facture']);
    //tentative débile de garder $_SESSION['facture'] puisque immédiatement
    //après ce bloc, index.php continue de s'exécuter, et je tombe sur 
    // le header...
    				}
    	}

    Un grand merci de m'avoir répondu. J'espère que tu peux éclairer la question...

  4. #4
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    bonjour,

    Je ne vois pas trop ou ca coince, vérifie juste si tes session_start() sont bien présents, et fait un var_dump($_SESSION) au début de tes scripts


    En revanche je me pause des questions sur ob_start et session_write_close... Désolé, de ne pas pouvoir t'aider plus..


    P.S: error_reporting = E_ALL dans le php.ini m'aide bien à débugguer.
    Tuc l'Original, On ne peut que l'aimer

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé une manière d'éviter le header et tout march nickel maintenant. Merci beaucoup pour ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2008, 02h27
  2. Ne pas imprimer URL dans le header?
    Par maagic dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/06/2007, 13h24
  3. [Système] Header redirection 301 et URL rewriting
    Par bobic dans le forum Langage
    Réponses: 6
    Dernier message: 16/04/2007, 20h23
  4. [Cookies] Setcookie et header("Location: url")
    Par Cyoul dans le forum Langage
    Réponses: 6
    Dernier message: 10/10/2006, 05h06
  5. header('Location:$url') VS session_start()
    Par Paniez dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo