Avatar billede artico Novice
14. september 2011 - 18:10 Der er 14 kommentarer og
1 løsning

Opbyg Array

Hej experter, jeg er løbet kold i et Array her....
Fra min DB kan jeg udskrive flg.:

Ingrediens ID 250, Mængde 1250, Procent 45.00
Ingrediens ID 75, Mængde 650, Procent 23.00
Ingrediens ID 58, Mængde 200, Procent 7.00
Ingrediens ID 63, Mængde 350, Procent 13.00
Ingrediens ID 38, Mængde 100, Procent 4.00
Ingrediens ID 266, Mængde 225, Procent 8.00

Nu vil jeg så gerne have gemt ovenstående i et Array så jeg kan poste det gennem en form, men hvordan bygger jeg arrayet op?

Mængde og Procent skal indeles under Ingrediens ID i arrayet.



Her er udkørslen fra DBén og som jeg p.t har forsøgt at opbygge arrayet?:


  if (mysql_num_rows($hent_opskrift) > 0) {
    while($row_opskrift = mysql_fetch_assoc($hent_opskrift)) {   

                $ing_inputs .= " 'ingrediens_id' => ".$row_opskrift['ingrediens_vare_id']." ";
                $ing_inputs .= ",";
                $ing_inputs .= " 'mangde' => ".$row_opskrift['mangde']." ";
                $ing_inputs .= ",";
                $ing_inputs .= " 'procent' => ".$row_opskrift['procent']." ";
                $ing_inputs .= ","; 
               
                $ingrediinput  = substr_replace($ing_inputs,"",-1);                 
                           
            // her forsøger jeg at lave arrayet
            $_SESSION['varedata_opskrift'][] = array($ingrediinpu);
           
           
            }}
Avatar billede inteeeL Nybegynder
14. september 2011 - 19:18 #1
Er det ikke bare, at sætte dataen fra mysql ind i array - eller har jeg misforstået det? Følgende skal sættes ind i din while-løkke:

$_SESSION['varedata_opskrift'][] = array
  IngrediensID => $row_opskrift['ingrediens_vare_id'],
  Maengde => $row_opskrift['mangde'],
  Procent => $row_opskrift['procent']
);

(Ikke testet)
Avatar billede inteeeL Nybegynder
14. september 2011 - 19:19 #2
Hov, der mangler lige en parentes:

$_SESSION['varedata_opskrift'][] = array(
  IngrediensID => $row_opskrift['ingrediens_vare_id'],
  Maengde => $row_opskrift['mangde'],
  Procent => $row_opskrift['procent']
);
Avatar billede majbom Novice
14. september 2011 - 19:43 #3
som jeg forstår dit spørgsmål, er det det her du er ude efter:

if (mysql_num_rows($hent_opskrift) > 0)
{
    while($row_opskrift = mysql_fetch_assoc($hent_opskrift))
    {
        $_SESSION['varedata_opskrift'][$row_opskrift]['mængde'] = $row_opskrift['mangde'];
        $_SESSION['varedata_opskrift'][$row_opskrift]['procent'] = $row_opskrift['procent'];
    }
}


men ud fra dit kode-forsøg at dømme, er det inteeeLs løsning du leder efter...
Avatar billede inteeeL Nybegynder
14. september 2011 - 20:33 #4
Hvis du bruger splazz' eksempel, skal du lige huske at erklære $_SESSION['varedata_opskrift'] et array (lidt en selvfølge);

- $_SESSION['varedata_opskrift'] = array();

Dit eksempel, splazz, har præcis samme resultat som mit - blot en anderledes opstilling. $_SESSION['varedata_opskrift'][$row_opskrift]['mængde'] = $row_opskrift['mangde']; er det samme som "Maengde => $row_opskrift['mangde']," i mit eksempel. Dog vil jeg mene, at overskueligheden er størst ved et samlet array - som vist i mit eksempel, men det er jo ligeså meget en smagssag. :-)
Avatar billede majbom Novice
14. september 2011 - 20:39 #5
ja arrayet skal erklæres, den smuttede

men vores eksempler er ikke ens - det kommer jo an på hvordan han vil have fat i dataene. i mit eksempel kan han få fat i mængde og procent når han kender ingrediens-id'et:

$_SESSION['varedata_opskrift'][$ingrediens_id]['mængde']

dog vil jeg fraråde at bruge danske tegn i variabel-navne og lignende...
Avatar billede artico Novice
14. september 2011 - 20:48 #6
Joooooo.. selvføli :-) Mange tak, send et svar !
Avatar billede inteeeL Nybegynder
14. september 2011 - 20:59 #7
Han kan da også få mængde og procent via ingrediens-id'et i mit eksempel. Forskellen er bare, at jeg har det som et parameter i arrayet, hvorimod du rammer rækkefølgen, dataene bliver sat i arrayet. Følgende skulle meget gerne udskrive det samme:

echo $_SESSION['varedata_opskrift'][1]['maengde'];
echo $_SESSION['varedata_opskrift1'][1]['mængde'];

dog vil jeg fraråde at bruge danske tegn i variabel-navne og lignende...

Helt enig i ovenstående.
Avatar billede majbom Novice
14. september 2011 - 21:18 #8
-> #6 - hvem skal have points?

-> #7 - med din løsning skal han løbe hele arrayet igennem for at finde ud af under hvilken key det valgte ingrediens-id ligger - med min løsning kan han skrive id'et som key...

det er 2 forskellige løsninger - hvilken skal du bruge #0? :)
Avatar billede inteeeL Nybegynder
14. september 2011 - 22:14 #9
@splazz.

Det kan godt være, jeg skal kende key for det valgte ingrediens-id, og det er i princippet ganske simpelt; en for-loop er kører det igennem. Der er noget galt med din kode. For det første, ifølge, din kode prøver du at bestemme key for elementerne i dit array - hvilket ikke er muligt (går ud fra at dette er en tastefejl). Derfor skal det rettes:

- $_SESSION['varedata_opskrift'][$row_opskrift['mængde']] = ...

For det andet, hvis du vil tilføje elementer til dit array, skal du tilføje [] til sidst => således at dataene bliver føjet til arrayet.

Ergo, der vil blive generet et key til elementerne i arrayet, som IKKE kan hentes via et $ingrediens_id, som man skulle have kendskab til. Derfor er det samme resultat. :-)
Avatar billede inteeeL Nybegynder
14. september 2011 - 22:27 #10
Hov, jeg vil gerne lige undskylde for mine modbevisende argumenter - som alligevel ikke er rigtige. Du kan GODT bestemme key'et - i det tilfælde bruge ingrediens_id og dermed hente mængde og procent, hvis man kender $ingrediens_id. Dog skal koden rettes:

$_SESSION['varedata_opskrift'][$row_opskrift['ingrediens_vare_id']][$row_opskrift['mangde']] = $row_opskrift['mangde'];

Så du har ret, begge eksempler er rigtige - undskylder splazz. :-)
Avatar billede majbom Novice
15. september 2011 - 08:11 #11
følgende er netop testet:


if (mysql_num_rows($hent_opskrift) > 0)
{
    while($row_opskrift = mysql_fetch_assoc($hent_opskrift))
    {
        $_SESSION['varedata_opskrift'][$row_opskrift['ingrediens_vare_id']]['mængde'] = $row_opskrift['mangde'];
        $_SESSION['varedata_opskrift'][$row_opskrift['ingrediens_vare_id']]['procent'] = $row_opskrift['procent'];
    }
}


jeg havde glemt ['ingrediens_vare_id'] , men nu virker det, uden at erklære array...
Avatar billede inteeeL Nybegynder
15. september 2011 - 08:21 #12
Hov, der skal selvfølgelig ikke være [$row_opskrift['mangde']] i mit eksempel, men blot ['mangde'].

Så ja, med ['ingrediens_vare_id'] virker det.
Avatar billede majbom Novice
15. september 2011 - 08:27 #13
godt nok - jeg smider et svar, så må du afvise, hvis det er inteeeLs svar du skal bruge :)
Avatar billede inteeeL Nybegynder
03. oktober 2011 - 12:30 #14
Se at få lukket tråden artico. :-)
Avatar billede majbom Novice
16. oktober 2011 - 06:55 #15
tfp :)
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