Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Ahoj,
chtěl bych požádat o radu. Snažím se zprovoznit jeden formulář, ale nejde mi do hlavy co mám špatně - potřeboval bych, aby ve výpisu po odeslání fomuláře se zobrazili ve Variantě všechny možnosti, co zaškrtnu (pokud jich dám více).
www.2nd-fashion.eu/…ednavka.html

Díky moc za pomoc!

 
Odpovědět 17.5.2014 2:13
Avatar
Bertram
Člen
Avatar
Odpovídá na halva.tomas
Bertram:

Ahoj,
$_POST['varianta'] je pole, tak ho projdi a vypiš.

 
Nahoru Odpovědět 17.5.2014 8:18
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Já ho mám v úvodu vypsaný jako:

$varianta = $_POST['varianta'];

a poté v textu zprávy:

<tr><td>Varianta: </td><td> '.$varianta.'</td><td><­/td> <td></td></tr>

 
Nahoru Odpovědět 17.5.2014 10:30
Avatar
Bertram
Člen
Avatar
Odpovídá na halva.tomas
Bertram:

Pomocí var_dump() si vypiš obsah této proměnné a bude ti vše jasnější.

 
Nahoru Odpovědět 17.5.2014 11:17
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

To mi pak vyjíždí toto:
array(2) { [0]=> string(30) "100 + 1 p��rod. rad na hubnut�" [1]=> string(25) "Rostliny pro zdrav� �ivot" }

Je to správně?
Zde je kód formuláře:

<?
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];
$ulice = $_POST['ulice'];
$psc = $_POST['psc'];
$mesto = $_POST['mesto'];
$varianta = $_POST['varianta'];
$kodObj= 94387;
$dat1 = StrFTime("%d", Time());
$dat2 = StrFTime("%m", Time());
$date = StrFTime("%d.%m.%y %H:%M", Time());
$message = '
Dobrý den,
potvrzujeme Vám přijetí Vaší objednávky.

Kód objednávky: 3'.$dat2.''.$kodObj.''.$dat1.'
Datum objednání: '.$date.'

Jméno a příjmení: '.$jmeno.' '.$prijmeni.'

Telefoní číslo: '.$telefon.'
Email: '.$email.'

Vaše adresa: '.$ulice.', '.$psc.' '.$mesto.'

Způsob dopravy: '.$doprava.'
Způsob platby: '.$platba.'

Zvolená varianta: '.$varianta.'
Počet ks: '.$pocet.'
';
$messagePage = '
<h3>Vaše objednávka byla odeslána</h3><p>Zde je shrnutí Vaší objednávky:</p>
<table>
<tr><td><strong>Objednávka číslo: </strong></td><td> 3'.$dat2.''.$kodObj.''.$dat1.'</td>  <td></td><td><strong>Objednáno:</strong></td><td>'.$date.'</td></tr>
<tr><td><br/></td></tr>
<tr><td><strong>Jméno a příjmení: </strong></td><td> '.$jmeno.' '.$prijmeni.' </td></tr>
<tr><td><br/></td></tr>
<tr><td><strong>Telefon: </strong></td><td> '.$telefon.'</td><td>  </td><td><strong>Email: </strong></td><td> '.$email.'</td></tr>
<tr><td><br/></td></tr>
<tr><td><strong>Vaše adresa: </strong></td><td> '.$ulice.',</td></tr>
<tr><td></td><td> '.$psc.' '.$mesto.'</td></tr>
<tr><td><br/></td></tr>
</table>
<p>Vámi objednaný/é produkt/y: '.$varianta.'</p>
';

