« 1 2 »
Autor Zpráva
stilgarcz02
Profil
Zdravím,

měl sem tu dřívěji dotaz ohledně scriptu zpracovajici formulare. Problem se vyresil, ale dostal jsem zajimavou radu, na zkraceni prikazu switch. Pozdeji sem to vyzkousel, ale bohuzel to nahlasilo parse error a ja nevim, co s tim.

Tady je ten switch

switch ($_POST["d_p"]) {
case "1" : echo ("01. "); break;
case "2" : echo ("02. "); break;
case "3" : echo ("03. "); break;
case "4" : echo ("04. "); break;
case "5" : echo ("05. "); break;

case "6" : echo ("06. "); break;
case "7" : echo ("07. "); break;
case "8" : echo ("08. "); break;
case "9" : echo ("09. "); break;
case "10" : echo ("10. "); break;

case "11" : echo ("11. "); break;
case "12" : echo ("12. "); break;
case "13" : echo ("13. "); break;
case "14" : echo ("14. "); break;
case "15" : echo ("15. "); break;

case "16" : echo ("16. "); break;
case "17" : echo ("17. "); break;
case "18" : echo ("18. "); break;
case "19" : echo ("19. "); break;
case "20" : echo ("20. "); break;

case "21" : echo ("21. "); break;
case "22" : echo ("22. "); break;
case "23" : echo ("23. "); break;
case "24" : echo ("24. "); break;
case "25" : echo ("25. "); break;

case "26" : echo ("26. "); break;
case "27" : echo ("27. "); break;
case "28" : echo ("28. "); break;
case "29" : echo ("29. "); break;
case "30" : echo ("30. "); break;

case "31" : echo ("31. "); break;
}


Uz kdyz sem to delal, tak sem tusil, ze to urcite pujde zkratit, ale nevedel jsem, jak na to. Rada byla tato :

if($d_p>0&&$d_p<32)echo $d_p.". ";

Bohuzel to ale nefunguje. Kdybyste nekdo vedel, jak na to (i pokud mozno aby tam byla ta mezera za cislem) dejte mi prosim vedet. Diky
Leo
Profil
Nefunguje znamena co? Leo
stilgarcz02
Profil
Tendle prikaz bere z formulare z volby <option> hodnotu - den (jsou tam vypsany od 1-31). Jestlize nekdo vybere napriklad volbu 01 - jedna se vlastne o prvni den v mesici - pak se zobrazi "01. ".
Hugo
Profil
A co takhle

if($_POST['d_p']>0 && $_POST['d_p']<32) echo $_POST['d_p'].". ";
stilgarcz02
Profil
je to jen cast, obdobne to mam udelany pro mesice a roky.
stilgarcz02
Profil
Super :-), diky moc. Mel bych jeste jeden malej dotaz. Mam formular, kde mimo jine zadava jmeno, email, a jeste par polozek. Script(ted o hodne kratsi;-)) vypise dany hodnoty na obrazvku a ja bych je chtel mit usporadany do tabulky. Nejakym zpusobem se mi to povedlo, ale mam dojem, ze to asi neni uplne nejlepsi reseni.

Tady je vycuc:



echo ("<table border=1 align=center>");

echo ("<tr><td><b>Jméno:</b> </td> <td>"); if (!$_POST["jmeno"]) {echo ("<div class='neplatne'>Neplatné jméno.</div>");} else{echo ($_POST["jmeno"]);} echo("</td> </tr>");

echo ("<tr><td><b>E-mail:</b> </td> <td>"); if (!check_email ($_POST["email"])) {echo ("<div class='neplatne'>Neplatná e-mailová adresa</div>");} else {echo ($_POST["email"]);} echo("</td> </tr>");

echo ("</table>");

Zkousel jsem to nejakym zpusobem pospojovat teckama a tak ruzne, ale furt to hlasilo chyby, tak jsem udelal todle blbuvzdorny reseni, ale nevim nevim. Co si o tom myslite ?
tiso
Profil
1. pri echo nemusíš používať zátvorky, iba ak by ti to naozaj sprehľadňovalo ph zápis
2. používaj jeden príkaz (končiaci: ;) na jednom riadku
3. miesto 5x echo sa dá napísať 1x echo:

