Autor Zpráva
DenyKr
Profil
Ahoj všem,
právě tvořím webové stránky (přesněji jsem starý obsah přesunul na nový web a přepracovávám jej), jejichž součástí bude, stejně jako dosud, položka "E-shop". Poněvadž se jedná pouze o přebytečné hlouposti (jako modely aut a další přebytečné věci z domácnosti), nechci platit za žádné složité E-shop programy, které by byly schopny vytvořit plnohodnotný virtuální obchod. Proto svůj "minishop" stavím na bázi jednoduchých objednávkových formulářů, které mi následně pošlou na E-mail upozornění s předmětem zprávy, vyplněnými informacemi a odkazem na objednaný předmět.
Problém však nastává, chce-li daný subjekt zakoupit více, než jeden předmět, neboť stále dokola vyplňovat formuláře nemá smysl a stále zobrazená položka "způsob dopravy" může být pro mnohé matoucí (neboť poštovné není třeba platit vícekrát). Pro snažší pochopení přidávám odkaz na objednávkový formulář a níže pak posílám jeho obsah:
http://denykr.euweb.cz/contact2.php

A teď k jádru věci, o co se mi jedná: Chtěl bych mít ve formuláři 2 checkboxy tak, jak jsem je do výše odkázaného formuláře provizorně umístil. Jeden ve smyslu "Toto je jediný objednávaný předmět" a druhý ve smyslu "Plánuji zakoupit více předmětů". Zde vás prosím o pomoc, neboť si nevím rady s tím, jak vytvořit podmínky:

1) Je-li checkbox "Toto je jediný objednávaný předmět" zaškrtnutý (defaultně), vysouvací seznam s nadpisem "Způsob dopravy" zůstane zobrazen a textové pole s nadpisem "Zpráva (volitelné)" zůstane rovněž v nepozměněné podobě tak, jak vidíte ve formuláři výše.

2) Ovšem je-li zaškrtnut checkbox "Plánuji objednat více předmětů", chtěl bych, aby vysouvací seznam vč. nadpisu "Způsob dopravy" zmizel a zároveň aby se nadpis textového pole změnil ze "Zpráva (volitelné)" na "* Zpráva" (kde hvězdička = povinné) a zároveň aby se někde na seznamu (třeba v místě původně vysouvacího seznamu) objevila poznámka ve smyslu "Platíte pouze jedno poštovné, které bude individuálně stanoveno dle níže objednaných předmětů".

3) Celý formulář obsahuje podmínky (viz. níže publikovaný soubor sendeali.php). Čili je-li nesprávně vyplněno jméno, adresa, či jakákoli jiná, hvězdičkou označená položka, zobrazí se zpráva o nesprávně vyplněném formuláři (třeba ve smyslu "Vraťte se prosím zpět a zadejte své jméno ve správném tvaru."). Rád bych, aby se tak vztahovala podmínka také na výše uvedenou funkci, konkrétně tak, aby v případě zatrhnutého políčka "Plánuji objednat více předmětů" bylo nutné vyplnit textové pole "Zpráva", jinak se objeví chybová hláška.

... Je tedy možné nějak naprogramovat výše uvedené funkce? Pokud ano, byl bych opravdu vděčný za jakoukoli pomoc, například úpravou níže uvedených souborů:

contact2.php:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Objednávkový formulář</title>
<meta http-equiv="Content-Language" content="cs">
</head>

<body bgcolor="#000000">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><font face="Calibri" color="#FFFFFF">
<title>Email Form </title>
</head>
<body>

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

<p align="center" style="margin-top: 0; margin-bottom: 0">

<!-- DO NOT change ANY of the php sections -->
<?php
$ipi = getenv("REMOTE_ADDR");
$httprefi = getenv ("HTTP_REFERER");
$httpagenti = getenv ("HTTP_USER_AGENT");
?>

<input type="hidden" name="ip" value="<?php echo $ipi ?>" />
<input type="hidden" name="httpref" value="<?php echo $httprefi ?>" />
<input type="hidden" name="httpagent" value="<?php echo $httpagenti ?>" />


</font><font face="Calibri" color="#FF0000">
* </font><font face="Calibri" color="#FFFFFF">


