Autor Zpráva
drinkme
Profil
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
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
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";
  }
drinkme
Profil
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
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
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
juriad:
aha, o tomhle jsme se neučili...asi to bude efektivnější, zkusím to...thx
drinkme
Profil
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
drinkme:
Kódování přidej metatagem.
drinkme
Profil
<?php
$age = $_GET["age"];
$email=$_GET["mail"];
$soubor = fopen("texts.txt", "a+");  
$vloz= $age.echo(</br>).$email;
fwrite($soubor, $vloz);
fclose($soubor);
?>
neví někdo co je tu za chybu? Píše mi to něco s echem..ale nevím co se tomu nelíbí
Tori
Profil
drinkme:
echo není funkce, která by vracela nějakou hodnotu. Nemůžete ho proto spojovat s řetězci.
drinkme
Profil
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
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
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
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);
?>
....ale zase tu mám problém s tím radio buttonem, existuje nějaký způsob jak s nimi pracovat v PHP? Zkrátka potřebuji nějak vyřešit to, aby mi to do txt souboru zapsalo buďto "zena" nebo "muz" a to pochopitelně na základě toho co jsem vyplnil v JS formuláři.
Tori
Profil
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
nemeja:
nooo, tak přesně takhle jsme to zkoušel...nefunguje, ale to už je v poho:)
jackie
Profil *
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
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
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
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
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
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
aha, myslel jsem že když je to v cyklu, tak se tam středníky nedávají
drinkme
Profil
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
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
Tori:
Nějak nechápu, kam míříte...?
(puntičkářskou poznámku splním :- D)
Ugo
Profil
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
Ugo:
nechci vypadat jako blb, ale jsem žák 3.ročníku sš...musíte na mě pomalu :))
drinkme
Profil
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...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0