if ($jmeno!="" and $prijmeni!="" and $email!="" and $telefon!="" and $ulice!="" and $psc!="" and $mesto!="" and $varianta=$_POST['varianta'])
{
Mail("design@metrodesign.cz", "Objednávka kalendáře", $message, "From: " . $email);
Mail($email, "Objednávka kalendáře", $message, "From: " . $email);
echo "<p>$messagePage</p><br/>Vybrané produkty: <br/><br/><br/>";
var_dump ($varianta);
}
else
{
echo "<h3>Vaše objednávka nebyla odeslána</h3><p class=red>Je nám líto, ale Vaše objednávka se nám <strong>nepodařila odeslat</strong>. Pravděpodobně jste nevyplnil/a všechny údaje.</p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>";
}
?>
Editováno 17.5.2014 11:53
 
Nahoru Odpovědět 17.5.2014 11:51
Avatar
Odpovídá na halva.tomas
Michal Žůrek (misaz):

1.) máš bordel v kódování, proto se tam objeví ty otazníky.
2.) použij tlačítko vložit zdrojový kód (viz. obrázek)

Nahoru Odpovědět 17.5.2014 11:57
Nesnáším {}, proto se jim vyhýbám.
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

O otazníky mi nyní nejde - to vyřeším úplně nakonec doufám :D
Vždyť tam kód je nahraný, ne?

 
Nahoru Odpovědět 17.5.2014 11:58
Avatar
Odpovídá na halva.tomas
Josef Kuchař (Pepa489):

Každému checkboxu dej jiný name a pak to v php projeď polem

Nahoru Odpovědět 17.5.2014 12:05
2x piš, jednou debuguj
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Takže mám poté vypsat všechny možnosti?
Tedy (?):

$1= $_POST['var1'];
$2 = $_POST['var2'];
$3 = $_POST['var3'];
$4 = $_POST['var4'];
$5 = $_POST['var5'];
$6 = $_POST['var6'];
$7 = $_POST['var7'];
$8 = $_POST['var8'];

A poté vyjet echem s

if $_POST['var1'] ==on;
echo "$1"

?

Editováno 17.5.2014 12:12
 
Nahoru Odpovědět 17.5.2014 12:11
Avatar
Odpovídá na halva.tomas
Josef Kuchař (Pepa489):

sry napsal jsem to špatně projeď to cyklem:

<?php
for($x = 0;podminka; x++)
{
        if($_POST['var' + $x] == on)
        {
        echo "$1";
        }
}
?>
Editováno 17.5.2014 12:30
Nahoru Odpovědět  +1 17.5.2014 12:29
2x piš, jednou debuguj
Avatar
Bertram
Člen
Avatar
Odpovídá na halva.tomas
Bertram:

Zprávu můžeš sestavit nějak takto:

<?php
$message = "Dobrý den," . PHP_EOL;
$message .= "potvrzujeme Vám přijetí Vaší objednávky." . PHP_EOL;

$message .= "Kód objednávky: 3$dat2$kodObj$dat1" . PHP_EOL;
$message .= "Datum objednání: $date" . PHP_EOL;

$message .= "Jméno a příjmení: $jmeno $prijmeni" . PHP_EOL;

$message .= "Telefoní číslo: $telefon" . PHP_EOL;
$message .= "Email: $email" . PHP_EOL;

$message .= "Vaše adresa: $ulice, $psc, $mesto" . PHP_EOL;

$message .= "Způsob dopravy: $doprava" . PHP_EOL;
$message .= "Způsob platby: $platba" . PHP_EOL;

$message .= "Zvolená varianta:" . PHP_EOL;

foreach ($varianta as $item) {
    $message .= $item . PHP_EOL;
}

$message .= "Počet ks: $pocet" . PHP_EOL;

Pro setavení html podobně, ale doporučuji ošetření pomocí htmlspecialchar­s($s, ENT_QUOTES).

Editováno 17.5.2014 13:05
 
Nahoru Odpovědět 17.5.2014 13:03
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Díky moc všem!
Pro zatím jsem to napsal takto:

$variantaStr = Implode(', ', $varianta);

$messagePage = '
<h3>Vaše objednávka byla odeslána</h3><p>Zde je shrnutí Vaší objednávky:</p>
<table>
<tr><td><strong>Objednávka číslo: </strong></td><td> 3'.$dat2.''.$kodObj.''.$dat1.'</td>  <td></td><td><strong>Objednáno:</strong></td><td>'.$date.'</td></tr>
<tr><td><br/></td></tr>
<tr><td><strong>Jméno a příjmení: </strong></td><td> '.$jmeno.' '.$prijmeni.' </td></tr>
<tr><td><br/></td></tr>
<tr><td><strong>Telefon: </strong></td><td> '.$telefon.'</td><td>  </td><td><strong>Email: </strong></td><td> '.$email.'</td></tr>
<tr><td><br/></td></tr>
<tr><td><strong>Vaše adresa: </strong></td><td> '.$ulice.',</td></tr>
<tr><td></td><td> '.$psc.' '.$mesto.'</td></tr>
<tr><td><br/></td></tr>
</table>
<p>Vámi objednaný/é produkt/y: '.$variantaStr.'</p>
';

Zatím mi to stačí na funkci, na ten cykl a ten druhý příklad kouknu a případně to předělám - musím se to pořádně naučit a prostudovat to.

Ještě jednou díky moc!

 
Nahoru Odpovědět 17.5.2014 13:13
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Ahoj,
můžu se ještě zeptat, jak nastavím, aby se v odeslaných hodnotách zobrazovaly české znaky a ne otazníky ? (jak mail tak stránka).

Díky moc.

 
Nahoru Odpovědět 18.5.2014 9:59
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na halva.tomas
Filip Šohajek:

Do hlavicky stranky (tag <head>) pridej :

<meta charset="UTF-8">

a do posledniho parametru funkce mail pridej :

"Content-Type: text/html; charset=UTF-8"

+ nekde na zacatek kodu zavolej funkci :

mb_internal_encoding("UTF-8");
 
Nahoru Odpovědět 18.5.2014 10:03
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Díky moc! :-)
A už vím i kde byla chyba - nechal jsem objednavka.html jako Windows-1250 - takže tam byly dvě rozdílný znakový sady ...

U toho mailu jsem to nastavil takto:

Mail("mail@gmail.com", "Objednávka", $message, "From: " . $email; "Content-Type: text/html; charset=UTF-8");
Mail($email, "Objednávka", $message, "From: " . $emailFrom; "Content-Type: text/html; charset=UTF-8");

a nazačátek úplně toto:

<?
mb_internal_encoding("UTF-8");
$jmeno = $_POST['jmeno'];
$prijmeni = $_POST['prijmeni'];
...

Ale stále nefunguje :(

Editováno 18.5.2014 10:18
 
Nahoru Odpovědět 18.5.2014 10:16
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na halva.tomas
Filip Šohajek:
Mail("mail@gmail.com", "Objednávka", $message, "From: " . $email.";" ."Content-Type: text/html; charset=UTF-8");
 Mail($email, "Objednávka", $message, "From: " . $emailFrom.";" ."Content-Type: text/html; charset=UTF-8");
Editováno 18.5.2014 10:20
 
Nahoru Odpovědět 18.5.2014 10:20
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Stále to vypisuje špatné znaky :/ . Nějak jinak to nastavit nelze? Případně jiný příkaz pro odesílání mailu?

 
Nahoru Odpovědět 18.5.2014 10:31
Avatar
halva.tomas
Člen
Avatar
halva.tomas:

Je také možné, že to způsobuje mailový klient?
Protože mi to na roundcube ukazuje špatně, ale gmail to už má v poho ... ?

 
Nahoru Odpovědět 18.5.2014 10:38
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na halva.tomas
Filip Šohajek:

Zkus misto funkce mail pouzit funkci mb_send_mail : http://www.php.net/…end-mail.php

 
Nahoru Odpovědět 18.5.2014 11:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.