Autor Zpráva
Qbuf
Profil
Mám jednoduchý objednávací formulář, kde je udaná cena a jen se zadává počet objednaných kusů. Formulář je funkčný, ale mi odesílá celý seznam položek, ale potřebuju na mail zaslat jenom objednané položky. Jak to nejlíp udělat?


soubor - část formuláře
formular.htm

<html>

<form  action="odesli.php" method="post" >

<!-- "   PRODUKTOVA TABULKA "  -->
<table BORDER=0 CELLSPACING=1 CELLPADDING=1 WIDTH="80%" BGCOLOR="#FFFFEE" > 

<TR>
<TD  COLSPAN="4" class="Category" ><B>KATEGORIE PRODUKTU</B></TD>
</TR>

<TR bgcolor="#fef">
<TD><B>Tovar</B></TD><TD><B>Cena / Price</B></TD>
<TD><B>Jednotka</B></TD>
<TD><B>Množství</B></TD>
</TR>

<TR>
<TD>Product 1</TD><TD>1,00 Kč</TD><TD>ks</TD>
<TD> 
<input type="hidden" name="name[]" value="Product 1">    
<input type="text" name="quantity[]" class="quantity" size="3" value="" onBlur="recount_price()"> 
<input type="hidden" name="price[]" class="price" value="1.00">
</TD> 
</TR>

<TR>
<TD>Product 2</TD><TD>2,00 Kč</TD><TD>ks</TD>
<TD> 
<input type="hidden" name="name[]" value="Product 2">     
<input type="text" name="quantity[]" class="quantity" size="3" value="" onBlur="recount_price()"> 
<input type="hidden" name="price[]" class="price" value="2.00">
</TD> 
</TR>

<TR>
<TD>Product 3</TD><TD>3,50 Kč</TD><TD>ks</TD>
<TD> 
<input type="hidden" name="name[]" value="Product3">    
<input type="text" name="quantity[]" class="quantity" size="3" value="" onBlur="recount_price()"> 
<input type="hidden" name="price[]" class="price" value="3.50">
</TD>
</TR>

<TR>
<TD>SPOLU CELKEM</TD> <TD>&nbsp;</TD> <TD>&nbsp;</TD>
<TD> <input type="text" name="celkem" id="celkem" size="5" onBlur="Recount(this.form)"> €</TD>
<TD> </TD> 
<TD> </TD>  
</TR>

</table>


<!--"   ZDE JE TABULKA S KONTAKNIMI UDAJI"  -->

<input type="submit" name="send" value="ODESLAT">
</form>

</html>

----------
soubor na odeslíání
odesli.php

<?php 

if(isset($_POST['send'])) {

    $email             = ($_POST["email"]=='')?'':$_POST["email"];
    $telefon             = ($_POST["telefon"]=='')?'':$_POST["telefon"];
    $adresa             = ($_POST["adresa"]=='')?'':$_POST["adresa"];
    $meno             = ($_POST["meno"]=='')?'':$_POST["meno"];
    $predmet             = "Objednávka";
    $poznamka         = ($_POST["poznamka"]=='')?'':$_POST["poznamka"];
    $celkem             = ($_POST["celkem"]=='')?'0':$_POST["celkem"];
    $produkty_name     = ($_POST["name"]=='')?'':$_POST["name"];
    $produkty_quantity     = ($_POST["quantity"]=='')?'':$_POST["quantity"];
    $produkty_price     = ($_POST["price"]=='')?'':$_POST["price"];
    $produkt='';


    foreach ($produkty_name as $key=>$value) {

        $kus= ($produkty_quantity[$key]=='')?'0':$produkty_quantity[$key];
        $produkt.= '<b>'.$produkty_name[$key].'</b> - Cena: '.$produkty_price[$key].'€ -  Počet kusov: '.$kus.'<br>';        
            }
    

    $text ='

        Meno: '.$meno.' <br>
        Telefon: '.$telefon.' <br>
        Adresa: '.$adresa.' <br>
        Email: '.$email.' <br> <br>
        Poznamka: '.$poznamka.'  <br>
        <br>
        Celkova cena: '.$celkem.'€ <br>
        <br>
        Produkty:<br>
        '.$produkt; 
        
    $headers .= 'From: ' .$email. "\r\n";



if ( mail("mail@nejaky mail.cz", $predmet, $text, $headers) ){
echo "Mail byl odeslán";
}
else {
echo "Mail se nepodarilo odoslat";  
}


}

?>
Alphard
Profil
Tak si upravte podmínku na 20. řádku, místo dosazení nuly danou položku ignorujte. Pomocí klasického ifu.
Qbuf
Profil
Alphard:
 Díky za odpověď v tenhle predvánoční čas.
To mne taky napadlo přez podminku nějak ignorovat to, kde je 0, ale neovladam (zatím :-) PHP tak dobře, aby se mi to povedlo.  Kod na odesilani jsem dostal hotovy, jen si  ho potřebuji přizpusobit . 


Zkusil jsem dopsat za foreach na "23." řádek

 if ($produkty_quantity!=0) $objednane=$produkt;

a ve vyslednem $text-u jsen změnil $produkt; na $objednane.


Jelikož to nefungujje (odesila vše), je to někde zle. 
juriad
Profil
řádky 20 -- 21 nahraď za:
if($produkty_quantity[$key] != '') {
  $kus = $produkty_quantity[$key];
  $produkt.= '<b>'.$produkty_name[$key].'</b> - Cena: '.$produkty_price[$key].'€ -  Počet kusov: '.$kus.'<br>';
}
Tori
Profil
Anebo druhý přístup – bez jiných změn přidat na ř.19:
if ($produkty_quantity[$key] < 1) { continue; } = v případě nulového/záporného objed.množství se řádky 20-21 přeskočí a pokračuje se zpracováním dalšího produktu z formuláře.
Qbuf
Profil
Juriad
to mi doplní zapsaný počet kusů (např 4) u položky na každý dalčí řádek

Produkty:
Product 1 - Cena: 1.00€ - Počet kusov:
Product 2 - Cena: 2.00€ - Počet kusov: 4
Product3 - Cena: 3.50€ - Počet kusov: 4

Tori - funguje to.

Všem díky!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0