To moje pierwsze spotkanie z PHP, proszę o wyrozumiałość. Chciałem stworzyć koszyk zakupów, ale nie znam się na PHP i bazach danych, więc użyłem gotowego koszyka jquery. I tak użytkownik dokonuje wyboru produktów, które następnie wyświetlane są w pliku results.php. Znajduje się tam tablica tych produktów oraz wklejony formularz do uzupełnienia niezbędnych danych użytkownika. Problem pojawia się przy próbie wysłania tych danych na moją skrzynkę pocztową.
Próby wykonywałem na dwóch produktach, w tablicy również znajdują sie dwa produkty, stąd podejrzewam pętla wykonuje się dwa razy. Chciałbym uniknąć sytuacji, gdy użytkownik zamówi 10 produktów... a ja otrzymam 10 maili.
Problem: Przychodzą dwa maile zamiast jednego oraz dane w mailu są niepełne.
Pożądany efekt: Na skrzynkę przychodzi tylko 1 mail zawierający wewnątrz wszystkie dane. (wypisane wszystkie wybrane przez użytkownika produkty oraz dane użytkownika)
Moje próby: Zmieniałem kolejność kodu, co skutkowało zmianą konfiguracji przychodzących wiadomości:
- przychodziły 2 maile z produktami ale bez danych z formularza
- przychodziły 2 maile tylko z danymi z formularza
Z obecnym kodem załączonym poniżej przychodzi:
- 1wszy mail z danymi 1wszego produktu a formularz pusty, 2gi mail z danymi z formularza a dane o produkcie puste.
Porszę o pomoc, przykład kodu lub sugestię,
Oto kod:
Tablica:
<?php // creating product array, can be from database "105" =>array('product_id'=>'105', 'product_name'=>'Blackberry 8900','product_desc'=>'', 'product_price'=>'1150.00', 'product_img'=>'products/product5.jpg'), "106" =>array('product_id'=>'106', 'product_name'=>'Headphone with mic','product_desc'=>'', 'product_price'=>'148.85', 'product_img'=>'products/product8.jpg') ); // get the selected product array // here we get the selected product_id/quantity combination asa an array $product_list = $_REQUEST['products_selected']; ?>
Wartości z koszyka
<? $sub_total = 0; foreach($product_list as $product){ $product_id = $chunks[0]; $product_qty = $chunks[1]; $product_name = $product_array[$product_id]['product_name']; $product_desc = $product_array[$product_id]['product_desc']; $product_img = $product_array[$product_id]['product_img']; $product_price = $product_array[$product_id]['product_price']; $product_amount = $product_price*$product_qty; // calculate the subtotal $sub_total = $sub_total + $product_amount; // echo "Product Id: ".$product_id." Quantity: ".$product_qty."<br>"; ?>
Wyświetlanie tych wartości na stronie result.php
To nie wiem czy potrzebne bo jest tu powrót do koszyka..ale ze wzgledu na 'foreach' umieszczam dla bezpieczeńśtwa.
<? // set the request for continue shopping foreach($product_list as $p_list){ $prod_options .='<input type="hidden" name="products_selected[]" value="'.$p_list.'">'; } } ?> <input style="width:200px;height:32px;float:left;padding-top:0px;" type="submit" class="scCheckoutButton" value="Powrót do zakupów"> </form> <label class="scLabelSubtotalText">Suma: </label> </div> <? } else { ?> <form action="./index.php" method="post"> <input style="width:200px;height:32px;float:left;padding-top:0px;" type="submit" class="scCheckoutButton" value="Powrót do koszyka"> </form> <? } ?>
Formularz wysyłania wiadomości
Oraz wysyłanie na maila.
<? $from = $_POST['email']; $headers = "From: $from"; $to = "mojemail@interia.pl"; $subject = "Zamówienie ze strony"; $telefon = $_POST['telefon']; $message = $_POST['message']; $name = $_POST['name']; $body = " ID produktu: $product_id\n Nazwa produktu: $product_name - $product_price zł\n Zamówiona ilość: $product_qty\n Łaczna wartość zamówionego produktu w zł: $product_amount\n\n Email nadawcy: $from\n Imię i nazwisko nadawcy: $name\n Numer telefonu: $telefon\n Wiadomość: $message\n"; ?>
PS. Dlaczego mój pierwszy post na ten sam temat zniknął po edycji? Musiałem wszystko to pisać na nowo:/