Autor Zpráva
tomas2245
Profil
Zdravím, potreboval by som pomôcť s formulárom.
Mám ho vytvorený v HTML kóde a odosiela sa cez PHP.
Som v tomto nováčik a už dlhšiu dobu si s týmto lámem hlavu ako to opraviť.
Mám problém konkrétne s tým že vlastním stránku kde si ľudia objednajú tovar viď. foto:


Email sa síce odošle a je všetko tak ako má byť, ale keďže tá objednávka má viac položiek(textbox-ov) tak tá ktorá zostane prázdna(nevyplnená) sa v maili zobrazí ako prázdna medzera.
Ja by som ten kód potreboval upraviť tak, že keď ostane textbox prázdny aby sa nezobrazoval v email-y.


Kód:

<?php

$meno=$_POST["meno"];
$priezvisko=$_POST["priezvisko"];

 if ($_POST["nazov"] == NULL){
}
else{
$nazov='NÁZOV TOVARU: '.$_POST["nazov"];
}

$text=$_POST["text"];
$text="
Meno: $meno
Priezvisko: $priezvisko

$nazov";

?>



V e-maily to vypadá nejak takto:

Meno: ...
Priezvisko: ...

Klávesnica: 1 ks

(prázdne medzery) tu je ukrytý tovar zobrazení ako prázdna medzera

Myš: 2 ks



Vedeli by ste mi s týmto prosím pomôcť?

Vopred Ďakujem, Tomáš.
Taps
Profil
tomas2245:
Pokud máš ve formuláři tak je nutné pracovat s polem např. takto
<input type="text" name="nazev[]">
k jednotlivým položkám se pak dostaneš přes foreach
<?
foreach($_POST['nazev'] as $nazev){
echo $nazev;
}
?>
tomas2245
Profil
Jak som už písal v tomto som úplný nováčik... jedine čo viem je html.. php vobec nie.. potreboval by som to vysvetliť po lopate :D
nejaký postup ako odstrániť tie medzery už si s tým neviem dať rady :/
Taps
Profil
tomas2245:
<?
$meno = $_POST["meno"];
$priezvisko = $_POST["priezvisko"];

if (is_array($_POST["nazov"])) {
    foreach($_POST["nazov"] as $nazev){
        $nazov.= $nazev."\n";
    }
}

$text = $_POST["text"];
$text = "
Meno: $meno
Priezvisko: $priezvisko

$nazov";

?>
pak ve formuláři nahraď
dosavadní
<input type="text" name="nazov">
za
<input type="text" name="nazov[]">
tomas2245
Profil
nefunguje to, email sa odosle ale vyplneni textbox sa nezobrazi :/
Taps
Profil
tomas2245:
Na http://kod.djpw.cz/ vlož tvůj html kod formuláře
tomas2245
Profil
http://kod.djpw.cz/pblb

uz sa to odoslalo ale ked dam pocet kusov tak v emaili sa nezobrazi nazov tovaru ale dva krat ze 2020 (ako pocet kusov) miesto 20.
Taps
Profil
tomas2245:
Jaký name ve formuláři má počet kusů?
tomas2245
Profil
ano neni tam meno ale rovno pocet kusov ale dva krat zobrazene.
Taps
Profil
tomas2245:
Zvýrazněnou část si uprav, dle skutečného názvu inputu, který symoblizuje počet kusů ve formuláři. Důležité je, aby název inputu byl jako pole tzn. nějak takto
<input type="text" name="ks[]">
<?
$meno = $_POST["meno"];
$priezvisko = $_POST["priezvisko"];

if (is_array($_POST["nazov"])) {
    foreach($_POST["nazov"] as $index => $nazev){
        $nazov.= $nazev."-".$_POST['ks'][$index]. "\n";
    }
}

$text = $_POST["text"];
$text = "
Meno: $meno
Priezvisko: $priezvisko

$nazov";
?>
tomas2245
Profil
teraz to napisalo ze: 2020-20


ja tych inputov mam cez 100..
Taps
Profil
tomas2245:
Na tom počtu nezáleží. Jak se jmenuje formulářové pole s počtem kusů?
tomas2245
Profil
ja to mam celé v jednom.. cize nazov je vlastne ten pocet kusov
<li>
<img src="obrazky/nazov.png"></a><p>NAZOV TOVARU
<br><input type="text" style="text-align: center" name="nazov" size="5" /> ks
</li>


predtym som to mal takto:


 if ($_POST["nazov"] == NULL){
}
else{
$nazov='NÁZOV: '.$_POST["nazov"];
}
Taps
Profil
tomas2245:
V tom php skriptu, který jsem navrhnul je vzato v potaz, že máš zvlášť input pro název a zvlášt input pro počet kusů. Jak tedy odlišuješ název od počtu kusů?
tomas2245
Profil
no teraz mám input iba pre počet kusov. Ale ako mám spraviť ďalší input pre názov? vedel by si mi navrhnúť input zvlásť pre názov a ks?

