Autor Zpráva
MHavlik
Profil *
Ahoj,
mám formulář - tabulka 3 sloupce, který potřebuji odeslat na mail.
První a třetí sloupce je daný a druhý sloupec uživatel doplňuje.
A mě na mail chodí pouze ten sloupec 2, nedaří se me odeslat celý řádek.
Pomohl byste někdo s nastavením?
Děkuji
Enko
Profil
Ahoj,
určitě ano. Jen nemáme podle čeho. Dej sem zdroják a poradíme.
MHavlik
Profil *
Děkuji moc, mám tabulku ve které chci aby si kamarádi dopsali počty ks toho co by chtěli.
Takto jsme to nějak podle návodů stvořil.

<TABLE>
<tr><th>Název vína</th><th>Počet kusů</th><th>Cena za ks</th></tr>

<form name="formular" action="odeslat.php" method="post" onsubmit="return validate(this)" enctype="multipart/form-data" accept-charset="utf-8">

<?php
$pole = get2DArrayFromCsv("seznam_vin_ZN.csv",";");
$row = count($pole);

for ($c=1; $c < $row; $c++) { 
if ($pole[$c][2] !== "A") {
continue;
}
echo "\t<tr><td>".$pole[$c][4].", ".$pole[$c][5].", ".$pole[$c][6].", č.šarže: ".$pole[$c][7]."</td><td> <input type='text' name='ks[]' size='4'></td><td style='text-align:right';> ".$pole[$c][16].",- Kč </td></tr>\n";
}
?>
</TABLE>


A pak mám soubor odeslat.php, který mě neodesílá celé řádky ale za sebou jen to co lidi vyplní:

<?php

header('Content-Type: text/html; charset=utf-8');  