//1. spôsob:
echo "<table border=1 align=center>
<tr><td><b>Jméno:</b></td><td>";
if (!$_POST["jmeno"]) {echo "<div class='neplatne'>Neplatné jméno.</div>";}
else{echo $_POST["jmeno"];}
echo"</td></tr>
<tr><td><b>E-mail:</b></td> <td>";
if (!check_email ($_POST["email"])) {echo "<div class='neplatne'>Neplatná e-mailová adresa</div>";}
else {echo ($_POST["email"]);}
echo"</td></tr>"
</table>";
//2. spôsob:
//najprv si zistim co vypisem
if (!$_POST["jmeno"]) {$njmeno="<div class='neplatne'>Neplatné jméno.</div>";}
else{$njmeno=$_POST["jmeno"];}
if (!check_email ($_POST["email"])) {$nmail="<div class='neplatne'>Neplatná e-mailová adresa</div>";}
else {$nmail=($_POST["email"]);}
//potom vypis
echo "<table border=1 align=center>
<tr><td><b>Jméno:</b></td><td>".$njmeno."</td></tr>
<tr><td><b>E-mail:</b></td> <td>".$nemail."</td></tr>"
</table>";

...samozrejme išlo použiť aj ternárny operátor...
stilgarcz02
Profil
Děkuji mnohokrát. Hodně mi to pomohlo.
Taurendilcz
Profil *
s tou radou souhlasim ten switch byl padlej na hlavu:
$a=isset($_POST['d_p'])&&gettype($_POST['d_p'])=="integer"?$_POST['d_p ']:false;
if($a&&$a>0&&$a<32){echo a.". ";}
Taurendilcz
Profil *
$a=isset($_POST['d_p'])&&gettype($_POST['d_p'])=="integer"?$_POST['d_p ']:false;
if($a&&$a>0&&$a<32){echo "$a. ";}
rabbit
Profil
Taurendilcz: nechci Te urazit, spis jen popichnout .... RTFM!!!!!!!

To cos tady vyplodil, je bohuzel na hlavu padlejsi (trochu jinak - hlavne nefunguje) nez ten switch.

Schvalne, procpak asi?
mila
Profil
printf
stilgarcz02
Profil
Měl bych ještě otázečku, ta se týka trochu něčeho jiného. Věděl by jste někdo jak udělat stranky, kde by byla jedna(hlavni) stranka a vedlejsi stranky, ktery by doplnovaly hlavni? Na hlavni strance by se kliklo na odkaz, a podle toho by se do hlavni stranky nacet obsah. Pokud to jde udelat v PHP, mohl by jste me nekdo poradit, popripade nasmerovat, jak na to ?
tiso
Profil
php > include http://polopate.jakpsatweb.cz/index.php?page=include

Tento spôsob je ale už prekonaný, dá sa to spraviť lepšie...
stilgarcz02
Profil
A mohl bych se zeptat jaky je lepsi zpusob ? Rad se naucim neco noveho
tiso
Profil
Nevýhodou toho spôsobu sú adresy stránok. Lepšie adresy sú v tvare sluzby.php, kontakt.php, telefony/nokia/6210.php a podobne, a je viacero spôsobov ako to spraviť:
- mod_rewrite,
- cez chybovú stránku 404
- otočiť logiku - nevkladať obsah stránky do stranky s layoutom ale naopak - layout do každej jednotlivej stránky...
stilgarcz02
Profil
Urcite to vyzkousim, diky za tip.

Soubezne dodelavam svuj prvni takovej vetsi script, jedna se o formular. Neco malo sem k nemu jeste pridal a nefunguje dobre. Uz z toho zacinam bejt docela zoufalej. Prosim mrknete se nekdo na to :

<html>

<body>
<?php
$to = "nejakej@email";
$subj = "\nSubject";
$body = "\nObjednávka z Webového Formuláře".
"\nDatum příjezdu: " . quotemeta (isset($_POST["d_p"])) . quotemeta (isset($_POST["m_p"])) . quotemeta (isset($_POST["r_p"])) .
"\nDatum odjezdu: " . quotemeta (isset($_POST["d_o"])) . quotemeta (isset($_POST["m_o"])) . quotemeta (isset($_POST["r_o"])) .
"\nJméno: " . quotemeta (isset($_POST["jmeno"])) .
"\nPříjmení: " . quotemeta (isset($_POST["prijmeni"])) .
"\nTelefon: " . quotemeta (isset($_POST["telefon"])) .
"\nE-mail: " . addslashes (isset($_POST["email"])) .
"\nPocet osob:" . quotemeta (isset($_POST["pocet_osob"])) .
"\nPočet pokojů: " .
"\nPočet dvoulůžkových: " . quotemeta (isset($_POST["pocet_dvou"])) .
"\nPočet třílůžkových: " . quotemeta (isset($_POST["pocet_tri"])) .
"\nPočet čtyřlůžkových: " . quotemeta (isset($_POST["pocet_ctyr"])) .
"\nPoznámky:\n " . quotemeta (isset($_POST["poznamky"]))