a keď už budú dva input-y tak pre tých 100 tovarov môže byť stále "ks" alebo musí byť "ks1,ks2" ?

a nedá sa ten názov vložiť priamo do toho php kódu ako som mal pred tým a dať tam príkaz nejaký aby to vynechalo ak bude [ks] mať nulovú hodnotu?
Taps
Profil
tomas2245:
no teraz mám input iba pre počet kusov. Ale ako mám spraviť ďalší input pre názov? vedel by si mi navrhnúť input zvlásť pre názov a ks?
Stačí umístit inputy vedle sebe.

a keď už budú dva input-y tak pre tých 100 tovarov môže byť stále "ks" alebo musí byť "ks1,ks2" ?
Nejlepší je uvést name jako pole tudíž
<input type="text" name="nazov[]">
<input type="text" name="pocet_ks[]">

a nedá sa ten názov vložiť priamo do toho php kódu ako som mal pred tým a dať tam príkaz nejaký aby to vynechalo ak bude [ks] mať nulovú hodnotu?
To samozřejmě jde.
tomas2245
Profil
ale teraz tam budem mat dve policka neda sa ten jeden skryť? a preco v tom name musi byt []?


podla mna najjednoduchsie bude ak ti dam na tu stranku cely kod a ty by si mi ho preposlal ... :)


skus sa prosim na to pozriet :) http://kod.djpw.cz/rblb
Taps
Profil
tomas2245:
<?
$meno = $_POST["meno"];
$priezvisko = $_POST["priezvisko"];
 
if (is_array($_POST["rez1"])) {
    foreach($_POST["rez1"] as $index => $nazev){
        $nazov.= $nazev."-".$_POST['pocet_ks'][$index]. "\n";
    }
}
 
$text = $_POST["text"];
$text = "
Meno: $meno
Priezvisko: $priezvisko
 
$nazov";
?>
V náme se závorky používají pro pole
tomas2245
Profil
akoze funguje mi to... ale nevedel by si riesenie tej druhej cesty ze ten nazov je uz v tom php a bude iba jeden input??
lebo nechcem aby oni pisali nazov.. ja to mam tak spravene ze maju foto a pod tym nazov tovaru a oni daju iba pocet kusov..
Taps
Profil
tomas2245:
a jakým způsobem identifikuješ, který počet kusu patří k jakému výrobku?
tomas2245
Profil
niečo na tento spôsob:

if ($_POST["nazov"] == NULL){
}
else{
$nazov='NÁZOV: '.$_POST["nazov"];
}


takto som to identifikoval pred tým
Taps
Profil
tomas2245:
z tvého zápisu je zřejmé, že název výrobku odesíláš prostřednictvím $_POST
tomas2245
Profil
no hej a da sa ta upravit aby to nerobilo tie medzery? ked sa nevyplni nejaky tovar ci nie?
Taps
Profil
tomas2245:
<?
$nazov='NÁZOV:'.$_POST["nazov"];
?>
tomas2245
Profil
nepomohlo, aj tak to spravilo tolko medzier kolko som vynechal tovaru.
Fisir
Profil
Reaguji na tomase2245:
Za
$text = "
Meno: $meno
Priezvisko: $priezvisko
 
$nazov";
přidej:
$text = preg_replace('/(?:\s*\R\s*){3,}/u', PHP_EOL, $text);

Toto je jen zakrytí původního problému, ale vypadá to, že lepší popis současné situace z tebe nevytáhneme (alespoň já netuším, jak vypadá kód objednávacího formuláře položky).
tomas2245
Profil
Fisir:
super!:) funguje to dakujem vam velmi pekne, Taps aj tebe velmi si to cením :)
tomas2245
Profil
Fisir
Ale niekedy tu medzeru to proste spravi da sa to este nejako fixnut?


$text = preg_replace('/(?:\s*\R\s*){3,}/u', PHP_EOL, $text);

miesto tej 3 som dal 1 a vypada to ze to pomohlo moze to tak byt?
čo vlastne to číslo (1) znamená?
lionel messi
Profil
tomas2245:
čo vlastne to číslo (1) znamená?
Čísla v množinových zátvorkách sa vzťahujú na počet opakovaní v tvare {minimálny, maximálny}, čiže to znamená: aspoň jedenkrát nájdený reťazec v zátvorkách.
tomas2245
Profil
lionel messi:
dakujem za odpoveď čiže to bol problém toho riadkovania?

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: