Autor | Zpráva | ||
---|---|---|---|
Stig001 Profil |
#1 · Zasláno: 6. 2. 2013, 20:01:39
Zdravím všechny, potřeboval bych poradit s tímto skriptem, s php nějaké malé zkušenosti mám, ale preferuji nějakou jednoduchou praktickou ukázku, protože tak si uvědomím co a jak. Problém je takový: Potřeboval bych na webu formulář, do kterého když napíšu slovo, tak aby se vykonala funkce include, ovšem slov bude několik, takže např. když napíšu "auto" vykoná se funkce include auto.php, když napíšu "škoda fabia" vykoná se funkce include skoda_fabia.php atd. Prozatím jsem tento způsob používal s formulářem, kde byly zaškrtávací tlačítka, nyní to potřebuji lehce inovovat. Doposud jsem pracoval s kódem:
<form method="post" action="?"> <table> <tr> <td class="rally-galerie-a"><input type="checkbox" name="vazka1">Šídélko větší</td> <td class="rally-galerie-a"><input type="checkbox" name="vazka2">Šídélko malé</td> <td class="rally-galerie-a"><input type="checkbox" name="vazka3">Šídélko brvonohé</td> </tr> </table> <br> <input type="submit" value="Zobrazit"> </form> <?php if (isset($_POST['vazka1'])) { include 'vazky/sidelko_vetsi.html'; } if (isset($_POST['vazka2'])) { include 'vazky/sidelko_male.html'; } if (isset($_POST['vazka3'])) { include 'vazky/sidelko_brvonohe.html'; } ?> Setkal se s tím někdo někde ? nebo ví jak jednoduše ten můj kód upravit ??? Díky moc všem |
||
scheras Profil * |
#2 · Zasláno: 6. 2. 2013, 20:58:12
Vlastně obdobně. Ale není to příliš elegantní řešení.
<form method="post" action=""> <input type="text" name="page" value="Zadejte výraz..."> <br> <input type="submit" value="Zobrazit"> </form> <?php if ($_POST['page']) { if ($_POST['page'] == 'auto') { include 'auto.php'; } elseif ($_POST['page'] == 'škoda fabia') { include 'skoda_fabia.php'; } elseif ($_POST['page'] == 'dalsi definovany') { include 'dalsi.php'; } else { include 'nedefinovano.php'; } } else { include 'uvod.php'; } |
||
Stig001 Profil |
#3 · Zasláno: 6. 2. 2013, 21:30:29
Výborně, děkuji moc, už jsem to vyzkoušel a funguje :-) .... jinak ještě by mně zajímalo, jestli by šlo jednoduše nějak udělat, aby formulář nerozlišoval velká a malá písmena, protože když napíšu "AUTO" tak to "nebere" .....
Předem díky, pokud to někdo bude vědět, je-li to vůbec možné. |
||
abc Profil |
#4 · Zasláno: 6. 2. 2013, 21:31:49
|
||
Lorin Profil * |
#5 · Zasláno: 6. 2. 2013, 22:59:29
Ten kód by šel, jednodušit tak, že by se před porovnáním odstranila interpunkce, mezery se nahradily za podtržítko a pak jen pomocí file_exists() testovat, zda soubo existuje. Vyhnul by se časem boptnající podmínce.
|
||
scheras Profil * |
#6 · Zasláno: 6. 2. 2013, 23:12:03
Lorin:
To jsem naznačoval tím „Ale není to příliš elegantní řešení.“. Tvoje řešení by ještě bylo potřeba rozšířit o základní bezpečnost, jinak je to pochopitelně mnohem lepší. |
||
Stig001 Profil |
#7 · Zasláno: 7. 2. 2013, 08:35:42
Tak už jsem to zkusil s tou funkcí strtlower, zde mám kod a funguje, pokud by někdo našel v něm nějakou chybu, která se týká toho php skriptu, tak mi písněte prosím:
<?php $pr=$_POST["page"]; $pr = strtoupper ( $pr ); if ($pr) { if ($pr == 'PASKOVANA') { include 'vazky/sidlatka_paskovana.html'; } elseif ($pr == 'TMAVA') { include 'vazky/sidlatka_tmava.html'; } elseif ($pr == 'HNEDA') { include 'vazky/sidlatka_hneda.html'; } else { include 'vazky/sidlo_pestre.html'; } } else { include 'vazky/sidlo_kralovske.html'; } Na závěr mám ještě poslední dotaz: jak je v těch uvozovkách: "HNEDA" atd. , tak to jsou slova, podle kterých se ten skript "chytne" a chci se zeptat, jestli by nešlo nějak jednoduše tam těch slov dát více (šlo by to zřejmě další podmínkou, ale nechci to zbytečně komplikovat) , zkoušel jsem tam dát čárku, mezeru, tečku atd. a nic nešlo, tak nevím, jestli je to vůbec možné. Díky |
||
scheras Profil * |
#8 · Zasláno: 7. 2. 2013, 08:45:22
Stig001:
„Na závěr mám ještě poslední dotaz: jak je v těch uvozovkách: "HNEDA" atd. , tak to jsou slova, podle kterých se ten skript "chytne" a chci se zeptat, jestli by nešlo nějak jednoduše tam těch slov dát více (šlo by to zřejmě další podmínkou, ale nechci to zbytečně komplikovat) , zkoušel jsem tam dát čárku, mezeru, tečku atd. a nic nešlo, tak nevím, jestli je to vůbec možné. Díky“ Jde to takto: elseif ($pr == 'HNEDA' || $pr == 'dalsipodminka') { include 'vazky/sidlatka_hneda.html'; } |
||
Stig001 Profil |
#9 · Zasláno: 7. 2. 2013, 09:02:18 · Upravil/a: Stig001
Super, díky moc
Ještě jsem narazil na drobnou nevýhodu při zkouškách skriptu a to: Při zadávání textu mi to "našeptává" ty hodnoty, které jsem tam již "v minulosti" zadal, byť byly nesprávné, takže bych se toho "našeptávače" potřeboval zbavit. Nikde jsem to na google nenašel, rep. nevím, pod čím to hledat. Takže kdyby ještě tohle někdo věděl, byl bych moc rád. Díky |
||
Rfilip Profil |
To je funkce prohlížeče (automatické vyplňování formulářů), paměť této funkce se dá vymazat jen pro celý prohlížeč( tedy na všech stránkách).
Např v chromu na této "adrese": chrome://settings/clearBrowserData konkrétně položka "Vymazat uložené údaje Automatického vyplňování formulářů" |
||
jenikkozak Profil |
#11 · Zasláno: 7. 2. 2013, 11:38:03
|
||
Stig001 Profil |
#12 · Zasláno: 7. 2. 2013, 14:11:07
Díky moc už to funguje, dokonce i v kombinaci s našeptávačem s datalistem, což chci . Jen by mně zajímala úplně poslední věc a to je interpunkce, zjistil jsem, že na slova, která mají háček nebo čárku se to nechytá => Nepozná např. "á" atd. , dá se ještě tohle nějak "ošetřit" ???
|
||
lorin Profil |
#13 · Zasláno: 7. 2. 2013, 14:31:18
|
||
Stig001 Profil |
#14 · Zasláno: 7. 2. 2013, 14:48:02
Zkusil jsem to podle toho vzoru, ale moc s php zkušenosti nemám a nějak mi to nejde. Někde je tam chyba, použil jsem to prozatím jen u té první podmínky:
<?php $pr=$_POST["page"]; $pr = strtoupper ( $pr ); setlocale(LC_ALL, 'czech'); if ($pr) { if (iconv("utf-8", "us-ascii//TRANSLIT", $pr) == 'PÁSKOVANÁ') { include 'vazky/sidlatka_paskovana.html'; } elseif ($pr == 'TMAVA') { include 'vazky/sidlatka_tmava.html'; } elseif ($pr == 'HNEDA') { include 'vazky/sidlatka_hneda.html'; } elseif ($pr == 'VELKA') { include 'vazky/sidlatka_velka.html'; } else { include 'chybna_hlaska.php'; } } else { include 'vazky/sidlo_kralovske.html'; } ?> |
||
Stig001 Profil |
#15 · Zasláno: 7. 2. 2013, 17:44:45 · Upravil/a: Stig001
Ještě jsem zkusil něco jiného, ale nejde mi to také :-( Řekl bych, že chyba bude jen někde v nějakém znaku případně proměnné ...
<?php $pr=$_POST["page"]; $pr = strtoupper ( $pr ); function cs_utf2ascii($pr) { static $p = array("\xc3\xa1"=>"a","\xc3\xa4"=>"a","\xc4\x8d"=>"c","\xc4\x8f"=>"d","\xc3\xa9"=>"e","\xc4\x9b"=>"e","\xc3\xad"=>"i","\xc4\xbe"=>"l","\xc4\xba"=>"l","\xc5\x88"=>"n","\xc3\xb3"=>"o","\xc3\xb6"=>"o","\xc5\x91"=>"o","\xc3\xb4"=>"o","\xc5\x99"=>"r","\xc5\x95"=>"r","\xc5\xa1"=>"s","\xc5\xa5"=>"t","\xc3\xba"=>"u","\xc5\xaf"=>"u","\xc3\xbc"=>"u","\xc5\xb1"=>"u","\xc3\xbd"=>"y","\xc5\xbe"=>"z","\xc3\x81"=>"A","\xc3\x84"=>"A","\xc4\x8c"=>"C","\xc4\x8e"=>"D","\xc3\x89"=>"E","\xc4\x9a"=>"E","\xc3\x8d"=>"I","\xc4\xbd"=>"L","\xc4\xb9"=>"L","\xc5\x87"=>"N","\xc3\x93"=>"O","\xc3\x96"=>"O","\xc5\x90"=>"O","\xc3\x94"=>"O","\xc5\x98"=>"R","\xc5\x94"=>"R","\xc5\xa0"=>"S","\xc5\xa4"=>"T","\xc3\x9a"=>"U","\xc5\xae"=>"U","\xc3\x9c"=>"U","\xc5\xb0"=>"U","\xc3\x9d"=>"Y","\xc5\xbd"=>"Z"); return strtr($pr, $p); } if ($pr) { if ($pr == 'PÁSKOVANÁ') { include 'vazky/sidlatka_paskovana.html'; } elseif ($pr == 'TMAVA') { include 'vazky/sidlatka_tmava.html'; } elseif ($pr == 'HNEDA') { include 'vazky/sidlatka_hneda.html'; } elseif ($pr == 'VELKA') { include 'vazky/sidlatka_velka.html'; } else { include 'chybova_hlaska.php'; } } else { include 'vazky/sidlo_kralovske.html'; } ?> Tak už jsem to dokončil a funguje, jen se bojím, jestli tam není nějaká výrazná chyba, která se prozatím neprojevila, ale snad ne. <?php $data = $_POST['page'] ;//ziskam data z formulare $prevodni_tabulka = Array( 'ä'=>'a', 'Ä'=>'A', 'á'=>'a', 'Á'=>'A', 'à'=>'a', 'À'=>'A', 'ã'=>'a', 'Ã'=>'A', 'â'=>'a', 'Â'=>'A', 'č'=>'c', 'Č'=>'C', 'ć'=>'c', 'Ć'=>'C', 'ď'=>'d', 'Ď'=>'D', 'ě'=>'e', 'Ě'=>'E', 'é'=>'e', 'É'=>'E', 'ë'=>'e', 'Ë'=>'E', 'è'=>'e', 'È'=>'E', 'ê'=>'e', 'Ê'=>'E', 'í'=>'i', 'Í'=>'I', 'ï'=>'i', 'Ï'=>'I', 'ì'=>'i', 'Ì'=>'I', 'î'=>'i', 'Î'=>'I', 'ľ'=>'l', 'Ľ'=>'L', 'ĺ'=>'l', 'Ĺ'=>'L', 'ń'=>'n', 'Ń'=>'N', 'ň'=>'n', 'Ň'=>'N', 'ñ'=>'n', 'Ñ'=>'N', 'ó'=>'o', 'Ó'=>'O', 'ö'=>'o', 'Ö'=>'O', 'ô'=>'o', 'Ô'=>'O', 'ò'=>'o', 'Ò'=>'O', 'õ'=>'o', 'Õ'=>'O', 'ő'=>'o', 'Ő'=>'O', 'ř'=>'r', 'Ř'=>'R', 'ŕ'=>'r', 'Ŕ'=>'R', 'š'=>'s', 'Š'=>'S', 'ś'=>'s', 'Ś'=>'S', 'ť'=>'t', 'Ť'=>'T', 'ú'=>'u', 'Ú'=>'U', 'ů'=>'u', 'Ů'=>'U', 'ü'=>'u', 'Ü'=>'U', 'ù'=>'u', 'Ù'=>'U', 'ũ'=>'u', 'Ũ'=>'U', 'û'=>'u', 'Û'=>'U', 'ý'=>'y', 'Ý'=>'Y', 'ž'=>'z', 'Ž'=>'Z', 'ź'=>'z', 'Ź'=>'Z'); $pd = strtr($data, $prevodni_tabulka); $pr = strtoupper ( $pd ); if ($pr) { if ($pr == 'PASKOVANA') { include 'vazky/sidlatka_paskovana.html'; } elseif ($pr == 'TMAVA') { include 'vazky/sidlatka_tmava.html'; } elseif ($pr == 'HNEDA') { include 'vazky/sidlatka_hneda.html'; } elseif ($pr == 'VELKA') { include 'vazky/sidlatka_velka.html'; } else { include 'chybova_hlaska.php'; } } else { include 'vazky/sidlo_kralovske.html'; } ?> |
||
Časová prodleva: 11 let
|
0