Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz email z koszyka zakupów
Forum PHP.pl > Forum > Przedszkole
elmariusso
Witam serdecznie,

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:
  1. <?php
  2. // creating product array, can be from database
  3. $product_array = array(
  4. "105" =>array('product_id'=>'105', 'product_name'=>'Blackberry 8900','product_desc'=>'', 'product_price'=>'1150.00', 'product_img'=>'products/product5.jpg'),
  5. "106" =>array('product_id'=>'106', 'product_name'=>'Headphone with mic','product_desc'=>'', 'product_price'=>'148.85', 'product_img'=>'products/product8.jpg')
  6. );
  7. // get the selected product array
  8. // here we get the selected product_id/quantity combination asa an array
  9. $product_list = $_REQUEST['products_selected'];
  10. echo "";
  11.  
  12. echo "<br /><br />";
  13. if(!empty($product_list)) {
  14. ?>


Wartości z koszyka
  1. <?
  2. $sub_total = 0;
  3. foreach($product_list as $product){
  4. $chunks = explode('|',$product);
  5. $product_id = $chunks[0];
  6. $product_qty = $chunks[1];
  7. $product_name = $product_array[$product_id]['product_name'];
  8. $product_desc = $product_array[$product_id]['product_desc'];
  9. $product_img = $product_array[$product_id]['product_img'];
  10. $product_price = $product_array[$product_id]['product_price'];
  11. $product_amount = $product_price*$product_qty;
  12. // calculate the subtotal
  13. $sub_total = $sub_total + $product_amount;
  14. // echo "Product Id: ".$product_id." Quantity: ".$product_qty."<br>";
  15. ?>


Wyświetlanie tych wartości na stronie result.php
  1. <div id="divCartItem2" class="scCartItem">
  2. <div class="scCartItemTitle scCartItemTitle1">
  3. <img src="<? echo $product_img; ?>" class="scProductImageSmall">
  4. <div><strong><? echo $product_name; ?></strong></div></div>
  5. <label class="scCartItemTitle scCartItemTitle2"><? echo $product_price; ?></label>
  6. <label id="lblQuantity2" class="scCartItemTitle scCartItemTitle3"><? echo $product_qty; ?></label>
  7. <label id="lblTotal2" class="scCartItemTitle scCartItemTitle4"><? echo $product_amount; ?></label>
  8. </div>
  9. <? } ?>


To nie wiem czy potrzebne bo jest tu powrót do koszyka..ale ze wzgledu na 'foreach' umieszczam dla bezpieczeńśtwa.
  1. <?
  2. // set the request for continue shopping
  3. if(isset($product_list)){
  4. foreach($product_list as $p_list){
  5. $prod_options .='<input type="hidden" name="products_selected[]" value="'.$p_list.'">';
  6. }
  7. echo $prod_options;
  8. }
  9. ?>
  10. <input style="width:200px;height:32px;float:left;padding-top:0px;" type="submit" class="scCheckoutButton" value="Powrót do zakupów">
  11. </form>
  12.  
  13. <label class="scLabelSubtotalValue"><? echo $sub_total; ?></label>
  14. <label class="scLabelSubtotalText">Suma: </label>
  15. </div>
  16. <?
  17. } else {
  18. echo "<strong>Koszyk jest pusty.</strong>";
  19. ?>
  20. <form action="./index.php" method="post">
  21. <input style="width:200px;height:32px;float:left;padding-top:0px;" type="submit" class="scCheckoutButton" value="Powrót do koszyka">
  22. </form>
  23. <?
  24. }
  25. ?>


Formularz wysyłania wiadomości
  1. <form name="contactFrm" method="post" action="results.php" id="UserAddForm">
  2. <dl>
  3. <dt><label for="name">Twoje imię</label></dt>
  4. <dd><input type="text" name="name" id="name" /><span>Wymagane</span></input></dd>
  5.  
  6. <dt><label for="email">Email </label><dt>
  7. <dd><input type="text" id="from" name="email" maxlength="35"/><span>Wymagane</span></dd>
  8.  
  9. <dt><label for="telefon">Telefon </label><dt>
  10. <dd><input type="text" id="telefon" name="telefon" maxlength="35"/></dd>
  11.  
  12. <dt><label for="message">Tu wpisz swoją wiadomość.</label></dt>
  13. <dd><textarea id="message" name="message" cols="20" rows="5" ></textarea></dd>
  14. </dl>
  15.  
  16. <div id="dectector_wrapper">
  17. <p id="loading_msg" style="display: none;">Wysyłanie wiadomości, proszę czekać</p>
  18. <div id="short_slider_wrapper">
  19. <div id="span1">
  20. <div id="track1">
  21. <div id="handle1"></div>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. </form>


Oraz wysyłanie na maila.
  1. <?
  2. $from = $_POST['email'];
  3. $headers = "From: $from";
  4. $to = "mojemail@interia.pl";
  5. $subject = "Zamówienie ze strony";
  6. $telefon = $_POST['telefon'];
  7. $message = $_POST['message'];
  8. $name = $_POST['name'];
  9.  
  10. $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";
  11.  
  12. mail($to, $subject, $body, $headers)
  13.  
  14. ?>



PS. Dlaczego mój pierwszy post na ten sam temat zniknął po edycji? Musiałem wszystko to pisać na nowo:/
memory
podaj nazwę tego koszyka
elmariusso
Koszyk się nazywa Smart Cart 2.
Dostępny jest pod tym linkiem http://www.techlaboratory.net/products.php?product=scat

Memory i masz jakiś pomysł jak to można rozwiązać?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.