require_once("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();

$mail->SetLanguage("cz", "phpmailer/language/");

$email = $_POST['email'];
$titul = $_POST['titul'];
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$fakturace = $_POST['fakturace'];
$dodaci = $_POST['dodaci'];
$vino = $_POST['vino'];


$ks = $_POST['ks'];
$dodani = $_POST['dodani'];
$telefon = $_POST['telefon'];
$vzkaz = $_POST['vzkaz'];
$ip = $_SERVER['REMOTE_ADDR'];
$prohlizec = getenv("HTTP_USER_AGENT");

if (!isset($_POST['redirect'])) { 
    $message = "Skript nelze volat přímým zadáním adresy."; 
    die ( $message ); 
} 

if ( !empty($_POST['city']) ) { 
    $message = "První kontrolní pole ponechte prázdné."; 
    die ( $message ); 
} 
 
if ( $_POST['icq'] != "5" ) { 
    $message = "Chybně napsaný kontrolní kód."; 
    die ( $message  ); 
} 
 
if ( substr_count($_POST['vzkaz'], "http://") > 5 ) { 
    $message = "Více než pět hypertextových odkazů není povoleno."; 
    die (  $message  ); 
} 

$body = "Titul: ".$titul.", <p>";
$body .= "Jméno: ".$jmeno.", <p>";
$body .= "Příjmení: ".$prijmeni.", <p>";
$body .= "Víno: ";

$body .= "<p>";

$body .= "Počet ks: ";

foreach ($ks as $text) {

    $body .= "$text",\n";
}

$body .= "<p>";

$body .= "Fakturační adresa: ".$fakturace.", <p>";
$body .= "Dodací adresa: ".$dodaci.", <p>";
$body .= "Doprava a platba: ".$dodani.", <p>";
$body .= "E-mail:".$email.", <p>";
$body .= "Telefon:".$telefon.", <p>";
$body .= "Popis: ".$vzkaz.", <p>";
$body .= "IP adresa odesílatele: ".$ip.", <p>";
$body .= "Prohlížeč: ".$prohlizec.", <p>"; 
 

// Posíláme pomocí PHP funkce mail()
$mail->IsMail(); 
 
// Chceme email ve formátu HTML
$mail->IsHTML(true);
$mail->CharSet = "utf-8";
 
// Email pro zákazníka
 
// Nastavení odesílatele
$mail->From = "havlik@atlas.cz";
$mail->FromName = "Miloslav Havlík";
 
// Přidání adresy zákazníka
$mail->AddAddress("$email"); 
 
$mail->Subject = "Vzkaz od: ".$jmeno." ".$prijmeni."";

$mail->Body = $body;
 
if(!$mail->Send()) {

  echo '<br />Došlo k chybě při odeslání e-mailu.';
            echo '<br />Chybová hláška: ' . $mail->ErrorInfo;
        } else {
            echo 'Vzkaz byl úspěšně odeslán<br>';
            echo ("<a href=\"javascript:history.back();\">Klikněte pro návrat zpět.</a>");
        }
  
// Email pro provozovatele
 
// Vyprázdnit stávající adresy (tzn. adresa zákazníka)
$mail->ClearAddresses();
 
// Pomocí příkazu AddAdress můžeme přidat kolik emailů jen chceme

$mail->AddAddress("havlik@atlas.cz");

$mail->AddBCC("");

$mail->Subject = "Vzkaz od: ".$jmeno." ".$prijmeni." ".$email."";

$mail->Body = $body;

if(!$mail->Send()) {
  echo "Chybová hláška: " . $mail->ErrorInfo;
}


?>

Asi bude problém , že mám blbě ten foreach, něc ojsme zkoušel a už neodesílá nic...:-(
Díky moc za pomoc
Micruss
Profil
$body .= "$text",\n";
si uprav... na
   $body .= $text.",\n"; 
MHavlik
Profil *
Micruss:
Ahoj , koukám na to a zdá se mě to stejné jako mám, akorát mezera, to jsem opravil, ale asi ještě někde je chyba, po odeslání se objeví prázdná stránka, nic neodešle.
Dal jsem stránku zkušebně zde
stránka


Micruss:
Pardon, nevidel jsem to si uprav na ...
jdu to zkusit


Micruss:
Super, děkuji problem s odeslanim vyřešen, teď ještě jak udělat abych v tom mailu videl řádky jak na té stránce , aby bylo jasné co ti lidi chtejí a ne takto :
Titul: ,
Jméno: Milos,
Příjmení: havlik,
Víno:
Počet ks: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 5, 5, 5, 5, , , , , , ,
Fakturační adresa: ,
Dodací adresa: ,
Doprava a platba: ,
E-mail:havlik@atlas.cz,
Telefon:732718334,

musel bych nejak odpocítávat k cemu ty císlice patrí
Micruss
Profil
podmínky a podmínky... to je to co chybí... :)

if($neco!='') //atd

k tomu ks bych dal
if($text=='') continue;
MHavlik
Profil *
Micruss:
Jo to vím akorát to neumím, četl jsme o tom foreach to jsme použil na ten sloupec kde se ty počty plní, ale myslíš použít to samé i na sloupec první , který chci aby se zobrazil ?
Jako tady toto <td>".$pole[$c][4].", ".$pole[$c][5].", ".$pole[$c][6].", č.šarže: ".$pole[$c][7]."</td>
aby bylo pak videt
nebo vím asi neco jako if je neco ve sloupci 2 tak to zobraz zaroven se sloupcem 1, jen to neumím zapsat, a moje stara hlava se už tezce ucí , kdybys pomohl, rád se nejak odmením.


Micruss:
Jo to je dobré odstranili se ty čárky...
Tedka to vypadá takto:

Titul: ,
Jméno: Milos,
Příjmení: Havlik,
Víno:
Počet ks: 5, 5, 5,
Fakturační adresa: ,
Dodací adresa: ,

Jen ještě načíst u jakého pole vlastne vyplnili počet :-)
Micruss
Profil
u toho 1. nwm nějak sem to nepochopil a k tomu

Jen ještě načíst u jakého pole vlastne vyplnili počet :-)

tak já osobně bych tam dal další input hidden s id produktu bo č. šarže

<input type='hidden' name='sarze[]' value='".$pole[$c][7]."'>

pak bych upravil array nebo vytvořil a tam bych uložil id a počet ks

<?php
# odeslat.php

$sarze = $_POST['sarze'];

$arr = array_combine($sarze, $ks);

