IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Form - checkbox

Aktivity
Avatar
halva.tomas
Člen
Avatar
halva.tomas:17.5.2014 2:13

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:17.5.2014 8:18

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:17.5.2014 10:30

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

$varianta = $_POST['varianta'];

a poté v textu zprávy:

<tr><td><stron­g>Varianta: </strong></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:17.5.2014 11:17

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:17.5.2014 11:51

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("[email protected]", "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:17.5.2014 11:57

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
Avatar
halva.tomas
Člen
Avatar
halva.tomas:17.5.2014 11:58

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:17.5.2014 12:05

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:17.5.2014 12:11

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:17.5.2014 12:29

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
17.5.2014 12:29
2x piš, jednou debuguj
Avatar
Bertram
Člen
Avatar
Odpovídá na halva.tomas
Bertram:17.5.2014 13:03

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:17.5.2014 13:13

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:18.5.2014 9:59

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
Odpovídá na halva.tomas
Neaktivní uživatel:18.5.2014 10:03

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
Neaktivní uživatelský účet
Avatar
halva.tomas
Člen
Avatar
halva.tomas:18.5.2014 10:16

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("[email protected]", "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
Odpovídá na halva.tomas
Neaktivní uživatel:18.5.2014 10:20
Mail("[email protected]", "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
Neaktivní uživatelský účet
Avatar
halva.tomas
Člen
Avatar
halva.tomas:18.5.2014 10:31

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:18.5.2014 10:38

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
Odpovídá na halva.tomas
Neaktivní uživatel:18.5.2014 11:06

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
Neaktivní uživatelský účet
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.