我有一个多维数组($ 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>';
}
}
?>
答案 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