foreach($arr as $id=>$ks) {

echo 'id šarže: '.$id.' počet ks: '.$ks.' <br>'; 

}
?>
MHavlik
Profil *
Micruss:
Jo to vypadá asi funkčně, jen to není moc pohodlné pro člověka, on vidí název, rok i šarži a musí vyplnit jen počet kusů, aby psal i číslo to jsou lidi moc líní, možná třeba zatržítko před názvem by mohlo být checkout, jako zatrhni co chceš a napiš počet kusů, ale to zase mě nepomůže neb stejně nebudu vědět co objednali,
I tak díky moc, kdyby byla nějaká možnost vrazit k tomu poli kere vyplni i ten text by bylo super, ale asi to není moc jednoduché.
MHavlik
Profil *
Micruss:
Teď za denního světla na to koukám, a vidím lépe, ty myslíš vstupní input ale hidden, tedy skrytý ? To je asi dobré řešení, jdu vyzkoušet, zatím díky moc.


Micruss:
Tak a zde můj um, skončil...Někde mám chybu.
Do souboru objednavka.php jsme přidal
<input type='hidden' name='sarze[]' value='".$pole[$c][7]."'>

A soubor odeslat.php jsme upravil takto, mail dojde ale prázdný...

<?php

header('Content-Type: text/html; charset=utf-8');  

