Travailler sur un projet et rencontrer des difficultés pour affecter un tableau multidimensionnel à une session.PHP: Affectation d'un tableau multidimensionnel à une session
Informations sur le projet:
entreprises devraient inscrire/livre pour les cours sur le site et une entreprise peut inscrire plus d'un cours et pour chaque cours, l'entreprise doit préciser le nombre de candidats et de leurs données bio.
Exemple:
Si enregistre la société XYZ pour le cours A, Cours B et Cours C. Et pour chaque cours fournit l'information de candidat comme suit:
<?php
$all_reg_courses = array
(
$course_id => array(
"candidate_no" => $cand_no,
"all_candidates" => array(
array
(
'cand_name' => 'Alex Holmes',
'cand_email' => '[email protected]',
'cand_sex' => 'Male',
'cand_phone' => '070043635690',
'cand_job' => 'IT'
),
array
(
'cand_name' => 'Tilla Reel',
'cand_email' => '[email protected]',
'cand_sex' => 'Female',
'cand_phone' => '0700833435690',
'cand_job' => 'HR'
),
array
(
'cand_name' => 'Bill Enya',
'cand_email' => '[email protected]',
'cand_sex' => 'Male',
'cand_phone' => '07008055435690',
'cand_job' => 'Admin'
)
)
),
$course_id => array(
"candidate_no" => $cand_no,
"all_candidates" => array(
array
(
'cand_name' => 'Alan Pole',
'cand_email' => '[email protected]',
'cand_sex' => 'Male',
'cand_phone' => '07009973635690',
'cand_job' => 'IT'
),
array
(
'cand_name' => 'Coleen Curtis',
'cand_email' => '[email protected]',
'cand_sex' => 'Female',
'cand_phone' => '5553435690',
'cand_job' => 'HR'
)
)
),
$course_id => array(
"candidate_no" => $cand_no,
"all_candidates" => array(
array
(
'cand_name' => 'Tamia James',
'cand_email' => '[email protected]',
'cand_sex' => 'Female',
'cand_phone' => '7673435690',
'cand_job' => 'HR'
)
)
)
);
?>
Ces données fournies pour les différents cours et la les candidats nommés pour chaque cours seront stockés temporairement dans une session et seront éventuellement envoyés dans la base de données si "Company XYZ" clique enfin sur le bouton "final submit" sinon toutes les données de la session seront détruites après un temps spécifique (ie cours le panier de réservation sera vidé)
J'ai essayé d'assigner le tableau multi-dimensionnel d'échantillon ci-dessus dans une session mais ce n'est pas seulement fonctionnant.
Obtention d'un message d'erreur: Impossible d'utiliser le décalage de chaîne;
Voici le code pour annexant le tableau à la session:
<?php
session_name("cand_cart");
session_start();
$c_id = $_POST['c_id'];
//$cand_no = $_POST['cand_no'];
$_SESSION['cand_cart']['c_id']['cands'] = array();
$_SESSION['cand_cart']['c_id'] = array();
$_SESSION['cand_cart']['c_id']['cand_no'] = array();
$_SESSION['cand_cart']['c_id']['cand_no'] = $_POST['cand_no'];
$_SESSION['cand_cart']['c_id'] = $_POST['c_id'];
//$candidates = array();
foreach ($_POST['candidate'] as $i => $can)
{
$candidates[$i] = array();
foreach ($can as $key => $value)
{
//$candidates[$i][$key] = $value;
$_SESSION['cand_cart']['c_id']['cands'][$i][$key] = $value;
}
}
echo '<pre>';
//var_dump($candidates);
print_r($_SESSION['cand_cart']);
echo '</pre>';
echo "<br><br>";
?>
<table border="1" cellspacing="0" cellpadding="6">
<thead>
<th>#</th>
<th>Name</th>
<th>Phone</th>
<th>Email</th>
<th>Sex</th>
<th>Position</th>
</thead>
<tbody>
<?php
foreach ($_SESSION['cand_cart'] as $i => $can)
{
$c = (object) $can;
$sn = $i + 1;
echo '<tr><td>' . $sn . '</td><td>' . $c->name . '</td><td>' . $c->phone . '</td><td>' . $c->email . '</td><td>' . $c->sex . '</td><td>' . $c->pos . '</td></tr>';
}
?>
</tbody>
</table>
serais très reconnaissant obtenir de l'aide avec ce .. Merci!
Quelle est l'erreur PHP exacte? – Rygu
@Rygu, "Impossible d'utiliser le décalage de chaîne;" est écrit là – k102
Avez-vous un numéro de ligne? C'est peut-être ici '$ _SESSION ['cand_cart'] ['c_id'] ['cands'] [$ i] [$ key] = $ valeur;' parce que vous ne semblez jamais le faire descendre à de nombreuses dimensions. Cependant, j'utiliserais plutôt des objets orientés objet plutôt qu'une cacophonie de tableaux multidimensionnels, cela ne ferait que vous hanter partout où vous allez utiliser ceci. OOP a été inventé pour une raison, et PHP5 a été entièrement orienté objet pour la même raison ... juste une suggestion cependant. – jbx