Autor | Zpráva | ||
---|---|---|---|
drinkme Profil |
#1 · Zasláno: 28. 12. 2011, 02:59:17 · Upravil/a: Moderátor (editace znemožněna) 3. 1. 2012, 01:18:57
Zdravím, učitelka nám zadala tenhle dú, ale já, protože v html ani php nejsem zrovna zběhlej mi to dělá trošku problémy....byl byste někdo tak hodnej a trošku víc dopodrobna mi vysvětlil jak na to?...budu vám za to moc vděčnej
zadání: Vytvořte html formulář s 4 prvky: pohlaví, věk, e-mail, textové pole pro připomínky a tlačítkem submit Upravte vzhled stránky formuláře pomocí CSS. Pomocí JavaScriptu ověřte, že je správně zadán e-mail a jsou vyplněny všechny položky. Pokud je formulář správně vyplněn, zapište údaje pomocí php do souboru. Zjistěte průměrný věk respondenta. Zjistěte, které pohlaví je zastoupeno častěji. Údaje zapište do jiného souboru. Vypište na obrazovku průměrný věk, procentuální zastoupení pohlaví a připomínky. Stránku upravte pomocí CSS. ....Důležity je abyste na mě nevyvalili kilometry kódu :-D, přecejenom je to na úrovni 3. ročníku SŠ(ještě k tomu gymplu ;) ) DÍKY Moderátor Alphard: Zatím jste se vůbec nedostal k PHP, takže přesunuji do obecnější kategorie.
|
||
kajaman Profil |
#2 · Zasláno: 28. 12. 2011, 08:08:38
Tady se někdo neučil! :-) ale vážně to není nic těžkého: formuáře,
pohlaví bude input type="radio", věk a email input type="text", dále je tam textarea, tady máš css, ověření emailu bych zkusil asi takhle, vyplění položek analogicky, zápis do souboru v php asi takhle. Nebo to opiš od nějakého spolužáka... |
||
puzzle Profil |
#3 · Zasláno: 29. 12. 2011, 13:37:07 · Upravil/a: puzzle
No, tak těžké to neni, ale jestli se to příští rok budeme učit aj my, tak se na to kotel těším, to asi půlka třídy propadne :D:D
ten Javascript bych hledal tu Javascript a zapisování přes PHP tady, oveření emalu bych udělal tak var re = /.+@.+\..+/; if (!re.test(mail)){ document.getElementById('kde se má chybová hláška zobrazit nějaký div').innerHTML = "Chybová hláška"; } |
||
Časová prodleva: 3 dny
|
|||
drinkme Profil |
#4 · Zasláno: 1. 1. 2012, 20:51:17
OK, díky
začal jsem tu s tím formulářem a mám tu problém: Z nějakýho důvodu nemůžu kliknout do text. polí Věk, E-mail a ani nemůžu označit možnost Muž...neví někdo o s tím je? <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title></title> <meta name="generator" content="CSE HTML Validator Professional (http://www.htmlvalidator.com/)" /> <link href="samostatna_prace.css" type="text/css" rel="stylesheet" /> </head> <body> <div class="stred"> <form > <input class="form" type="text" name="pohlavi" /> <br /> <input class="odr1" type="radio" name="odr" /><p class="muz">muz</p> <input class="odr2" type="radio" name="odr" /><p class="zena">zena</p> <input class="emailek"type="text" name="email" /> <textarea class="komenty" name="dalsitext" cols="20" rows="10"></textarea> <input type="submit" name="tlacitko" value="Odesli"/> </form> <p class="vek">Vek:</p> <p class="pohlavi">Pohlav:</p> <p class="email">Vlozte e-mail:</p> <p class="koment">Komentar:</p> </div> </body> </html> a CSS je tady: .vek{ position:relative; top:-364px; } .pohlavi{ position:relative; top:-382px; } .form{ position: relative; left: 50px; } body{ background-color: aqua; } .odrazky{ position: relative; left:100px; } .odrazky2{ left: } .odr1{ position: relative; left:50px; top:10px; } .muz{ position: relative; top: -30px; left:75px; } .zena{ position: relative; top: -90px; left:75px; } .odr2{ position: relative; left:50px; top: -50px; } .email{ position: relative; top:-370px; } .emailek{ position: relative; top: -260px; left:90px; } .koment{ position:relative; top: -380px; } .komenty{ position:relative; left: -80px; top: -69px; } .stred{ position: relative; left: 40%; } |
||
juriad Profil |
#5 · Zasláno: 1. 1. 2012, 21:27:28
tak zprasený kód jsem ještě neviděl; chápu, že se učíš, ale takle zahoď a začni znovu, zkus si pročíst sekci Technická řešení na http://www.plavacek.net/formulare/formular-jak-ma-byt.html, snad pochopíš, v čem děláš chyby
pokud tě opravdu zajímá, formulář nefunguje proto, že inputy jsou překryté odstavcem, který se roztáhne na šířku stránky pro příště dodej živou ukázku. |
||
Fisak Profil |
#6 · Zasláno: 1. 1. 2012, 21:28:37
Zdravím... jen bych ti poradil že existují mikroformáty ... což by si mohl použít u emailu pohlaví atd http://cs.wikipedia.org/wiki/Mikroform%C3%A1ty
|
||
drinkme Profil |
#7 · Zasláno: 1. 1. 2012, 22:30:51
juriad:
aha, o tomhle jsme se neučili...asi to bude efektivnější, zkusím to...thx |
||
drinkme Profil |
#8 · Zasláno: 1. 1. 2012, 23:49:56
poradí mi někdo jak tam vložit češtinu? zkoušel jsem to takhle: .... ale stejně nefunguje
<?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> |
||
jenikkozak Profil |
#9 · Zasláno: 2. 1. 2012, 08:07:32
drinkme:
Kódování přidej metatagem. |
||
drinkme Profil |
#10 · Zasláno: 3. 1. 2012, 01:09:57 · Upravil/a: drinkme
<?php $age = $_GET["age"]; $email=$_GET["mail"]; $soubor = fopen("texts.txt", "a+"); $vloz= $age.echo(</br>).$email; fwrite($soubor, $vloz); fclose($soubor); ?> |
||
Tori Profil |
#11 · Zasláno: 3. 1. 2012, 08:46:51
drinkme:
echo není funkce, která by vracela nějakou hodnotu. Nemůžete ho proto spojovat s řetězci. |
||
drinkme Profil |
#12 · Zasláno: 3. 1. 2012, 17:35:42
Ok, poradíte mi tedy jak na to,když potřebuji do souboru zapsat výše zmíněné údaje a chci aby to bylo přehledné(to znamená že tam potřebuji nějak vložit mezery)...?
|
||
Tori Profil |
#13 · Zasláno: 3. 1. 2012, 18:16:47
drinkme:
Spojujete řetězce. Některé jsou uložené do proměnné, některé napíšete. Co na tom? $doSouboru = $promenna123 . " kus textu s mezerami okolo " . $jinaPromenna . "\n" . 'tohle je na dalším řádku' . PHP_EOL . "a tohle je na 3.řádku"; (Konstanta PHP_EOL obsahuje vždy správné zalomení řádku pro daný OS, \n je hlavně pro linux a podobné.)
|
||
nemeja Profil |
#14 · Zasláno: 3. 1. 2012, 18:17:58
drinkme:
„$vloz= $age.echo(</br>).$email;“ Podle mě to takhle: $vloz = "$age</br>$email"; //pokud nebude fungovat zkus to takhle $vloz = $age."</br>".$email; |
||
drinkme Profil |
#15 · Zasláno: 3. 1. 2012, 18:49:11 · Upravil/a: drinkme
Yes, už jsem to pořešil :)
<?php $age = $_GET["age"]; $email=$_GET["mail"]; $man[0]=$_GET["man[0]"]; $man[1]=$_GET["man[1]"]; if($man[0].checked==true) {$gender="muz";} elseif ($man[1].checked==true) {$gender="zena";}; $soubor = fopen("texts.txt", "a+"); $vloz= $email; fwrite($soubor, $vloz); fwrite($soubor, $gender); fclose($soubor); ?> |
||
Tori Profil |
#16 · Zasláno: 3. 1. 2012, 18:52:46
drinkme:
Přepínače taky můžou mít hodnotu (atribut value), přičemž hodnota toho zvoleného bude v $_GET['jménoPřepínače]. |
||
drinkme Profil |
#17 · Zasláno: 3. 1. 2012, 18:56:38
nemeja:
nooo, tak přesně takhle jsme to zkoušel...nefunguje, ale to už je v poho:) |
||
jackie Profil * |
#18 · Zasláno: 3. 1. 2012, 19:10:28
meta: author,description,keywords,reply-to img, a href,<p>,<div id=""></div>,<h1></h1>, <ol><li></ol> <ul><li><li></ul> <table border="1"> <caption>Tabulka 4x4</caption> <tr><th>1</th><th>2</th><th>3</th><th>4</th></tr> </table> <form id="formular" method="get" action=""> <fieldset> <legend>Dotazník</legend> <label>tady by mela byt nejaka otazka </label> <br /> <label>ano</label> <input type="checkbox" value="a" id="ano" /> <label>ne</label> <input type="checkbox" value="n" id="ne" /> <br /> <label>tady by mela byt dalsi otazka </label> <select name="moznosti" id="moznosti"> <option value="ANO">ANO</option> <option value="NE">NE</option> <option value="MOZNA">MOZNA</option> </select><br /> <label>Vase jmeno: </label> <br /> <input type="text" name="Jmeno" value="Zde napis sve jmeno" maxlength="40" size="50" id="Jmeno" /> <br /> <label>Vas obor: </label> <br /> <input type="text" name="Obor" value="Zde napis svuj obor" maxlength="40" size="50" id="Obor" /> <br /> <label>Poznámky a námitky:</label><br /> <textarea name="poznamky" id="poznamky" cols="30" rows="5">Tady pis</textarea> <input type="submit" value="odeslat" /> </fieldset> </form> #prava{position: relative; width: 400px; height:580px; background-color: #ffff66; float:left; overflow:auto;} #leva{position: relative; width: 400px; height:580px; background-color: #99ff66; float:left; overflow:auto;} #stranka{margin: 10px auto 0 auto;width: 800px;} #horni{position: relaitve; width: 800px; height:50px; background-color: #ff6666; float:left;} #dolni{position: relaitve; width: 800px; height:50px; background-color: #66ff66; float:left;} body{background-color: #3E7387;} h1{font-family: Arial; font-size:21pt;color:#009900; text-align: center;} p{padding: 5px 5px 5px 10px;} img{padding: 5px 5px 5px 5px;} ol li {list-style-type: upper-roman} table{padding: 5px 5px 5px 5px;} a:link {color: #F0F0F0} a:visited {color:#A0A0A0} a:hover {color: #FF0000; text-decoration: underline} #levy {font-size: 30px; text-align: center; position:absolute;width:200px;top:200px;left:0px} #hlavicka {position:absolute;width:995px;height:190px;top:0px;left:0px} #telo { color:#D0D0D0;text-align: center; position:absolute;width:995px;top:200px; left:200px; font-size: 16px;} #pravy { font-size: 18px; text-align: center; position:absolute;width:150px;top:200px;left:1195px} blaaa |
||
drinkme Profil |
#19 · Zasláno: 3. 1. 2012, 19:17:19 · Upravil/a: drinkme
Tori:
Výborně, díky Tori, další část mám za sebou. jackie:D Jsem ti vděčný za ochotu, ale myslím, že učitelka není blbá aby nepoznala od koho to je :-D |
||
drinkme Profil |
#20 · Zasláno: 4. 1. 2012, 02:09:01
Zjistěte průměrný věk respondenta. Zjistěte, které pohlaví je zastoupeno častěji. Údaje zapište do jiného souboru. .......Nevím jak na to, jak to udělat abych mohl správně spočítat průměrný věk?
|
||
Tori Profil |
#21 · Zasláno: 4. 1. 2012, 10:27:04
drinkme:
Když s těmi uloženými daty chcete dál pracovat, bylo by dobré je ukládat v nějakém přesném formátu. Představte si to jako tabulku v Excelu, kde každý odeslaný formulář je na jednom řádku a vy potřebujete odlišit jednotlivé řádky a buňky. (A počítejte s tím, že vám z <textarea> a s trochu snahy i z <input>ů může přijít text zalomený přes několik řádků.) |
||
drinkme Profil |
#22 · Zasláno: 4. 1. 2012, 18:40:25
jojo, mě napadlo že bych to mohl uložit do toho TXT souboru a pak pomocí funkce file, která vrací obsah souboru jako pole pomocí cyklu například každej x-tej řádek je VĚK a postupně bych tyto řádky sčítal dohromady....Ale hází mi to chybu na řádku 25, nevím co tomu zase vadí :/
<?php $age = $_GET["age"]; $email=$_GET["mail"]; $man=$_GET["man"]; $poznamky=$_GET["comment"]; $soubor = fopen("textik.txt", "a+"); $mezera = "\n"; $oddelovac = "______________________"; fwrite($soubor, $mezera); fwrite($soubor, $man); fwrite($soubor, $mezera); fwrite($soubor, $age); fwrite($soubor, $mezera); fwrite($soubor, $email); fwrite($soubor, $mezera); fwrite($soubor, $poznamky); fwrite($soubor, $mezera); fwrite($soubor, $oddelovac); fclose($soubor); $pole=file("textik.txt"); $celkem=$pole[2]; $i=7; while($poznamky!="vyhodnotit") { $celkem=$celkem+$pole[$i] $i=$i+5 //tady, tu 5 tam snad můžu mít ne? } echo ($celkem) ?> |
||
abc Profil |
#23 · Zasláno: 4. 1. 2012, 20:29:33 · Upravil/a: abc
drinkme:
ano, ta 5 tam být může, ovšem PHP příkazy je nutno ukončit středníkem, tedy: $celkem=$celkem+$pole[$i]; $i=$i+5; //tady, tu 5 tam snad můžu mít ne? (na řádku 24 taky chybí) EDIT: na řádku 27 taky |
||
drinkme Profil |
#24 · Zasláno: 4. 1. 2012, 21:11:56
aha, myslel jsem že když je to v cyklu, tak se tam středníky nedávají
|
||
drinkme Profil |
#25 · Zasláno: 4. 1. 2012, 22:12:44 · Upravil/a: drinkme
trochu jsem to upravil, protože mi to dělalo takovej nekonečnej cyklus(while nevědělo kde končí řádky s věkem v tom souboru), tak jsem tam hodil
break ..ale pořád mi to háže chybu na 24.řádku
<?php $age = $_GET["age"]; $email=$_GET["mail"]; $man=$_GET["man"]; $poznamky=$_GET["comment"]; $soubor = fopen("textlast.txt", "a+"); $mezera = "\n"; $oddelovac = "______________________"; fwrite($soubor, $mezera); fwrite($soubor, $man); fwrite($soubor, $mezera); fwrite($soubor, $age); fwrite($soubor, $mezera); fwrite($soubor, $email); fwrite($soubor, $mezera); fwrite($soubor, $poznamky); fwrite($soubor, $mezera); fwrite($soubor, $oddelovac); fclose($soubor); $pole=file("textlast.txt"); $celkem=$pole[2]; $i=8; while($poznamky!="vyhodnotit") { if($pole[$i]=="") break; $celkem=$celkem+$pole[$i]; $i=$i+5; } echo ($celkem); ?> moje myšlenka byla taková, že jakmile cyklus zjistí že "věk" už došel(na řádku nebude žádné číslo, které by se přičetlo), tak jednoduše skončí... |
||
Tori Profil |
#26 · Zasláno: 5. 1. 2012, 09:40:11
drinkme:
„jakmile cyklus zjistí že "věk" už došel(na řádku nebude žádné číslo, které by se přičetlo)“ Tak proč ověřujete hodnotu parametru z URL? Potřebujete zjistit 1. jestli $i neukazuje za poslední index v $pole, a 2. jestli ukazuje na věk nebo jinou položku. Pro ladění si třeba nechte v tom cyklu vypisovat hodnoty $pole[$i], ať vidíte, co to vlastně přičítá. (Puntičkářská poznámka: nechcete tu proměnnou "man" ve formuláři i skriptu změnit na "gender", jak jste měl na začátku? Lépe by to odpovídalo tomu, co je do ní uložené.) |
||
drinkme Profil |
#27 · Zasláno: 5. 1. 2012, 19:07:25
Tori:
Nějak nechápu, kam míříte...? (puntičkářskou poznámku splním :- D) |
||
Ugo Profil |
#28 · Zasláno: 6. 1. 2012, 10:06:55
nevím proč nepoužít na soubory standartní formát (XML nebo CSV) - http://cz.php.net/manual-lookup.php?pattern=csv&lang=en&scope=quickref
při parsu dostaneš jasný array s kterým je pak práce pohodová |
||
drinkme Profil |
#29 · Zasláno: 7. 1. 2012, 00:25:22
Ugo:
nechci vypadat jako blb, ale jsem žák 3.ročníku sš...musíte na mě pomalu :)) |
||
drinkme Profil |
#30 · Zasláno: 8. 1. 2012, 22:36:15
mohl by mi někdo poradit jak to vyřešit:
drinkme: > trochu jsem to upravil, protože mi to dělalo takovej nekonečnej cyklus(while nevědělo kde končí řádky s věkem v tom souboru), tak jsem tam hodil break ..ale pořád mi to háže chybu na 24.řádku > > > <?php > $age = $_GET["age"]; > $email=$_GET["mail"]; > $man=$_GET["man"]; > $poznamky=$_GET["comment"]; > $soubor = fopen("textlast.txt", "a+"); > $mezera = "\n"; > $oddelovac = "______________________"; > fwrite($soubor, $mezera); > fwrite($soubor, $man); > fwrite($soubor, $mezera); > fwrite($soubor, $age); > fwrite($soubor, $mezera); > fwrite($soubor, $email); > fwrite($soubor, $mezera); > fwrite($soubor, $poznamky); > fwrite($soubor, $mezera); > fwrite($soubor, $oddelovac); > fclose($soubor); > $pole=file("textlast.txt"); > $celkem=$pole[2]; > $i=8; > while($poznamky!="vyhodnotit") { > if($pole[$i]=="") break; > $celkem=$celkem+$pole[$i]; > $i=$i+5; > } > echo ($celkem); > ?> > > moje myšlenka byla taková, že jakmile cyklus zjistí že "věk" už došel(na řádku nebude žádné číslo, které by se přičetlo), tak jednoduše skončí... bez pomoci parsování....? Spěchám, máme to mít odevzdané už ve středu... |
||
Časová prodleva: 12 let
|
0