2016-04-10 1 views
0

Auf der Website, an der ich gerade arbeite, habe ich eine Liste (Cart-Idee) erstellt, auf der Kunden Produkte platzieren können. Es arbeitet mit GET-Methode + eine Sitzung, der Code für die Herstellung der Sitzung ist wie folgt:SESSION GET Informationen im POST-Kontaktformular zusammen mit den POST-Feldern senden

`<?php session_start(); 
require("dbconnect.php"); 
?> 
<?php 
    if(!isset($_SESSION['cart'])) { 
     $cart = array(); 
     $_SESSION['cart'] = $cart; 
    } 

    if(isset($_GET['action']) && $_GET['action']=="add"){    
     $id=intval($_GET['id']); 
       if(in_array($id, $_SESSION['cart'])){ 
        if (($key = array_search($id, $_SESSION['cart'] !== false))){ 
         unset($_SESSION['cart'][$key]); 
        } 
       } 
       else { 
     array_push($_SESSION['cart'],$id);  
       } 

    } 

      if(isset($_GET['action']) && $_GET['action']=="delete"){ 
      $id = intval($_GET['id']); 
        if (in_array($id, $_SESSION['cart'])){ 
         $key = array_search($id, $_SESSION['cart']); 
         unset($_SESSION['cart'][$key]); 
        } 
     } 
?> 

Nichts Besonderes, nur einen regelmäßigen Wagen in einer Sitzung mit einem Array, wo ich die all einzigartigen Produktcodes gestellt Erinnere dich daran, was auf der Liste steht. Wenn Kunden nun auf die Seite gehen, auf der sie die Produktliste senden können, können sie auch auswählen, wie viele Produkte sie jeweils haben möchten. Sie müssen eine Zahl eingeben, und wenn sie fertig sind, klicken sie auf den Button "berechnen (berekenen in meiner Sprache)" und sie erhalten den Zwischensummenpreis aller Produkte, die Mehrwertsteuer und den Gesamtpreis. Ich möchte jedoch, dass der Kunde seine persönlichen Daten sowie die Liste und die zu sendenden Beträge per E-Mail eingeben kann. Ich habe früher selbst erstellte PHP-Formulare gemacht, aber jetzt bleibe ich stecken. Ich verwende GET für die Bestellliste, aber ich verwende immer ein POST-Formular für meine Kontaktformulare. Wie kann ich einen Button erstellen, der die Liste plus die Beträge plus die Eingabe der Kontaktformularfelder an mich sendet? In diesem Moment habe ich es wie folgt versucht (und viele andere Wege, aber alles ist bisher gescheitert).

<main> 
      <div class="main-center"> 
        <div class="offerte-container"> 
          <form action="" method="get" value="offertelijst"> 
          <ul class="offerte-list"> 
            <?php 
             $per_page = 9; 
             $args = array(
             'post_type'=> 'wpcproduct', 
             'order'  => 'ASC', 
             'orderby' => 'menu_order', 
             'posts_per_page' => $per_page 
             ); 
            $products = new WP_Query($args); 
             ?> 
            <?php 
            while($products->have_posts()): $products->the_post();  
               $id = get_the_ID(); 
         $title  = get_the_title(); 
         $permalink = get_permalink(); 
         $price  = get_post_meta(get_the_id(),'wpc_product_price',true); 
               $product_id = get_post_meta(get_the_id(), 'product_ID', true); 
               if(in_array($id, $_SESSION['cart'])){   
             echo '<li class="wpc-product-item">'; 
              echo '<a href="index.php?action=delete&id=' .$id. '">Verwijder </a>'; 
              echo '<input alt="hoeveelheid" maxlengt="2" value="' .$_GET["amount$id"]. '" min="1" type="number" max="99" name="amount'.$id.'" size="3" required> </input>'; 
             echo '<a href="'. $permalink .'"><div class="item-title"> ' .$title. ' </div></a>'; 
             echo '<a href="'. $permalink .'"><div class="item-take"> <img width="25px" src="http://bgc-testomgeving.nl/sem/wp-content/themes/sem/images/pijltje.png" /> </div></a>'; 
             echo '<a href="'. $permalink .'"><div class="item-nr"> &nbsp; '.$product_id. '</div></a>'; 
             if((isset($_GET["amount$id"]) && $_GET["amount$id"] == 1) || $_GET["amount$id"] == ""){ 
                  if (is_numeric($price) && (floor($price) == $price)) { 
                   echo '<div class="item-price"> &#8364;' .number_format ($price , 0 , "," , "."). ',- </div>'; 
                  } 
                  else {              
                   echo '<div class="item-price"> &#8364;' .$price. '</div>'; 
                  } 
                  echo '</li>'; 
               } 
             else if(isset($_GET["amount$id"]) && floatval($_GET["amount$id"]) > 1){ 
              changeFormat($price); 
              $priceTotal = number_format($price * floatval($_GET["amount$id"]), 2); 
               if (is_numeric($priceTotal) && (floor($priceTotal) == $priceTotal)) { 
                   echo '<div class="item-price"> &#8364;' .$priceTotal . ',- </div>'; 
                  } 
                  else { 
                   echo '<div class="item-price"> &#8364;' .$priceTotal . '</div>'; 
                  } 
                  echo '</li>'; 
               }}  
            endwhile; 
            ?> 
          </ul> 
            <input type="submit" value="Bereken"> </input> 
          </form> 
          <div class="totalprice"> 
            <?php 
            (float)$total = 0; 
            while($products->have_posts()): $products->the_post(); {       
               $id = get_the_ID(); 
         $title  = get_the_title(); 
         $permalink = get_permalink(); 
         $price  = get_post_meta(get_the_id(),'wpc_product_price',true); 
               $product_id = get_post_meta(get_the_id(), 'product_ID', true); 
               if(in_array($id, $_SESSION['cart'])){   
              if (is_numeric($price) && (floor($price) == $price)) { 
               $price = number_format($price, 2); 
              } 
              else { 
               $price = str_replace(',', '.', $price); 
              }          
              $total += (floatval($price) * floatval($_GET["amount$id"]));      
            }}  
              endwhile;      
              (String)$total; 
              number_format($total, 2); 
              $totalDecimal = str_replace('.', ',', $total); 
              echo 'Subtotaal: &nbsp;&#8364;' .$totalDecimal. '<br />'; 
              echo 'BTW: &nbsp;&#8364;' . str_replace('.',',', number_format($total * 0.21,2)). '<br />'; 
              echo 'Totaal: &nbsp;&#8364;' . str_replace('.',',', number_format($total * 1.21,2)); 


              function changeFormat($var) { 
               if(is_numeric($var) && (floor($var) == $var)){ 
                return number_format($var, 0) + ',-'; 
               } 
               else { 
                if (is_numeric($var)) { 
                 return number_format($var, 2, ',', '.'); 
                } 
                else if (is_string ($var)){ 
                return str_replace(',', '.', $var); 
               } 
                else { 
                 echo "What the hell is dit voor een formaat?"; 
                } 
              }} 
            ?> 

          </div> 
        </div> 

      </div> 
    </main> 

Die calculate-Funktion und die Bestellliste arbeiten alle in Ordnung, und ich bin in der Lage eine Standard-POST Form als Kontaktformular zu machen, aber ich kann es nicht schaffen dies getan. Ich möchte den Button 'senden', um die Liste plus die angegebenen Beträge pro Produkt und die ausgefüllten Kontaktformulare zu senden.

Die URL für dieses Projekt ist: http://www.bgc-testomgeving.nl/sem Unterhalb der http://www.bgc-testomgeving.nl/sem/offertelijst/ Seite die Kontaktform aber jedes Mal sein soll ich versuchen, dies ich Liste zerstören meine beste Ordnung zu bauen.

Antwort

1

Zunächst einmal ändern Sie Ihre Formularmethode zum Posten.

<form action="" method="post" value="offertelijst"> 

Dann müssen Sie Eingaben für jedes Element in Ihrem Formularelement erstellen. Ich sehe dies nur Eingang in Ihrem Formular Betrag haben:

echo '<input alt="hoeveelheid" maxlengt="2" value="' .$_GET["amount$id"]. '" min="1" type="number" max="99" name="amount'.$id.'" size="3" required> </input>'; 

Eingang erstellen für jedes Element, da tut Benutzer müssen diese Eingänge sehen Sie sie als versteckte Element erstellen können, hier ist ein Beispiel für Artikel Titel:

echo '<input type="hidden" name="title['.$id.']" value="' .$title. '"</input>'; 

dieses unterhalb dieser Linie

echo '<a href="'. $permalink .'"><div class="item-title"> ' .$title. ' </div></a>'; 

Nachdem Sie alle Eingaben erstellt, auch zweite Schaltfläche in der Nähe von diesem erstellen ein:

Wenn der Benutzer auf Bereken klickt, werden Sie Ihre Berechnungen durchführen, aber wenn es Send ist, werden Sie es an sich selbst senden. Hier ist Beispielcode:

<?php 
// if send button clicked 
if($_POST["action"]=="Send") 
{ 
    /// mail to your self all element 
    mail("[email protected]","New Order",implode("-",$_POST)); 
} 
?> 
<main> 
    <div class="main-center"> 
     <div class="offerte-container"> 
      <form action="" method="post" value="offertelijst"> 
       <ul class="offerte-list"> 
        <?php 
        $per_page = 9; 
        $args = array(
         'post_type'=> 'wpcproduct', 
         'order'  => 'ASC', 
         'orderby' => 'menu_order', 
         'posts_per_page' => $per_page 
        ); 
        $products = new WP_Query($args); 
        ?> 
        <?php 
        while($products->have_posts()): $products->the_post(); 
         $id = get_the_ID(); 
         $title  = get_the_title(); 
         $permalink = get_permalink(); 
         $price  = get_post_meta(get_the_id(),'wpc_product_price',true); 
         $product_id = get_post_meta(get_the_id(), 'product_ID', true); 
         if(in_array($id, $_SESSION['cart'])){ 
          echo '<li class="wpc-product-item">'; 
          echo '<a href="index.php?action=delete&id=' .$id. '">Verwijder </a>'; 
          echo '<input alt="hoeveelheid" maxlengt="2" value="' .$_GET["amount$id"]. '" min="1" type="number" max="99" name="amount'.$id.'" size="3" required> </input>'; 
          echo '<a href="'. $permalink .'"><div class="item-title"> ' .$title. ' </div></a>'; 
          // i added below input for example 
          echo '<input type="hidden" name="title['.$id.']" value="' .$title. '"</input>'; 
          echo '<a href="'. $permalink .'"><div class="item-take"> <img width="25px" src="http://bgc-testomgeving.nl/sem/wp-content/themes/sem/images/pijltje.png" /> </div></a>'; 
          echo '<a href="'. $permalink .'"><div class="item-nr"> &nbsp; '.$product_id. '</div></a>'; 
          if((isset($_GET["amount$id"]) && $_GET["amount$id"] == 1) || $_GET["amount$id"] == ""){ 
           if (is_numeric($price) && (floor($price) == $price)) { 
            echo '<div class="item-price"> &#8364;' .number_format ($price , 0 , "," , "."). ',- </div>'; 
           } 
           else { 
            echo '<div class="item-price"> &#8364;' .$price. '</div>'; 
           } 
           echo '</li>'; 
          } 
          else if(isset($_GET["amount$id"]) && floatval($_GET["amount$id"]) > 1){ 
           changeFormat($price); 
           $priceTotal = number_format($price * floatval($_GET["amount$id"]), 2); 
           if (is_numeric($priceTotal) && (floor($priceTotal) == $priceTotal)) { 
            echo '<div class="item-price"> &#8364;' .$priceTotal . ',- </div>'; 
           } 
           else { 
            echo '<div class="item-price"> &#8364;' .$priceTotal . '</div>'; 
           } 
           echo '</li>'; 
          }} 
        endwhile; 
        ?> 
       </ul> 
       <input type="submit" name="action" value="Bereken"> 
       <input type="submit" name="action" value="Send"> 
      </form> 
      <div class="totalprice"> 
       <?php 
       // is bereken button clickied 
       if($_POST["action"]=="Bereken") { 
       (float)$total = 0; 
       while($products->have_posts()): $products->the_post(); { 
        $id = get_the_ID(); 
        $title  = get_the_title(); 
        $permalink = get_permalink(); 
        $price  = get_post_meta(get_the_id(),'wpc_product_price',true); 
        $product_id = get_post_meta(get_the_id(), 'product_ID', true); 
        if(in_array($id, $_SESSION['cart'])){ 
         if (is_numeric($price) && (floor($price) == $price)) { 
          $price = number_format($price, 2); 
         } 
         else { 
          $price = str_replace(',', '.', $price); 
         } 
         $total += (floatval($price) * floatval($_GET["amount$id"])); 
        }} 
       endwhile; 
       (String)$total; 
       number_format($total, 2); 
       $totalDecimal = str_replace('.', ',', $total); 
       echo 'Subtotaal: &nbsp;&#8364;' .$totalDecimal. '<br />'; 
       echo 'BTW: &nbsp;&#8364;' . str_replace('.',',', number_format($total * 0.21,2)). '<br />'; 
       echo 'Totaal: &nbsp;&#8364;' . str_replace('.',',', number_format($total * 1.21,2)); 
       } 

       function changeFormat($var) { 
        if(is_numeric($var) && (floor($var) == $var)){ 
         return number_format($var, 0) + ',-'; 
        } 
        else { 
         if (is_numeric($var)) { 
          return number_format($var, 2, ',', '.'); 
         } 
         else if (is_string ($var)){ 
          return str_replace(',', '.', $var); 
         } 
         else { 
          echo "What the hell is dit voor een formaat?"; 
         } 
        }} 
       ?> 

      </div> 
     </div> 

    </div> 
</main> 
Verwandte Themen