Avatar billede bahn Nybegynder
10. april 2011 - 00:14 Der er 4 kommentarer og
1 løsning

Min kurv driller med int som key

Hej
denne tilføj til kurv fungere fint når bare værdien til key i arrayet ikke er en int.
hvorfor virker den kun nå værdien i key er en streng?:

if (isset($_GET['partid']) && isset($_GET['antal']))
{                 

$querry = "INSERT INTO kurv (ip,varenummer,dato,fra_database)";
$querry .= "VALUES ('".getenv(REMOTE_ADDR)."', '".$_GET['partid']."', now(),'spareparts')";
mysql_query($querry);
    $vare = array($_GET['partid'] => $_GET['antal']);
    if (is_array($_SESSION['kurvpart']))
    {
        if (array_key_exists($_GET['partid'], $_SESSION['kurvpart']))
        {
            $_SESSION['kurvpart'][$_GET['partid']] += $_GET['antal'];
        }
        else
        {
            $_SESSION['kurvpart'] = array_merge($_SESSION['kurvpart'], $vare);
        }
    }
    else
    {
        $_SESSION['kurvpart'] = $vare;
    }
header("Location: ".$_GET['retur']."&itemadded=ok");
//    die;
}

Det går kun galt anden gang jeg kommer en værdi ind som key der er int???
Avatar billede olebole Juniormester
10. april 2011 - 02:15 #1
<ole>

Kan du elaborere lidt på, hvad det betyder, at den ikke virker - og hvad "går galt" betyder?

/mvh
</bole>
Avatar billede bahn Nybegynder
10. april 2011 - 09:18 #2
Hej olebole Jeg skal prøve:
hvis $_GET['partid'] , som er varenumre, indeholder bogstaver eller - eller / er der ingen problemer.

hvis $_GET['partid'] , indeholder rene tal, er der ingen problemer med at tilføje det første nummer.
når man så tilføjer 2. varenummer der er et rent tal, bliver key værdien i arrayet $_SESSION['kurvpart'] nulstilles altså det første varenummer man indtastede for key værdien 0 og det næste 1 osv.
Hvis man så tilføjer et nummer der indeholder bogstaver eller mellemrum / - osv. kommer den rigtigt nok ind i arrayet
her har jeg tilføjet
bs-491588s
323221
46346701
1134-9023-01
og her er et print_r:
Array ( [BS-491588S] => 1 [0] => 1 [1] => 1 [1134-9023-01] => 1 )

nogle ideer??
Avatar billede olebole Juniormester
10. april 2011 - 14:42 #3
På dit print kan jeg ikke se, at det virker hveranden gang. Første gang bliver din key 0. Anden gang bliver din key 1. Men det afspejler ikke de tal, du prøver med.

Har du prøvet at konvertere tallene til strenge? Prøv med strval($_GET['partid'])
Avatar billede bahn Nybegynder
10. april 2011 - 18:49 #4
Nu har jeg prøvet dette:
if (isset($_GET['partid']) && isset($_GET['antal']))
{                 
    $partid = strval($_GET['partid']);
$querry = "INSERT INTO kurv (ip,varenummer,dato,fra_database)";
$querry .= "VALUES ('".getenv(REMOTE_ADDR)."', '".$partid."', now(),'spareparts')";
mysql_query($querry);
    $vare = array($partid => $_GET['antal']);
    if (is_array($_SESSION['kurvpart']))
    {
        if (array_key_exists($partid, $_SESSION['kurvpart']))
        {
            $_SESSION['kurvpart'][$partid] += $_GET['antal'];
        }
        else
        {
            $_SESSION['kurvpart'] = array_merge($_SESSION['kurvpart'], $vare);
        }
    }
    else
    {
        $_SESSION['kurvpart'] = $vare;
    }
}
bs-491588s
323221
46346701
1134-9023-01
når man sætter varene ind i den ovenstående rækkefølge.
er det først anden gang man sætter en int ligende streng ind i arrayet af den "sortere" int værdierne i arrayet på key pladsen!
??

    if (is_array($_SESSION['kurv']) || is_array($_SESSION['kurvtilbehor']) || is_array($_SESSION['kurvpart'])){
    $num_i_kurv = count($_SESSION['kurv'])+count($_SESSION['kurvtilbehor'])+count($_SESSION['kurvpart']);
   
    if ($num_i_kurv == 1)$tekst = $num_i_kurv. " varelinie";
    if ($num_i_kurv > 1)$tekst = $num_i_kurv. " varelinier";
}
Avatar billede bahn Nybegynder
10. april 2011 - 19:02 #5
Don't forget that numeric keys will be renumbered!

Array
(
    [0] => data
)

If you want to append array elements from the second array to the first array while not overwriting the elements from the first array and not re-indexing, use the + array union operator:
<?php
$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester