printin多维数组

时间:2017-06-11 02:17:01

标签: php arrays multidimensional-array

我有一个多维数组($ SESSION)并在写入之后(使用函数ajout_liste)我想打印它(使用函数affiche_liste)。我的问题是,即使我在里面写,$ SESSION总是空的 任何的想法 ?

 <?php

    class liste_livre{
        public $SESSION = array('Titre' => array(),
                                'Auteur' => array(),
                                'Editeur' => array(),
                                'Annee' => array(),
                                );
        // create a formulary
        public function notre_formulaire() {

            $str = '<form action="" method="POST">';
            $str .= 'Que voulez vous faire ?<br>';
            $str .= 'Ajouter un livre<br>';
            $str .= '<input type="radio" name="radio" value="ajoute"><br>';
            $str .= '<input type="text" name="titre" placeholder="Titre">';
            $str .= '<input type="text" name="auteur" placeholder="Auteur">';
            $str .= '<input type="text" name="editeur" placeholder="Editeur">';
            $str .= '<input type="text" name="annee" placeholder="Annee">';
            $str .= '<br>';
            $str .= 'Afficher la liste des livres<br>';
            $str .= '<input type="radio" name="radio" value = "affiche"><br>';
            $str .= '<p>';
            $str .= '<input type="Submit" name="submit" value = "Valider">';
            $str .= '</form>';

            return $str;
        }

        public function form_liste(){
            //ADD ERROR IF EMPTY !!!!!!!!!!!!!
            $titre = $auteur = $editeur = $annee = "";

            // print the formulary
            echo $this-> notre_formulaire();

            // the choice
            if (isset($_POST['radio'])) {
                // On recupere son choix dans la variable $choix
                $choix = $_POST['radio'];
                // Si cette variable est egale à ajout, c'est a dire si la personne veut ajouter un nouveau livre
                if( $choix == 'ajoute' ){
                    echo $this->ajout_liste($_POST["titre"],$_POST["auteur"],$_POST["editeur"],$_POST["annee"]);
                }
                // Si la personne veut juste afficher les livres 
                else if ( $choix == 'affiche' ){
                    $this->affiche_list();
                }
            }
        }
        //add a book
        public function ajout_liste($titre,$auteur,$editeur,$annee){
            $this ->SESSION['Titre'] = $titre;
            $this ->SESSION['Auteur'] = $auteur;
            $this ->SESSION['Editeur'] = $editeur;
            $this ->SESSION['Annee'] = $annee;
            echo $titre;
            echo $auteur;
            echo $editeur;
            echo $annee;
        }

        // print the list
        public function affiche_list(){

            $nb = count($this->SESSION['Titre']);
            if ($nb != 0){
                foreach ($this -> SESSION as $masterkey => $mastervalue) {

                    for($x = 0; $x <= $nb; $x++){
                        echo "<p>".$masterkey." ".$mastervalue[$x]."<br>";
                    }

                }
            }
            else{
                echo "Il n'y a pas de livre ! Veuillez en enregistrer pour pouvoir les afficher ";
                }

             }
            /*
            echo $this ->SESSION['Titre'];
            echo $this ->SESSION['Auteur'];
            echo $this ->SESSION['Editeur']; 
            echo $this ->SESSION['Annee']; */

        }
    }       



    ?>

编辑: 由于index.php文件,我调用了所有函数:

    <?php
@ini_set('display_errors', 'on');

require_once('page.php');
require_once('liste_livre.php');

$form = new liste_livre();
$pag = new Page();


echo $pag->entete('premiere page');
$form -> form_liste();
echo $pag->piedPage();

?>

这是我添加书籍时得到的内容:enter image description here

当我想要打印书单时(即使在我添加一个:哈利波特在这种情况下)我有这个意味着它是空的:enter image description here

EDIT2:这是Page class

的代码
<?php

class Page {

    private $titre;

    public function entete($title)
    {
        $this->titre = $title;
        return '<!doctype html>
        <html lang="fr">
        <head>
            <meta charset="utf-8">
            <title>'.$this->titre.'</title>
            <!--<link rel="stylesheet" href="style.css">  fichier a creer -->
            <!--<script src="script.js"></script>  fichier a creer -->
        </head>
        <body>';
    }

    public function piedPage()
    {
        return '</body></html>';
    }

}
?>

1 个答案:

答案 0 :(得分:0)

您需要先启动会话才能使用它。

您可以使用session_start

custom-template.component.ts

或者您可以在php.ini文件中启用session.auto_start,但这会影响服务器上的所有php文件,并可能会破坏依赖于启动自己会话的系统。

<?php
@ini_set('display_errors', 'on');
session_start(); // <-- start the session and make $_SESSION available

require_once('page.php');
require_once('liste_livre.php');

$form = new liste_livre();
$pag = new Page();


echo $pag->entete('premiere page');
$form -> form_liste();
echo $pag->piedPage();

如果你真的想要使用一个名为[PHP] session.auto_start = 1 的全局变量,那么无论何时使用它都需要它。

$SESSION

然后还获取<?php @ini_set('display_errors', 'on'); global $SESSION; // <-- make $SESSION a global require_once('page.php'); require_once('liste_livre.php'); $form = new liste_livre(); $pag = new Page(); echo $pag->entete('premiere page'); $form -> form_liste(); echo $pag->piedPage(); 中的全局$SESSION

liste_livre

如果您想在<?php global $SESSION; // <-- tell PHP to use global $SESSION and not a class specific version class liste_livre{ // This won't use the global $SESSION and will instead use $this->SESSION; public $SESSION = array('Titre' => array(), 'Auteur' => array(), 'Editeur' => array(), 'Annee' => array(), ); // create a formulary public function notre_formulaire() { global $SESSION; // <-- global $SESSION // Get something from global session $SESSION['something']; // Get something from class session $this->SESSION['Titre']; ... 中使用$form会话,也可以这样做,但您需要将$page设为全局或在$form内调用:

Page

全球范例

<?php
require_once('liste_livre.php');

class Page {

    private $titre;

    public function entete($title)
    {
        $form = new liste_livre();

        $this->titre = $form->SESSION['Titre'];
        return '<!doctype html>
        <html lang="fr">
        <head>
            <meta charset="utf-8">
            <title>'.$this->titre.'</title>
            <!--<link rel="stylesheet" href="style.css">  fichier a creer -->
            <!--<script src="script.js"></script>  fichier a creer -->
        </head>
        <body>';
    }

    public function piedPage()
    {
        return '</body></html>';
    }

}

<?php @ini_set('display_errors', 'on'); require_once('page.php'); require_once('liste_livre.php'); global $form; // <-- make $form global $form = new liste_livre(); $pag = new Page(); echo $pag->entete('premiere page'); $form -> form_liste(); echo $pag->piedPage();

中使用$form
Page