Avatar billede thorus Nybegynder
18. juli 2004 - 09:01 Der er 12 kommentarer og
1 løsning

Foreach as more

Hvordan sætter jeg de 2 foreach sammen?

foreach ($ses_basket_items as $basket_item)
foreach ($ses_basket_items_size as $basket_items_size)
Avatar billede thorus Nybegynder
18. juli 2004 - 09:22 #1
jeg kan ikke finde fejlen i det her kode

$basket_position_counter = 0;
            $double = 0;
           
            foreach ($ses_basket_items as $basket_item)
            {
           
                foreach ($ses_basket_items_size as $basket_items_size)
                {
                   
                      if ($basket_item == $p_id && $basket_items_size == $size)
                      {
                          echo "hej2";
                          $double = 1;
                            $basket_position=$basket_position_counter;
                     
                      }
                      $basket_position_counter++;
                     
                }
               
            }
Avatar billede googolplex Novice
18. juli 2004 - 09:37 #2
$basket_position_counter = 0;
$double = 0;

foreach ($ses_basket_items as $basket_item)
{
    foreach ($basket_item as $basket_items_size)
    {
        if ($basket_item == $p_id && $basket_items_size == $size)
        {
            echo "hej2";
            $double = 1;
            $basket_position=$basket_position_counter;
        }
        $basket_position_counter++;
    }
}
Avatar billede googolplex Novice
18. juli 2004 - 09:38 #3
Men du kan ikke sige:

$basket_item == $p_id

$basket_item er jo et array, ellers kan du jo ikke køre foreach på den igen.
Avatar billede googolplex Novice
18. juli 2004 - 09:39 #4
Prøv at skriv præcis hvad du vil, så skal jeg lave det for dig (hvis jeg kan :)).
Avatar billede thorus Nybegynder
18. juli 2004 - 09:46 #5
sådan her virker der.

$basket_position_counter = 0;
            $double = 0;
         
            foreach ($ses_basket_items as $basket_item)
            {
         
                foreach ($ses_basket_items_size as $basket_items_size)
                {
                 
                      if ($basket_item == $p_id && $basket_items_size == $size)
                      {
                          echo "hej2";
                          $double = 1;
                            $basket_position=$basket_position_counter;
                   
                      }
                      $basket_position_counter++;
                   
                }
             
            }
Avatar billede thorus Nybegynder
18. juli 2004 - 09:47 #6
forkert. sådan her

            foreach ($ses_basket_items as $basket_item)
            {


                      if ($basket_item == $p_id && $basket_items_size == $size)
                      {
                          echo "hej2";
                          $double = 1;
                            $basket_position=$basket_position_counter;

                      }
                      $basket_position_counter++;



            }
Avatar billede thorus Nybegynder
18. juli 2004 - 09:48 #7
men så får den ikke "$ses_basket_items_size" med dvs. den tjekker ikke om der er en varer i kurven som har en str. eks. 42 sko i forvejen
Avatar billede thorus Nybegynder
18. juli 2004 - 09:50 #8
nu tjekker den bare om varer nr eks. "3" er i kurven og det giver det forkerte res. så ligger den bare 1 til antal af varer nr 3 i stedet for at lave en ny række pga. man har valgt en anden størrelse sko
Avatar billede googolplex Novice
18. juli 2004 - 09:59 #9
foreach ($ses_basket_items as $key => $basket_item)
{
    if ($basket_item == $p_id && $basket_items_size[$key] == $size)
    {
        echo "hej2";
        $double = 1;
        $basket_position=$basket_position_counter;
    }
    $basket_position_counter++;
}

Men det kommer an på hvor du får $basket_items_size, er det samme nøgler som $ses_basket_items?
Avatar billede thorus Nybegynder
18. juli 2004 - 10:09 #10
jeg er ikke mester i arrays men ja jeg regner med at de hænger sammen
Avatar billede thorus Nybegynder
18. juli 2004 - 10:12 #11
<?
    session_start();
    if ($p_id != "")
    {
        if (session_is_registered("ses_basket_items") && $ses_basket_items_count > 0) // hvis der allerede er lagt noget i kurven
        {
        echo "hej7";   
            $basket_position_counter = 0;
            $double = 0;
           
            foreach ($ses_basket_items as $basket_item)
            {
           
                foreach ($ses_basket_items_size as $basket_items_size)
                {
                   
                      if ($basket_item == $p_id && $basket_items_size == $size)
                      {
                          echo "hej2";
                          $double = 1;
                            $basket_position=$basket_position_counter;
                     
                      }
                      $basket_position_counter++;
                     
                }
               
            }
                   
            if ($double == 1)
            {
            echo "hej5";
                echo $basket_position;
                $ses_basket_items_amount[$basket_position] = $ses_basket_items_amount[$basket_position] + $amount;               
            }
            else
            {
            echo "hej3";   
                $ses_basket_items[] = $p_id;
                $ses_basket_items_amount[] = $amount;
                $ses_basket_items_count++;
                $ses_basket_items_size[] = $size;
            }
        }
        else // dette køres hvis det er første gang man ligger noget i kurven
        {           
       
        echo "hej4";
       
            $ses_basket_items_count = 1;
            $ses_basket_items[0] = $p_id;
            $ses_basket_items_amount[0] = $amount;
            $ses_basket_items_size[0] = $size;
           
            session_register("ses_basket_items_count");
            session_register("ses_basket_items");
            session_register("ses_basket_items_amount");
            session_register("ses_basket_items_size");
        }
    }
?>
Avatar billede thorus Nybegynder
18. juli 2004 - 11:22 #12
Her er hvordan arrayet ser ud:

hej7Array ( [ses_basket_items_count] => 1 [ses_basket_items] => Array ( [0] => 9 ) [ses_basket_items_amount] => Array ( [0] => 1 ) [ses_basket_items_size] => Array ( [0] => 10 ) ) [1[]hej3
Avatar billede thorus Nybegynder
18. juli 2004 - 12:51 #13
tror sørme jeg har fundet en løsning:

<?
    session_start();
    if ($p_id != "")
    {
        if (session_is_registered("ses_basket_items") && $ses_basket_items_count > 0) // hvis der allerede er lagt noget i kurven
        {
           
           
           
            foreach ($ses_basket_items as $basket_item)
            {
            $basket_position_counter = 0;
            $double = 0;
                foreach ($ses_basket_items_size as $basket_items_size)
                {
                   
                      if ($basket_item == $p_id && $basket_items_size == $size)
                      {
                         
                          $double = 1;
                            $basket_position=$basket_position_counter;
                     
                      }
                      $basket_position_counter++;
                     
                }
               
            }
                   
            if ($double == 1)
            {
           
                echo $basket_position;
                $ses_basket_items_amount[$basket_position] = $ses_basket_items_amount[$basket_position] + $amount;               
            }
            else
            {
               
                $ses_basket_items[] = $p_id;
                $ses_basket_items_amount[] = $amount;
                $ses_basket_items_count++;
                $ses_basket_items_size[] = $size;
            }
        }
        else // dette køres hvis det er første gang man ligger noget i kurven
        {           
       
       
       
            $ses_basket_items_count = 1;
            $ses_basket_items[0] = $p_id;
            $ses_basket_items_amount[0] = $amount;
            $ses_basket_items_size[0] = $size;
           
            session_register("ses_basket_items_count");
            session_register("ses_basket_items");
            session_register("ses_basket_items_amount");
            session_register("ses_basket_items_size");
        }
    }
?>

har rykket:

$double = 1;
$basket_position=$basket_position_counter;

Ned under den første foreach
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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