;
$success = mail ($to, $subj, $body);
if ($success) {
echo ("<h1>Formulář se podařilo odeslat.</h1>");
} else {
echo ("<h1>Formulář se nepodařilo odeslat. Přetrvávají-li potíže, konktaktujte Administrátora. Můžete také využít rezervaci telefonickou či Emailem.<h/1>");
}

?>
<?php
echo ($_POST["Prijmeni"]);
?>
</body>
</html>

Tendle script je vlastne posledni v retezci. Nejprve je formular, pak se obsah vypise na obrazovku <-validace. Az do ted to funguje. Pak se klikne na odeslat, coz presmeruje script(zpracuj.php) kterej zpracoval formular na tendle script, kterej vysledek odesle. For je v tom, ze vsechno funguje, nehlasi to zadnou chybu, odesle se email, ale v emailu je vzdycky např. Jmeno: , Prijmeni: , ... proste se tam nevypise ten obsah promennych.
WertriK
Profil
Proč tam máš to isset($_POST["prijmeni"]) ? Jde mi o to IsSet.
tiso
Profil
...hrôza... aby som sa s tým nebabral:

quotemeta (isset($_POST["d_p"])) //???
isset($_POST["d_p"]) ? quotemeta ($_POST["d_p"]) : "-" //!!!

-toto Ti miesto nezadaných hodnôt napíše pomlčku
stilgarcz02
Profil
To byl pokus. Kdyz script zkousim z localhost ukazoval se tam undefined index. Kdyz sem tam dal isset neukazalo se to. Zkousim vsechno mozny. Nejhorsi je ze to fungovalo a ted uz ne. Mam poslat i ten script zpracuj.php ?
tiso
Profil
Tak keď skúšaš a nefunguje, tak skúšaj ďalej...
stilgarcz02
Profil
to Tiso: pokus byl to s tim isset. Bez neho to fungovalo. Ale pak sem tam pridal pocty pokoju a uz to nefungovalo
stilgarcz02
Profil
ono to nevypisuje ty hodnoty ani kdyz jsou vsechny zadany
tiso
Profil
A nahradil si všetko tak ako som Ti napísal? Pre začiatok stačí jednu hodnotu...

btw. tiso a Tiso je rozdiel...
stilgarcz02
Profil
Omlouvam se za opozdeni, ale mel sem nejaky zarizovani. Nahradil jsem to vsechno a email se sice odeslal, ale vysledkem byla jedna pomlcka. Nic vic. Bud je to v necem jinym nebo sem to spatne nahradil. Tady je kod:


<html>
<body>
<?php
$to = "email";
$subj = "\nrezervace";
$body = "\nObjednávka z Webového Formuláře".
"\nDatum příjezdu: " . isset($_POST["d_p"]) ? quotemeta ($_POST["d_p"]) : "-" . isset($_POST["m_p"]) ? quotemeta ($_POST["m_p"]) : "-" . isset($_POST["r_p"]) ? quotemeta ($_POST["r_p"]) : "-" .
"\nDatum odjezdu: " . isset($_POST["d_o"]) ? quotemeta ($_POST["d_o"]) : "-" . isset($_POST["m_o"]) ? quotemeta ($_POST["m_o"]) : "-" . isset($_POST["r_o"]) ? quotemeta ($_POST["r_o"]) : "-" .
"\nJméno: " . isset($_POST["jmeno"]) ? quotemeta ($_POST["jmeno"]) : "-" .
"\nPříjmení: " . isset($_POST["prijmeni"]) ? quotemeta ($_POST["prijmeni"]) : "-" .
"\nTelefon: " . isset($_POST["telefon"]) ? quotemeta ($_POST["telefon"]) : "-" .
"\nE-mail: " . addslashes (isset($_POST["email"])) .
"\nPocet osob:" . isset($_POST["pocet_osob"]) ? quotemeta ($_POST["pocet_osob"]) : "-" .
"\nPočet pokojů: " .
"\nPočet dvoulůžkových: " . isset($_POST["pocet_dvou"]) ? quotemeta ($_POST["pocet_dvou"]) : "-" .
"\nPočet třílůžkových: " . isset($_POST["pocet_tri"]) ? quotemeta ($_POST["pocet_tri"]) : "-" .
"\nPočet čtyřlůžkových: " . isset($_POST["pocet_ctyr"]) ? quotemeta ($_POST["pocet_ctyr"]) : "-" .
"\nPoznámky:\n " . isset($_POST["poznamky"]) ? quotemeta ($_POST["poznamky"]) : "-"