require_once("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();

$mail->SetLanguage("cz", "phpmailer/language/");

$email = $_POST['email'];
$titul = $_POST['titul'];
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$fakturace = $_POST['fakturace'];
$dodaci = $_POST['dodaci'];
$vino = $_POST['vino'];

$sarze = $_POST['sarze'];

$ks = $_POST['ks'];
$dodani = $_POST['dodani'];
$telefon = $_POST['telefon'];
$vzkaz = $_POST['vzkaz'];
$ip = $_SERVER['REMOTE_ADDR'];
$prohlizec = getenv("HTTP_USER_AGENT");

$arr = array_combine($sarze, $ks);

if (!isset($_POST['redirect'])) { 
    $message = "Skript nelze volat přímým zadáním adresy."; 
    die ( $message ); 
} 

if ( !empty($_POST['city']) ) { 
    $message = "První kontrolní pole ponechte prázdné."; 
    die ( $message ); 
} 
 
if ( $_POST['icq'] != "5" ) { 
    $message = "Chybně napsaný kontrolní kód."; 
    die ( $message  ); 
} 
 
if ( substr_count($_POST['vzkaz'], "http://") > 5 ) { 
    $message = "Více než pět hypertextových odkazů není povoleno."; 
    die (  $message  ); 
} 

$body = "Titul: ".$titul.", <p>";
$body .= "Jméno: ".$jmeno.", <p>";
$body .= "Příjmení: ".$prijmeni.", <p>";
$body .= "Víno: ";

$body .= "<p>";


$body .= "Počet ks: ";

//foreach ($ks as $text) {

//if($text=='') continue;

  //  $body .= $text.",\n";

foreach($arr as $id=>$ks) {

echo 'id šarže: '.$id.' počet ks: '.$ks.' <br>';

   $body .= $ks.",\n";

}


$body .= "<p>";





$body .= "Fakturační adresa: ".$fakturace.", <p>";
$body .= "Dodací adresa: ".$dodaci.", <p>";
$body .= "Doprava a platba: ".$dodani.", <p>";
$body .= "E-mail:".$email.", <p>";
$body .= "Telefon:".$telefon.", <p>";
$body .= "Popis: ".$vzkaz.", <p>";
$body .= "IP adresa odesílatele: ".$ip.", <p>";
$body .= "Prohlížeč: ".$prohlizec.", <p>"; 
 

// Posíláme pomocí PHP funkce mail()
$mail->IsMail(); 
 
// Chceme email ve formátu HTML
$mail->IsHTML(true);
$mail->CharSet = "utf-8";
 
// Email pro zákazníka
 
// Nastavení odesílatele
$mail->From = "havlik@atlas.cz";
$mail->FromName = "Miloslav Havlík";
 
// Přidání adresy zákazníka
$mail->AddAddress("$email"); 
 
$mail->Subject = "Vzkaz od: ".$jmeno." ".$prijmeni."";

$mail->Body = $body;
 
if(!$mail->Send()) {

  echo '<br />Došlo k chybě při odeslání e-mailu.';
            echo '<br />Chybová hláška: ' . $mail->ErrorInfo;
        } else {
            echo 'Vzkaz byl úspěšně odeslán<br>';
            echo ("<a href=\"javascript:history.back();\">Klikněte pro návrat zpět.</a>");
        }
  
// Email pro provozovatele
 
// Vyprázdnit stávající adresy (tzn. adresa zákazníka)
$mail->ClearAddresses();
 
// Pomocí příkazu AddAdress můžeme přidat kolik emailů jen chceme

$mail->AddAddress("havlik@atlas.cz");

//$mail->AddBCC("");

$mail->Subject = "Vzkaz od: ".$jmeno." ".$prijmeni." ".$email."";

$mail->Body = $body;

if(!$mail->Send()) {
  echo "Chybová hláška: " . $mail->ErrorInfo;
}


?>
MHavlik
Profil *
Asi nemám to pole jak jsi psal, ale to nevím jak na to
Micruss
Profil
<?php
$pole = get2DArrayFromCsv("seznam_vin_ZN.csv",";");
$row = count($pole);
 
for ($c=1; $c < $row; $c++) { 
if ($pole[$c][2] !== "A") {
continue;
}
echo "\t<tr><td>".$pole[$c][4].", ".$pole[$c][5].", ".$pole[$c][6].", č.šarže: ".$pole[$c][7]."</td><td> <input type='text' name='ks[]' size='4'><input type='hidden' name='sarze[]' value='".$pole[$c][7]."'></td><td style='text-align:right';> ".$pole[$c][16].",- Kč </td></tr>\n";
}
?>

takhle zkuste mel jste blbe ten input
MHav
Profil
Děkuji jdu zkusit


Micruss:
Po odeslání se objevilo toto, kdyby to i došlo na mail, tak je to asi dostačující:
id šarže: 2082 počet ks:
id šarže: 1010 počet ks:
id šarže: 1039 počet ks:
id šarže: 2014 počet ks:
id šarže: 1036 počet ks:
id šarže: 2068 počet ks:
id šarže: 0042 počet ks:
id šarže: 2062 počet ks:
id šarže: 9059 počet ks:
id šarže: 1030 počet ks:
id šarže: 0041 počet ks: 6
id šarže: 1007 počet ks: 6
id šarže: 2010 počet ks:
id šarže: 1061 počet ks:
id šarže: 2067 počet ks:
id šarže: 1216 počet ks:
id šarže: 1064 počet ks:
id šarže: 2016 počet ks:
id šarže: 2060 počet ks:
id šarže: 1044 počet ks:
id šarže: 2033 počet ks:
id šarže: A1052 počet ks: 6
id šarže: 2038 počet ks:
id šarže: 2035 počet ks:
id šarže: 7042 počet ks:
id šarže: 7099 počet ks:
id šarže: 8107 počet ks:
id šarže: 9094 počet ks:
id šarže: 1053 počet ks:
id šarže: 1058 počet ks: 6
id šarže: 2043 počet ks:
id šarže: 9055 počet ks:
id šarže: 1055 počet ks:
id šarže: 6050 počet ks:
id šarže: 8106 počet ks:
id šarže: 2013 počet ks:
id šarže: 1020 počet ks:
id šarže: 9007 počet ks: 6
id šarže: 1021 počet ks:
id šarže: 2030 počet ks:
id šarže: 2052 počet ks:
id šarže: 2051 počet ks:
id šarže: 1025 počet ks:
id šarže: 9063 počet ks:
id šarže: 1029 počet ks:
id šarže: 2015 počet ks:
id šarže: 0060 počet ks:
id šarže: 1034 počet ks:
id šarže: 2064 počet ks:
id šarže: 1202 počet ks:
id šarže: 2059 počet ks:
id šarže: 1068 počet ks:
id šarže: 1073 počet ks:
id šarže: 1069 počet ks:
id šarže: 1067 počet ks:
id šarže: 2058 počet ks:
id šarže: 1019 počet ks:
id šarže: 9013 počet ks:
id šarže: 1014 počet ks:
id šarže: 2020 počet ks:
id šarže: 2019 počet ks:
id šarže: 1017 počet ks:
id šarže: 0021 počet ks:
id šarže: 1037 počet ks:
id šarže: 1098 počet ks:
id šarže: 1096 počet ks:
id šarže: 9085 počet ks:
id šarže: 9084 počet ks:
id šarže: 8084 počet ks:
id šarže: 1094 počet ks:
id šarže: 9089 počet ks:
id šarže: 1100 počet ks:
id šarže: 1088 počet ks:
id šarže: 1089 počet ks:
id šarže: 2073 počet ks:
id šarže: 1092 počet ks:
id šarže: 2028 počet ks:
id šarže: 1085 počet ks:
id šarže: 1083 počet ks:
id šarže: 2025 počet ks:
id šarže: 2026 počet ks:
Vzkaz byl úspěšně odeslán
Klikněte pro návrat zpět.


Ale bohužel v mailu se objevilo jen toto:

Titul: ,
Jméno: Miloš,
Příjmení: Havlik,
Víno:
Počet ks: , , , , , , , , , , 6, 6, , , , , , , , , , 6, , , , , , , , 6, , , , , , , , 6, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Fakturační adresa: ,
Dodací adresa: ,
Doprava a platba: ,
E-mail:havlik@atlas.cz,
Telefon:732718334,
Popis: ,
IP adresa odesílatele: 89.29.25.44,
Prohlížeč: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0 AlexaToolbar/alxf-2.19,
Micruss
Profil
opět podmínku to chce:

foreach($arr as $id=>$ks) {

if($ks=='') continue; 
echo 'id šarže: '.$id.' počet ks: '.$ks.' <br>';
 
   $body .= 'id šarže: '.$id.' počet ks: '.$ks.' <br>';
 
}
MHav
Profil
Moc děkuji za pomoc, po odeslání ted se zobrazí to kde napsali číslo a do mailu to přijde taky , super. Jste šikovný.
Ted to zkoumám , ale nerozumím kde se vzalo - bere to $id nikde není v úvodu jako post jen v tom foreach je použito, to mě mate.

Titul: ,
Jméno: Miloš,
Příjmení: Havlik,
Víno:
Počet ks: id šarže: 0041 počet ks: 6
id šarže: 1007 počet ks: 6
id šarže: A1052 počet ks: 6
id šarže: 1058 počet ks: 6
id šarže: 9007 počet ks: 6
id šarže: 1037 počet ks: 6
id šarže: 1098 počet ks: 6
id šarže: 1094 počet ks: 6
id šarže: 1089 počet ks: 6
id šarže: 1085 počet ks: 6
id šarže: 2026 počet ks: 6

Fakturační adresa: ,
Dodací adresa: ,
Doprava a platba: ,
E-mail:havlik@atlas.cz,
Telefon:732718334,
Popis: ,
IP adresa odesílatele: 89.29.25.44,
Prohlížeč: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0 AlexaToolbar/alxf-2.19,
Micruss
Profil
pokusím se vysvětlit...

$arr = array_combine($sarze, $ks);

to znamená, že kusy se uloží do šarží, např: 1234 = 5; (první je ID šarže a druhé číslo je počet kusů

a přes foreach rozděluji podle $id = id_sarze a $ks počet kusů, které uživatel vybral což znamená že si uživatel vybral např. č. šarže 1234($id) a počet ks je 5($ks) === $id => $ks
MHavlik
Profil *
Micruss:
Aha díky moc, již to je jasnější.
Mě zmátlo to $id , že jsi napsal = id_sarze a definovaná je jen sarze, že ta proměnná id je jakoby vytvořena až poté.
Jo je super vědět jak a kde to použít :-)
Díky moc.
Nevíš ještě kde může být zádrhel, že když něco zapomenou v poli , které je povinné vyplnit, tak to hodí novou stranu a př inávratu zpět tam nic není vyplněno? Nemám tady ješět nějakou blbou chybu? Myslel jsme , že to upozornění by nemělo smazat to co člověk napsal.

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: