N nordan Medlem sedan juni 2000 949 inlägg Frågan 16 feb. 2003 00:49 #1 Hej!
Om man vill ha en session med samma namn som man kan ha olika värden i, som en array. Måste man göra en array av en array då? För vad jag förstår så är den session man registrerar redan en array eller? Jag förstår dock inte hur man skall hämta dess värden? Så här har jag fått det att funka men det kanske finns något bättre sätta att göra det på?
session_start();
$en_session = array(’Värde ett’,’Värde två’,’Värde tre’);
session_register(”en_session”);
När jag sedan hämtar den så skriver jag:
session_start();
for($i=0;$i<=2;$i++)
{
$HTTP_SESSION_VARS[’en_session’][$i];
}
Går det att få denna kod smidigare och få samma resultat?
Matte Medlem sedan aug. 2000 2 975 inlägg Ser väl ok ut. Men har du en version av PHP som är 4.1.0 eller senare, så kan du göra så här:
session_start();
$_SESSION['en_session'] = array('Värde ett', 'Värde två', 'Värde tre');
Då använder du även $_SESSION['en_session'] när du hämtar dina värden.
För att följa koden när du kommer tillbaka till skriptet efter några månader så underlättar det om du använder en associativ array:
session_start();
$_SESSION['en_session']['namn1'] = 'Värde1';
o.s.v.
Fuel Medlem sedan okt. 2000 1 285 inlägg <?php
session_start();
if (isset( $_POST['add_item'])) {
$_SESSION['webshop'][$_POST['item_id']] ++;
}
header ("location:cart.php");
?>
Nu lagrar jag alltså bara produktens id nummer, men skulle t.ex vilja ha med antal också.. hur går jag tillväga då ?
Matte Medlem sedan aug. 2000 2 975 inlägg Jag förstår inte vad ++ har där att göra.
Innehåller $_POST['item_id'] ett artikelnummer så skulle du kunna göra så här:
<?php
session_start();
if (isset( $_POST['add_item'])) {
$_SESSION['webshop'][$_POST['item_id']]['pieces'] = $_POST['pieces'];
}
header ("location:cart.php");
?>
Det skulle du också kunna använda för att lagra andra uppgifter typ storlek eller färg:
<?php
session_start();
if (isset( $_POST['add_item'])) {
$_SESSION['webshop'][$_POST['item_id']]['pieces'] = $_POST['pieces'];
$_SESSION['webshop'][$_POST['item_id']]['size'] = $_POST['size'];
$_SESSION['webshop'][$_POST['item_id']]['color'] = $_POST['color'];
}
header ("location:cart.php");
?>
Fuel Medlem sedan okt. 2000 1 285 inlägg cool.. hade det tungt med denna session array tidigare idag men började komma igång för en stund sen trots min trötthet och nu när jag får mer hjälp på traven vågar jag inte lägga mig :)
++ använde jag för att lagra mer än 1 siffra
Matte Medlem sedan aug. 2000 2 975 inlägg Men jag ska gå och lägga mig nu :)
Då var alltså inte item_id artikelnummer?
Vill du ha en sådan array (och inte som jag gjorde ovan) så kan du göra så här:
<?php
session_start();
if (isset( $_POST['add_item'])) {
$new_post['art_nr'] = $_POST['art_nr'];
$new_post['antal'] = $_POST['antal'];
$_SESSION['webshop'][] = $new_post;
}
header ("location:cart.php");
?>
Men själv hade jag nog gjort varianten med artikelnummer som index.
För att få grepp om hur arrayen är uppbyggd kan du, när du lagt till ett par artiklar, köra det här:
echo "<pre>";
print_r($_SESSION['webshop']);
echo "</pre>";
Fuel Medlem sedan okt. 2000 1 285 inlägg jo.. add_item var artikel nummer.. time for john blund här med.. over n out....
funkade bra med ditt första exempel har mera problem med att lägga till samma artikel igen , måste nog göra nån slags sökning i sessions arrayen om det .. arrss.. zzzzzzz zzova nu
Matte Medlem sedan aug. 2000 2 975 inlägg Det är just för sökningens skull som det är en fördel att ha artikelnummer som index.
Kommandot blir identiskt oberoende av om du ändrar eller lägger till.