Vaše Jméno: <br />
<input type="text" name="jmeno" size="35" />
<br />
</font><font face="Calibri" color="#FF0000">
* </font><font face="Calibri" color="#FFFFFF">
Vaše Příjmení: <br />
<input type="text" name="prijmeni" size="35" />
<br />
</font><font face="Calibri" color="#FF0000">
* </font><font face="Calibri" color="#FFFFFF">
Ulice a číslo popisné: <br />
<input type="text" name="ulice" size="35" />
<br />
</font><font face="Calibri" color="#FF0000">
* </font><font face="Calibri" color="#FFFFFF">
Město: <br />
<input type="text" name="mesto" size="35" />
<br />
</font><font face="Calibri" color="#FF0000">
* </font><font face="Calibri" color="#FFFFFF">
Poštovní směrovací číslo: <br />
<input type="text" name="psc" size="35" />
<br />
</font><font face="Calibri" color="#FF0000">
* </font><font face="Calibri" color="#FFFFFF">
Kontaktní E-mail:<br />
<input type="text" name="visitormail" size="35" />
<br />
Telefonní číslo (volitelné): <br />
<input type="text" name="telefon" size="35" /></font><p align="center" style="margin-top: 0px">

<font face="Calibri" color="#FFFFFF">Předmět zprávy:<br />
<INPUT ID="text" readonly=true name="attn" size="35" value="Objednávka" /><br />
<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="radio" value="V1" checked name="R1"> Toto je jediný objednávaný 
předmět</font><p align="center" style="margin-top: 0px">

<font face="Calibri" color="#FFFFFF"><input type="radio" name="R1" value="V2"> 
Plánuji objednat více předmětů</font><p align="center" style="margin-top: 0px">

<font face="Calibri" color="#FFFFFF"> <br />
Způsob dopravy:<br />
<select name="postovne" size="1">
<option value=" Doporučený balík ČP - 75Kč (platba předem na účet) ">
Doporučený balík - 75Kč (platba předem na účet) </option> 
<option value=" Cenný balík ČP - 90Kč (platba předem na účet) ">
Cenný balík - 90Kč (platba předem na účet) </option> 
<option value=" Dobírka ČP - 150Kč "> Dobírka ČP - 150Kč </option> 
<option value=" Osobní převzetí v Havířově - ZDARMA ">
Osobní převzetí v Havířově - ZDARMA </option>
</select>
<br />                <br />
                <p align="center">
<input type="checkbox" name="C1" value="OFF"> Potvrzuji, že souhlasím s <a target="_blank" style="text-decoration: none" title="Klikněte pro více informací" href="http://denykr.euweb.cz/info-podminky.htm">
<font color="#FF0000">obchodními podmínkami</a>
<br />
<br />
<font color="#FFFFFF">Zpráva (volitelné):
<br />
<textarea name="notes" rows="4" cols="40"></textarea>
<br />
<br />
<input type="submit" value="" style="border:0px solid #A7D14F; font-family: Calibri; font-size: 12pt; font-weight: bold;  background-image:url('backgr3.jpg'); background-repeat:repeat; background-attachment:scroll; 120; height: 29; width:150" />
<br />
</p>
</form>

</font>

</body>

</html>



sendeail.php:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Potvrzení objednávky</title>
<meta http-equiv="Content-Language" content="cs">
</head>

<body bgcolor="#000000"><font color="#FFFFFF"><font face="Calibri">

<body>

<!-- Reminder: Add the link for the 'next page' (at the bottom) --> 
<!-- Reminder: Change 'YourEmail' to Your real email --> 

<?php

$ip = $_POST['ip']; 
$httpref = $_POST['httpref']; 
$httpagent = $_POST['httpagent']; 
$visitor = $_POST['jmeno']; 
$visitor = $_POST['prijmeni']; 
$visitor = $_POST['ulice']; 
$visitor = $_POST['mesto']; 
$visitor = $_POST['psc']; 
$visitor = $_POST['telefon']; 
$visitormail = $_POST['visitormail']; 
$notes = $_POST['notes'];
$attn = $_POST['attn'];

if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,"."))) 
{
echo "<h2>Chybně zadané údaje!</h2>\n";
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a přesvědčte se o správnosti tvaru Vašeho E-mailu.");
}

if(!$psc ==  $psc = ereg_replace("[^0-9]", "", $psc))
{
echo "<h2>Chybně zadané údaje!</h2>\n";
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a přesvědčte se o správnosti tvaru Vašeho poštovního směrovacího čísla.");
}

if(empty($jmeno) || empty($prijmeni) || empty($ulice) || empty($mesto) || empty($visitormail)|| empty($psc)) 
{
echo "<h2>Chybně zadané údaje!</h2>\n"; 
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a přesvědčte se, že jste vyplnili všechna políčka označená hvězdičkou.");
}