;
$success = mail ($to, $subj, $body);
if ($success) {
echo ("<h1>Formulář se podařilo odeslat.</h1>");
} else {
echo ("<h1>Formulář se nepodařilo odeslat. Přetrvávají-li potíže, konktaktujte Administrátora. Můžete také využít rezervaci telefonickou či Emailem.<h/1>");
}

?>
</body>
</html>
stilgarcz02
Profil
Nevim, mozna je chyba tady :
$qs =

"?d_p=" . urlencode ($_POST["d_p"]) .
"&m_p=" . urlencode ($_POST["m_p"]) .
"&r_p=" . urlencode($_POST["r_p"]) .
"&d_o=" . urlencode($_POST["d_o"]) .
"&m_o=" . urlencode($_POST["m_o"]) .
"&r_o=" . urlencode($_POST["r_o"]) .
"&jmeno=" . urlencode ($_POST["jmeno"]) .
"&prijmeni=" . urlencode ($_POST["prijmeni"]) .
"&telefon=" . urlencode ($_POST["telefon"]) .
"&email=" . urlencode ($_POST["email"]) .
"&pocet_osob=" . urlencode ($_POST["pocet_osob"]) .
"&pocet_dvou=" . urlencode ($_POST["pocet_dvou"]) .
"&pocet_tri=" . urlencode ($_POST["pocet_tri"]) .
"&pocet_ctyr=" . urlencode ($_POST["pocet_ctyr"]) .
"&poznamky=" . urlencode ($_POST["poznamky"])

;
echo "<center> <p>";
$URL = "mail.php" . $qs;
echo ("<FORM METHOD=post ACTION=\"$URL\">");


echo ("<INPUT TYPE='submit' VALUE='Odeslat'>");

?>

To je konec scriptu zpracuj.php, kterej by mel ,,prenyst" hodnoty promennych do mail.php
tiso
Profil
Ty všetky POST dáta kóduješ do url? No ty koki... To je fakt sila...

Url má obmedzenú dĺžku, preto sa používajú 2 spôsoby -GET na malé dáta a POST a veľké dáta.
stilgarcz02
Profil
Ano. Aha, a myslis ze v tom je ten problem ? Vis, ja zatim nevim o lepsim zpusobu. Prapuvodni sablona byla podle jedny knizky a kdyz jsem ji zkousel tak fungovala.
tiso
Profil
http://www.plavacek.net/formulare/

http://www.linuxsoft.cz/article.php?id_article=269
http://www.linuxsoft.cz/article.php?id_article=270
http://www.linuxsoft.cz/article.php?id_article=274
http://www.linuxsoft.cz/article.php?id_article=292
http://www.linuxsoft.cz/article.php?id_article=430

a prečítaj si radšej celý ten seriál na linuxsofte...
stilgarcz02
Profil
Diky, urcite to udelam. Ma cesta po poznani PHP je teprve na zacatku. Ale uz sem na to prisel. Misto POST jsem dal vsude GET a vzdycky stacil zapis: . quotemeta (promena) . atd. Kdybys mi nedal odkaz na to include, tak bych na to asi neprisel. Pise se tam, ze promena a hodnoty v URL jsou dostupne z $_GET. Takze dekuji :-). Tendle prenos pres URL asi neni idealni, je jeste nejaka jina moznost ? Asi urcite by to slo nejak pres databaze, ale to je zatim pro me spanelska vesnice. Prej by to nejak slo pres globalni nebo snad superglobalni(?) promenou, ale nevim.
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.

0