Avatar billede jokerper Nybegynder
21. juli 2010 - 12:56 Der er 12 kommentarer og
1 løsning

Mail - array - session

Hej eksperter

Jeg har forsøgt med forskellige metoder, men ingen af dem virker rigtigt.

$new_item = array('brugernavn'=>$brugernavn, 'product_id'=>$id,'amount'=>$amount,'type'=>$type,'stor'=>$stor,'price'=>$price,'total_price'=>$amount*$price,'ordrer_id'=>$ordrer_id);
$_SESSION['basket'][]=$new_item;

Nu vil jeg gerne have dem lagt ind i denne her:
$besked1 = array($_SESSION['basket'][]); indholdet...

$size = sizeof($besked1);
for($i=0;$i<$size;$i++){
$besked = $besked[$i]['billedeid'].$besked[$i]'antal'].$besked[$i]['type'];
}
$to = "XXXXXX";
$subject = "Bestilling";
$headers = "Fra: $email";

$sent = mail($to, $subject, $besked, $headers) ;
Avatar billede jakobdo Ekspert
21. juli 2010 - 13:02 #1
Hvad er det du ønsker opnået ?
Er det at sende en email ?
Er det at indsætte data i en session eller ?
Avatar billede jokerper Nybegynder
21. juli 2010 - 13:08 #2
Okay jeg har forsøgt at lave en bestillingsside.

Det er næsten færdigt, bortset fra at alle emnerne som jeg har liggende i et array ikke vil sendes med på mailen.

Den sender kun med det allersidste tilføjede. Jeg har brug for at få alle emnerne med i emailen.

pt. ligger de i dette array:
$new_item = array('brugernavn'=>$brugernavn, 'product_id'=>$id,'amount'=>$amount,'type'=>$type,'stor'=>$stor,'price'=>$price,'total_price'=>$amount*$price,'ordrer_id'=>$ordrer_id);
$_SESSION['basket'][]=$new_item;

Dem vil jeg gerne have indsat i min mail evt. som $besked.

Så jeg kan se alle emnerne i emailen.
Avatar billede jakobdo Ekspert
21. juli 2010 - 13:13 #3
Så burde du kunne gøre sådan her:

$besked = ''; //Tom besked.

for($i = 0; $i < count($_SESSION['basket']); $i++){
$besked .= "Brugernavn: " . $_SESSION['basket'][$i]['brugernavn'] . "\r\n";
}

Og så burde du selv kunne tilføje resten.
Er det ikke korrekt ?
Avatar billede jokerper Nybegynder
21. juli 2010 - 13:16 #4
Eller med $_post[] til mail.php

Men hvordan får jeg styr på array´et?

Jeg har ikke før haft med arrays at gøre, derfor er det nok også lidt mærkeligt formuleret.
Avatar billede jakobdo Ekspert
21. juli 2010 - 13:25 #5
Hvis du har et array ala:

$mit_array = array('Jakob','Olsen');
$mit_array = array('Fornavn' => 'Jakob','Efternavn' => 'Olsen');

Så kan du jo tilgå det via:

echo 'Fornavn: ' . $mit_array[0];
eller:
echo 'Fornavn: ' . $mit_array['Fornavn']; //Vil kun virke på sidste array.

Hvis du så smider et array ind i et array, multidimensionelt, så bliver det:

$items = array();

$items[] = array('noget1','andet1','pris1');
$items[] = array('noget2','andet2','pris2');
$items[] = array('noget3','andet3','pris3');

Så skal du tilgå det via:

echo $items[0][0]; //Vil printe noget1
echo $items[2][1]; //Vil printe andet3

Du kan så løbe et array igennem med:

for($i = 0; $i < count($items); $i++){
echo '<pre>';
print_r($items[$i]);
echo '</pre>';
}

eller:

foreach($items AS $item){
echo '<pre>';
print_r($item);
echo '</pre>';
}

Denne bruger jeg rigtig meget selv, når jeg arbejder med arrays, fordi jeg ikke altid kan holde styr på dem i hovedet.


echo '<pre>';
print_r($array_navn);
echo '</pre>';
Avatar billede jokerper Nybegynder
21. juli 2010 - 13:27 #6
Umiddelbart så var der noget som virker her. Jeg kører lige lidt tests.
Avatar billede ggxdg Nybegynder
21. juli 2010 - 15:56 #7
$new_item = array('brugernavn'=>$brugernavn, 'product_id'=>$id,'amount'=>$amount,'type'=>$type,'stor'=>$stor,'price'=>$price,'total_price'=>$amount*$price,'ordrer_id'=>$ordrer_id);
$_SESSION['basket'][]=$new_item;

$besked1 = array($_SESSION['basket'][]);

$size = sizeof($besked1);
for($i=0;$i<$size;$i++){
$besked .= $besked1[$i]['billedeid'].$besked1[$i]['antal'].$besked1[$i]['type'];
}
$to = "XXXXXX";
$subject = "Bestilling";
$headers = "Fra: $email";

$sent = mail($to, $subject, $besked, $headers) ;


Fandt lige nogle småfejl som jeg lige har lavet med fed og understreget tekst.
Avatar billede jakobdo Ekspert
21. juli 2010 - 16:03 #8
ggxdg: Hvad er fejlene ?

.= er vel godt nok.
Det er jo det samme som:

$besked = $besked . 'Noget mere';

$besked1 er vel også godt nok, det bliver jo sat her:
$besked1 = array($_SESSION['basket'][]);

Dog burde jokerper nok kun have gjort sådan her:
$besked1 = $_SESSION['basket'];

Og hvad er der galt med [ ved 'antal'] ?
Avatar billede jokerper Nybegynder
21. juli 2010 - 17:55 #9
jakobdo - Jeg fik det til at virke som:
for($i = 0; $i < count($_SESSION['basket']); $i++){
$besked .= "Brugernavn: " . $_SESSION['basket'][$i]['brugernavn'] . "\r\n";
}

Og tak for din medfølgende forklaring, det er netop sådan man lærer og forstår.

Men jeg har lige oprettet et andet spm. hvis du er frisk. one.com mail.

Men ellers læg et svar, tak.
Avatar billede jakobdo Ekspert
21. juli 2010 - 18:20 #10
Svar!
Avatar billede jakobdo Ekspert
21. juli 2010 - 19:55 #11
Takker for point.
Avatar billede ggxdg Nybegynder
21. juli 2010 - 20:45 #12
#8
Det jeg understregede var noget jeg tilføjede som ikke var der i forvejen.

Men jeg kan godt se min tekst var ret dårligt formuleret.

Der var ikke punktum foran "=", der manglede "[" ved antal, og der manglede "1" ved alle "$besked"
Avatar billede jakobdo Ekspert
21. juli 2010 - 20:51 #13
ggxdg: Sorry, du har jo ret, min fejl. :o(
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