if(empty($C1)) {
echo "<h2>Zpráva nebyla odeslána.</h2>\n";
$badinput = "<h2>Před odesláním zprávy je nutné souhlasit s obchodními podmínkami.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a zatrhněte políčko 'Potvrzuji, že souhlasím s obchodními podmínkami' (v případě dotazu není třeba podmínky číst, stačí pouze zatrhnout políčko).");
}

if (mb_strlen($_POST['psc']) < 5)
{
echo "<h2>Chybně zadané údaje!</h2>\n";
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a přesvědčte se o správnosti tvaru Vašeho poštovního směrovacího čísla.");
}

if (mb_strlen($_POST['jmeno']) < 3)
{
echo "<h2>Chybně zadané údaje!</h2>\n"; 
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a zadejte své jméno ve správném tvaru.");
}

if (mb_strlen($_POST['prijmeni']) < 3)
{
echo "<h2>Chybně zadané údaje!</h2>\n";
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a zadejte své příjmení ve správném tvaru.");
}

if (mb_strlen($_POST['ulice']) < 4)
{
echo "<h2>Chybně zadané údaje!</h2>\n";
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a přesvědčte se o správnosti tvaru Vaší ulice a čísla popisného.");
}

if (mb_strlen($_POST['mesto']) < 2)
{
echo "<h2>Chybně zadané údaje!</h2>\n";
$badinput = "<h2>Zpráva nebyla odeslána.</h2>\n";
echo $badinput;
die ("Vraťte se prosím zpět a přesvědčte se o správnosti tvaru Vašeho města.");
}

$todayis = date("l, F j, Y, g:i a") ;

$attn = $attn ; 
$subject = $attn; 

$notes = stripcslashes($notes); 

$message = " $todayis [EST] \n
Predmet: $attn \n
Zprava: $notes \n 
Jmeno: $jmeno
Prijmeni $prijmeni
Ulice: $ulice
Mesto: $mesto
PSC $psc
Zpusob dopravy: $postovne
Telefon: $telefon
E-mail: ($visitormail)\n
Objednany predmet : $httpref \n
";

$from = "From: $visitormail\r\n";


mail("mail@mail.com", $subject, $message, $from);
?>

<p align="center"><font color="#FFFFFF"><font face="Calibri">
Datum: <?php echo $todayis ?> 
<br />
<p align="center"><font color="#FFFFFF"><font face="Calibri">
Děkuji Vám za objednávku.
<p align="center"><font color="#FFFFFF"><font face="Calibri">
Vaše objednávka bude zpracována co nejdříve.
<br />
<br /><br />
<p align="center">
<a href="javascript:window.close()">
<input type="button" value="" name="B1" style="border:0px solid #A7D14F; font-family: Calibri; font-size: 12pt; font-weight: bold; background-image:url('backgr2.jpg'); background-repeat:repeat; background-attachment:scroll; width:150; height:29"></a>


</body>
</html>

