webForumDet fria alternativet

SESSION / array

7 svar · 448 visningar · startad av nordan

nordanMedlem sedan juni 2000929 inlägg
#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?

MatteMedlem sedan aug. 20002 970 inlägg
#2

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.
FuelMedlem sedan okt. 20001 325 inlägg
#3

<?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å ?

MatteMedlem sedan aug. 20002 970 inlägg
#4

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"); 
?>
FuelMedlem sedan okt. 20001 325 inlägg
#5

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

MatteMedlem sedan aug. 20002 970 inlägg
#6

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>";
FuelMedlem sedan okt. 20001 325 inlägg
#7

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

MatteMedlem sedan aug. 20002 970 inlägg
#8

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.

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb