Web-TorMedlem sedan nov. 200013 890 inlägg Jag har den här koden för att skriva ut innehållet i en kundvagn:
if(count($_SESSION['cart']) > 0){
foreach($_SESSION['cart'] as $item => $p){
echo $_SESSION['cart'][$item]['name'];
echo "<br>";
}
}else{
echo 'Kundvagnen är tom';
}
Hur gör man för att få ut innehållet i omvänd ordning?
MeleaMedlem sedan juli 20033 147 inlägg if(count($_SESSION['cart']) > 0){
arsort($_SESSION['cart']);
foreach($_SESSION['cart'] as $item => $p) {
echo $_SESSION['cart'][$item]['name'];
echo "<br>";
}
}else{
echo 'Kundvagnen är tom';
}
SPiNMedlem sedan mars 20007 896 inlägg Med Meleas kod sorterar du den, med högsta värdet först. Om du vill skriva ut innehållet i omvänd ordning sen värdena stoppades in, får du använda en for-slinga:
for ($i = sizeof($_SESSION['cart']); $i > 0; --$i) {
echo ...
Web-TorMedlem sedan nov. 200013 890 inlägg
SPiN skrev:
m du vill skriva ut innehållet i omvänd ordning sen värdena stoppades in, får du använda en for-slinga:
Ja, det är precis detta jag vill göra. Hur skall jag få ut något värde ut sessionen?
Det här funkar ju inte länge:
echo $_SESSION['cart'][$item]['name']
SPiNMedlem sedan mars 20007 896 inlägg for ($i = sizeof($_SESSION['cart']); $i >= 0; --$i) {
echo $_SESSION['cart'][$i]['name'];
}
Web-TorMedlem sedan nov. 200013 890 inlägg Det var det första jag testade men det ger:
PHP Notice: Undefined offset: 1
MeleaMedlem sedan juli 20033 147 inlägg if(count($_SESSION['cart']) > 0){
$_SESSION['cart'] = array_reverse($_SESSION['cart'], true);
foreach($_SESSION['cart'] as $item => $p){
echo $_SESSION['cart'][$item]['name'];
echo "<br>";
}
} else {
echo 'Kundvagnen är tom';
}
/r
Ska vara array_reverse($_SESSION['cart'], true);
SPiNMedlem sedan mars 20007 896 inlägg Jag ändrade i koden ovanför, den ska ju räkna till $i >= 0 - så att du får med den första posten också.
Ditt felmeddelande tyder däremot på att din array inte har en obruten rad av indexerade element (0, 1, 2, 3 ... n) - det saknas något element någonstans? (0, 1, 3, ... n)?
Hur stoppar du in och tar bort värden ur kundkorgen? Se till att bevara index-positionerna så ska det inte vara några problem.
Web-TorMedlem sedan nov. 200013 890 inlägg array_reverse gillar jag! :)
Enda problemet med din kod är att den sorterar om sessionen varje gång. Men det går ju att lösa genom att använda en lokal variabel.
Tack så mycket!
Web-TorMedlem sedan nov. 200013 890 inlägg Jag kom precis på ett problem. Låt säga att man lägger till följande varor i sin korg.
- Apa
- Bil
- Cykel
Men array_reverse visas kundvagnen så här:
- Cykel 1 st.
- Bil 1 st.
- Apa 1 st.
Allt är frid och fröjd ända tills man lägger till ytterligare en Apa. Då skulle jag vilja att kundvagnen visar sig så här:
- Apa 2 st.
- Cykel 1 st.
- Bil 1 st.
Borde man inte kunna fixa detta genom att lagra en timestamp tillsammans med varje vara och sedan sortera på denna?
Så min fråga är: hur sorterar jag på $_SESSION['cart']['time']?
Web-TorMedlem sedan nov. 200013 890 inlägg
SPiN skrev:
Taskigt minne? ;)
Hehe :e
usort() kommer jag allt ihåg men hur kommer jag överhuvudtaget åt ett värdena inne i sessionen ("time" i detta fall)?
Min session ser ut så här:
cart|a:3:{
i:1;a:3:{
s:8:"quantity";i:1;s:2:"id";s:1:"1";s:4:"time";i:1232220492;
}
i:2;a:3:{
s:8:"quantity";i:1;s:2:"id";s:1:"2";s:4:"time";i:1232220494;
}
i:3;a:3:{
s:8:"quantity";i:1;s:2:"id";s:1:"3";s:4:"time";i:1232220495;
}
}
Web-TorMedlem sedan nov. 200013 890 inlägg Shit! Det här funkar ju! :)
function __compare__values($x, $y) {
return strcmp($y['time'],$x['time']);
}
$temp = $_SESSION['cart'];
usort($temp, "__compare__values");
Nu hoppas jag att jag skall vara klar med den här biten. Tack allihopa för hjälpen!