..Všem mnohokrát děkuji za jakoukoli pomoc, sám si s naprogramováním těchto funkcí neporadím.
Sir Tom
Profil
DenyKr:
Také ahoj, asi ti neodpovím na otázku, ale navrhnu ti, aby ses na toto vykašlal. Existuje několik už hotových e-shop systémů, které jsou zdarma (Prestashop, Opencart) a zde dané funkcionality už jsou. Je tedy zbytečné vymýšlet znovu kolo.
DenyKr
Profil
Ahoj,
děkuji za odpověď. Na uvedené e-shopy jsem dosud nenarazil, domníval jsem se, že jsou všechny zpoplatněny. Chtěl bych se tedy jen zeptat, zda je možné dané e-shopy přizpůsobit do plánovaného designu mých stránek (viz. zatím rozpracovaná verze viz: http://denykr.euweb.cz/abrex_skoda_superb_2001.htm), nebo je nutno akceptovat nějaký předem určený rámec, který budu moci pouze barevně upravovat?

Děkuji.
jenikkozak
Profil
DenyKr:
On by asi nebyl až tak velký problém přidat pár podmínek. Situace je však složitější v tom, že skript sendeail.php v podobě, kterou jste tu uvedl, nemůže fungovat správně. (A ten první soubor drží jen silou vůle.) Žádáte příliš. Pokud chcete vlastní řešení přímo na míru (podstatně menší a jednodušší než obrovské obchody navržené Sirem Tomem), můžete si zkusit přidat inzerát do sekce Práce a zakázky (s respektování tamních pravidel), ovšem počítejte s tím, že zadarmo se to asi nikomu nebude chtít dělat.
Sir Tom
Profil
DenyKr:
Určitě by to šlo. Oba nabízené obchody mají v nabídce různé šablony a témata vzhledu. (Možná by bylo lepší se vykašlat se na nějaký vlastní návrh a využít už to co je hotové, stáhnout si už hotovou šablonu a mírně poupravit CSS.) Samozřejmě, že pokud striktně žádáš využití svého návrhu, tak nejspíš bude potřebovat někoho, kdo by toto všechno udělal. (Pro začátečníka nebo neznalého je težké udělat si sám e-shop.) Beztak to ale ten někdo udělá na systému Prestashop, či něčem podobném (třeba i menším) a jenom změní vzhled (funkčnost zachová) a nejspíš se nebude pitvořit s tím, že by vytvářel úplně nový obchod od základů.

Zkus si nějaká dema těch obchodů, zkus si administraci, a podívej se na nějaké šablony - třeba tě nějaký zaujme a bude se ti líbit více, než tvůj návrh.
DenyKr
Profil
Všem mnohokrát děkuji za rady. Pokud současný (naštěstí funkční, i když možná nahnutě) formulář funguje, a jinak upravit v současném stavu již nelze, buď jej nechám, nebo v případě relativní nenáročnosti a přijatelného designu zkusím vytvořit E-shop právě za pomoci výše uvedených systémů.
Jinak je mi jasné, že dnes zadarmo ani kuře nehrabe a tím tuplem se mi nikdo nebude zadarmo zabývat mými e-shopy, přesto však tuto práci asi nikomu nesvěřím, neboť ty webové stránky dělám jen pro svou radost a na rozdíl od nedávno spuštěného fóra, za jehož provoz webhostingu platím, tyto stránky mi za to nestojí - kdoví, kolik budou mít návštěvníků a zda vůbec nějaký z publikovaných předmětů prodám. Ty investice do vývoje se mi tedy nevyplatí..
DenyKr
Profil
... tak bohužel e-shopy zřejmě nebudou. V případě OpenCart jsem sice instalaci spustil (to však až u nejstarší verze, nejnovější vyžadovala nastavení, které webzdarma nepodporuje), ovšem shodně končím u bodu instalace č. 3. Konkrétně prvně byla potíž se souborem "startup.php" a jeho řádkem č. 15 a 16, obsahující oprávnění:
ini_set('session.use_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
.. ani změna oprávnění nepomohla, této chybové hlášky jsem se zbavil až vymazáním těchto řádků ze souboru. Třetí chybová hláška " Table 'address' already exist " však přetrvala a ani opětovné vymazání celé složky s databází (mnou nazvané "eshop") a opětovná instalace nepomohla. Proto jsem se nedostal dál a po několikahodinovém snažení a nulové výpovědní hodnotě toho, co mi o této chybě nalezl google, jsem usoudil, že instalace zřejmě nebude možná.

V případě Prestashopu jsem se zase nedostal ani k prvnímu kroku instalace, vinou stále se vyskytující chyby, týkající se chybějícího souboru - viz. cesta: prestashop/install/classes ToolsInstall.php. Tato chybová hláška se objevovala u všech stáhnutých verzí a daný soubor opravdu v databázi vůbec nebyl. Google opět příliš nepomohl, zjistil jsem pouze, že podobný problém řeší mnoho lidí, všichni se však shodli, že jim shodně funguje verze 1.4.3.0 - ani tato verze však u mě neslavila úspěch. Daný chybějící soubor "ToolsInstall.php" jsem nenalezl k dodatečnému stažení ani nikde na internetu - nevím, co má podobná neúplnost znamenat (všechny verze jsem samozřejmě stahoval výhradně ze stránek Prestashopu).

.. proto se zřejmě spokojím s dosavadní polovičatě fungující verzí mého mini "e-shopu" a budu rád, že funguje aspoň něco..
Alphard
Profil
DenyKr:
Třetí chybová hláška " Table 'address' already exist "
Prostě už existuje nějaká tabulka, takže buď smazat, nastavit jiný prefix apod.

Ono celkově rozbíhat eshop na webu zdarma je docela odvážné.
DenyKr
Profil
.. no jo, problémem je, kde se ta tabulka nachází = jaký soubor smazat?
Ani nevím, jak se mohla vytvořit, nikdy předtím jsem e-shop neměl..
Sir Tom
Profil
DenyKr:
Ta tabulka je v databázi. A do ní se dostaneš s pomocí Adminer nebo phpMyAdmin. Pokud vůbec netušíš, o čem je řeč - či nevíš co je databáze na webu, tak doporučuji si nejdříve o tom něco nastudovat.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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