Autor | Zpráva | ||
---|---|---|---|
Honza.P Profil |
#1 · Zasláno: 24. 2. 2012, 14:16:32
Ahoj, ve škole jsem dostal za úkol vytvořit jakoby takové vyhledávání. V praxi by to mělo umět něco jako: Do vyhledávacího okna zadám otázku a ve výsledku by hned měla vyjet správná odpověď. Data by to získávalo například z textového souboru nebo může být i databáze kde by každá otázka měla i svou odpověď a podle toho to vyhodnotilo tu správnou. Problém je ten, že nevím kde a jak začít, poradíte mi prosím? Snad jsem to napsal dosti srozumitelně. Děkuji za jakoukoliv odpověď
|
||
Honza.P Profil |
#2 · Zasláno: 24. 2. 2012, 15:30:51
Další příklad: Když do vyhledávače zadám otázku "Komu patří YouTube" vyhodí to "Google inc" atak dále, otázky by měli jít přidávat stejně tak i odpovědi. Najde se tu někdo, kdo mi s tím pomůže?
|
||
Louka Profil |
#3 · Zasláno: 24. 2. 2012, 19:03:29
Potřebuješ dělat analýzu dokumentů, nebo ti stačí mít v txt souboru něco typu
Komu patří YouTube? = Google Inc; Jaké je hlavní město ČR? = Praha; Jaká je odpověď na základní otázku Života, Vesmíru a vůbec? = 42 A je hledat otázky a vypisovat odpovědi? |
||
Honza.P Profil |
#4 · Zasláno: 24. 2. 2012, 19:31:35
Potřebuji něco aby to fungovalo, takže je jedno jestli analýzu dokumentů nebo jen v .txt. Při zadání otázky "Komu patří YouTube?" by to mělo vypsat "Google Inc" a to samé s těmi dalšími otázkami:-) Děkuji ti za reakci.
|
||
SeparateSK Profil |
Ahoj, najprv potrebuješ mať otázky, potom odpoveďe.
Teraz zadám otázku napr Aké je hlavné mesto..., a ideme hladať zhodu v otázkach. Ak bude zhoda viac ako 90%, vypíšeme odpoveď. Pravdepodobnosť zhody vypočítame takto: x=najviac nájdutých zhodných slov v nejakej otázke y=počet slov danej otázky, v ktorej boli nájduté slová. 100*(x/y) <?php function zisti($otazka){ if(substr($otazka,-1,1)==" ")$otazka=substr($otazka,0,(strlen($otazka)-1)); //OTAZKY $otazky=array(); $otazky[]="Komu patri Youtube"; $otazky[]="Ake je hlavne mesto ČR"; $otazky[]="Ake je hlavne mesto Poľska"; //ODPOVEDE $odpovede=array(); $odpovede[]="Google Inc"; $odpovede[]="Praha"; $odpovede[]="Varšava"; $najviac=0; $o=-1; $otazkaEX=explode(" ",$otazka); $slov=count($otazkaEX); $najdutych=0; for($i=0;$i<=count($otazky);$i++){ for($s=0;$s<$slov;$s++){ $slovo=$otazkaEX[$s]; if(preg_match("/(.*)$slovo(.*)/siU",$otazky[$i])){ $najdutych+=1; } } //echo $najdutych."<br>"; if($najdutych>$najviac){ $najviac=$najdutych; $o=$i; } $najdutych=0; //echo $o."<br>"; } $pravdepodobnost=100*($najviac/(count(explode(" ",$otazky[$o])))); //echo "Pravdepodobnost: ".$pravdepodobnost."%"; if($pravdepodobnost>90){ echo "Odpoved: $odpovede[$o]"; } } zisti("Ake je hlavne mesto Poľska"); ?> Len si to nejak osetri, ked chces vysledky bez diakritiky take ako s diakritikou. :) Textové pole do ktorého zadávaš otázku si dorob a kladenú otázku dosaď to do napr. zisti($_GET[otazka]); Dúfam,že toto ti pomohlo :) |
||
Honza.P Profil |
#6 · Zasláno: 24. 2. 2012, 19:45:16
SeparateSK:
Ahoj, děkuji za tvůj příspěvek, ale asi je tam někde chyba, protože když to otevřu, v prohlížeči se objeví jen prázdná stránka. V PHP jsem amater:-( |
||
SeparateSK Profil |
No :) zabudol som, tam v predposlednom riadku kde je
zisti("ake"); zisti("Ake je hlavne mesto Poľska"); Dúfam, že to teraz pôjde OK. |
||
Honza.P Profil |
#8 · Zasláno: 24. 2. 2012, 19:50:33
SeparateSK:
Funguje to bezvadně, opravdu mockrát děkuji:-) Nedalo by se tam udělat ještě to vyhledávací pole do kterého bych zadával ty celé otázky? |
||
SeparateSK Profil |
#9 · Zasláno: 24. 2. 2012, 19:53:38
Jasné :)
ešte pred <?php pridaj: <form><input type="text" name="otazka"><input type="submit" value="Zisti odpoved"></form> zisti($_GET[otazka]);
Samozrejme, ešte by si tam mohol dorobiť to,že funkcia zisti očistí danú otázku o diakritiku a z písmenka Č urobí C, aby zadávanie s diakritikou a bez bolo bez rozdielu :) |
||
panther Profil |
#10 · Zasláno: 24. 2. 2012, 19:53:39
Honza.P:
„Nedalo by se tam udělat ještě to vyhledávací pole“ Formuláře » input a celé to samozřejmě obalit formulářem |
||
Honza.P Profil |
#11 · Zasláno: 24. 2. 2012, 20:03:41 · Upravil/a: Honza.P
SeparateSK:
Tak ted je to úplně v pořádku, ale kdyz zadám otázku do vyhledávání a v .php je otazka s diakritikou tak to nic nenajde, nejde toto jeste nejak osetrit? a už by to bylo kompletní:-) Jako by tam ta pravdepodobnosť shody vubec nebyla, otázka musí být vložena přesně tak, jak je napsána v tom souboru .php SeparateSK aha, musel jsem nastavit tu pravdepodobnost na 50% a ted je to uplně super, takže ti mockrát děkuji. A i Vám statním za Vaše příspěvky:-) Ještě jednou velké díky! |
||
SeparateSK Profil |
Nastav si tú pravdepodobnosť späť na 90 teraz, lebo pri 50% stačí aj "Ake je hlavne mesto" a už je pravdepodobnosť 80% a vypíše odpoveď,že hlavné mesto ničoho je napr. Praha :) a použi tento upravený script, ktorý nájde otázky aj s diakritikou.
<form><input type="text" name="otazka"><input type="submit" value="Zisti odpoved"></form> <?php function zisti($otazka){ if(substr($otazka,-1,1)==" ")$otazka=substr($otazka,0,(strlen($otazka)-1)); $nahrad=array( 'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'A'=>'A', 'Á'=>'A', 'Â'=>'A', 'A'=>'A', 'Ä'=>'A', 'A'=>'A', 'A'=>'A', 'Ç'=>'C', 'E'=>'E', 'É'=>'E', 'E'=>'E', 'Ë'=>'E', 'I'=>'I', 'Í'=>'I', 'Î'=>'I', 'I'=>'I', 'N'=>'N', 'O'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'O'=>'O', 'Ö'=>'O', 'O'=>'O', 'U'=>'U', 'Ú'=>'U', 'U'=>'U', 'Ü'=>'U', 'Ý'=>'Y', '?'=>'B', 'ß'=>'Ss', 'a'=>'a', 'á'=>'a', 'â'=>'a', 'a'=>'a', 'ä'=>'a', 'a'=>'a', 'a'=>'a', 'ç'=>'c', 'e'=>'e', 'é'=>'e', 'e'=>'e', 'ë'=>'e', 'i'=>'i', 'í'=>'i', 'î'=>'i', 'i'=>'i', '?'=>'o', 'n'=>'n', 'o'=>'o', 'ó'=>'o', 'ô'=>'o', 'o'=>'o', 'ö'=>'o', 'o'=>'o', 'u'=>'u', 'ú'=>'u', 'u'=>'u', 'ý'=>'y', 'ý'=>'y', '?'=>'b', 'y'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', 'Ť'=>'T', 'ť'=>'t','Ř'=>'R','ř'=>'r','ů'=>'u','Ů'=>'U','Ě'=>'E','ě'=>'e' ); $otazka=strtr($otazka,$nahrad); //OTAZKY $otazky=array(); $otazky[]="Komu patri Youtube"; $otazky[]="Ake je hlavne mesto CR"; $otazky[]="Ake je hlavne mesto Polska"; $otazky[]="Ake je hlavne mesto Slovenska"; //ODPOvEDE $odpovede=array(); $odpovede[]="Google Inc"; $odpovede[]="Praha"; $odpovede[]="Varšava"; $odpovede[]="Bratislava"; $najviac=0; $o=-1; $otazkaEX=explode(" ",$otazka); $slov=count($otazkaEX); $najdutych=0; for($i=0;$i<=count($otazky);$i++){ for($s=0;$s<$slov;$s++){ $slovo=$otazkaEX[$s]; if(preg_match("/(.*)$slovo(.*)/siU",$otazky[$i])){ $najdutych+=1; } } //echo $najdutych."<br>"; if($najdutych>$najviac){ $najviac=$najdutych; $o=$i; } $najdutych=0; //echo $o."<br>"; } $pravdepodobnost=100*($najviac/(count(explode(" ",$otazky[$o])))); //echo $pravdepodobnost."%"; if($pravdepodobnost>90){ echo "Odpoved: $odpovede[$o]"; } } zisti("$_GET[otazka]"); ?> POZOR: Otázky ktoré budú napísané už v php musia byť BEZ diakritiky! |
||
Honza.P Profil |
#13 · Zasláno: 24. 2. 2012, 20:21:45
SeparateSK:
Když otázky musí být bez diakritiky tak předpokládám že i odpovědi, ale když bych potřeboval u výsledné odpověď diakritiku a v php být nesmí tak jak toho docílím? |
||
SeparateSK Profil |
Nie ,odpovede môžu byť ako chceš :)
2. hento docieliš tak, že hňeď za function($otazka){
Dopíšeš: $kladena_otazka=$otazka;
Kladená otázka ostane neporušená, - akokeby si robil zálohu otázky :) A keď chceš vypísať pôvodnú otázku tak len proste echo "Odpoved: $odpovede[$o]"; echo "Kladená otázka: $kladena_otazka<br>Odpoved: $odpovede[$o]"; |
||
Honza.P Profil |
#15 · Zasláno: 25. 2. 2012, 15:43:00
SeparateSK:
Ahoj, omlouvám se že si pořád něco vymýšlím když si už pro mne udělal už dost, ale je nějaká možnost, jak vytvořit našeptavač těch otázek? Když bych zadával otázku Komu patri Y a už by mi to našeptalo zbytek otázky? Snad mi rozumíš. |
||
SeparateSK Profil |
Honza.P:
OK :) - keďže to buglo, prosím čítaj tento príspevok po uvedené hviezdičky(********************) Teraz použijeme ešte AJAX, kôli našeptávaču,aby sa nemusela stránka refreshovať Vytvoríš ešte jeden súbor: status.php Do pôvodného súboru, kde zadávaš otázky napíšeš tento kód: <script> function naseptavac(text){ var x; if (window.XMLHttpRequest) { x=new XMLHttpRequest(); } else { x=new ActiveXObject("Microsoft.XMLHTTP"); } x.onreadystatechange=function() { if (x.readyState==4 && x.status==200) { ret=x.responseText; document.getElementById('naseptavac').innerHTML=ret; } } x.open('GET',"status.php?text="+text,true); x.send(); } </script> <form><input type="text" name="otazka" style="text-align:right" onkeyup="naseptavac(this.value)" autocomplete="off" id="text" size="75">?<input type="submit" value="Zisti odpoved"></form> <?php function zisti($otazka){ $kladena_otazka=$otazka; if(substr($otazka,-1,1)==" ")$otazka=substr($otazka,0,(strlen($otazka)-1)); $nahrad=array( 'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'A'=>'A', 'Á'=>'A', 'Â'=>'A', 'A'=>'A', 'Ä'=>'A', 'A'=>'A', 'A'=>'A', 'Ç'=>'C', 'E'=>'E', 'É'=>'E', 'E'=>'E', 'Ë'=>'E', 'I'=>'I', 'Í'=>'I', 'Î'=>'I', 'I'=>'I', 'N'=>'N', 'O'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'O'=>'O', 'Ö'=>'O', 'O'=>'O', 'U'=>'U', 'Ú'=>'U', 'U'=>'U', 'Ü'=>'U', 'Ý'=>'Y', '?'=>'B', 'ß'=>'Ss', 'a'=>'a', 'á'=>'a', 'â'=>'a', 'a'=>'a', 'ä'=>'a', 'a'=>'a', 'a'=>'a', 'ç'=>'c', 'e'=>'e', 'é'=>'e', 'e'=>'e', 'ë'=>'e', 'i'=>'i', 'í'=>'i', 'î'=>'i', 'i'=>'i', '?'=>'o', 'n'=>'n', 'o'=>'o', 'ó'=>'o', 'ô'=>'o', 'o'=>'o', 'ö'=>'o', 'o'=>'o', 'u'=>'u', 'ú'=>'u', 'u'=>'u', 'ý'=>'y', 'ý'=>'y', '?'=>'b', 'y'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', 'Ť'=>'T', 'ť'=>'t','Ř'=>'R','ř'=>'r','ů'=>'u','Ů'=>'U','Ě'=>'E','ě'=>'e' ); $otazka=strtr($otazka,$nahrad); //OTAZKY $otazky=array(); $otazky[]="Komu patri Youtube"; $otazky[]="Komu patri Facebook"; $otazky[]="Ake je hlavne mesto CR"; $otazky[]="Ake je hlavne mesto Polska"; $otazky[]="Ake je hlavne mesto Slovenska"; //ODPOvEDE $odpovede=array(); $odpovede[]="Google Inc"; $odpovede[]="Markovi Zuckenbergovi"; $odpovede[]="Praha"; $odpovede[]="Varšava"; $odpovede[]="Bratislava"; $najviac=0; $o=-1; $otazkaEX=explode(" ",$otazka); $slov=count($otazkaEX); $najdutych=0; for($i=0;$i<=count($otazky);$i++){ for($s=0;$s<$slov;$s++){ $slovo=$otazkaEX[$s]; if(preg_match("/(.*)$slovo(.*)/siU",$otazky[$i])){ $najdutych+=1; } } //echo $najdutych."<br>"; if($najdutych>$najviac){ $najviac=$najdutych; $o=$i; } $najdutych=0; //echo $o."<br>"; } $pravdepodobnost=100*($najviac/(count(explode(" ",$otazky[$o])))); //echo $pravdepodobnost."%"; if($pravdepodobnost>90){ echo "Otazka: $kladena_otazka <br>Odpoved: $odpovede[$o]"; } } zisti("$_GET[otazka]"); ?> <hr><div id="naseptavac"></div> Teraz do súboru status.php napíšeš tento kód: <?php function zisti($otazka){ if(substr($otazka,-1,1)==" ")$otazka=substr($otazka,0,(strlen($otazka)-1)); $nahrad=array( 'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Ć'=>'C', 'ć'=>'c', 'A'=>'A', 'Á'=>'A', 'Â'=>'A', 'A'=>'A', 'Ä'=>'A', 'A'=>'A', 'A'=>'A', 'Ç'=>'C', 'E'=>'E', 'É'=>'E', 'E'=>'E', 'Ë'=>'E', 'I'=>'I', 'Í'=>'I', 'Î'=>'I', 'I'=>'I', 'N'=>'N', 'O'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'O'=>'O', 'Ö'=>'O', 'O'=>'O', 'U'=>'U', 'Ú'=>'U', 'U'=>'U', 'Ü'=>'U', 'Ý'=>'Y', '?'=>'B', 'ß'=>'Ss', 'a'=>'a', 'á'=>'a', 'â'=>'a', 'a'=>'a', 'ä'=>'a', 'a'=>'a', 'a'=>'a', 'ç'=>'c', 'e'=>'e', 'é'=>'e', 'e'=>'e', 'ë'=>'e', 'i'=>'i', 'í'=>'i', 'î'=>'i', 'i'=>'i', '?'=>'o', 'n'=>'n', 'o'=>'o', 'ó'=>'o', 'ô'=>'o', 'o'=>'o', 'ö'=>'o', 'o'=>'o', 'u'=>'u', 'ú'=>'u', 'u'=>'u', 'ý'=>'y', 'ý'=>'y', '?'=>'b', 'y'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r', 'Ť'=>'T', 'ť'=>'t','Ř'=>'R','ř'=>'r','ů'=>'u','Ů'=>'U','Ě'=>'E','ě'=>'e' ); $otazka=strtr($otazka,$nahrad); //OTAZKY $otazky=array(); $otazky[]="Komu patri Youtube"; $otazky[]="Komu patri Facebook"; $otazky[]="Ake je hlavne mesto CR"; $otazky[]="Ake je hlavne mesto Polska"; $otazky[]="Ake je hlavne mesto Slovenska"; $najviac=0; $o=-1; $otazkaEX=explode(" ",$otazka); $slov=count($otazkaEX); $najdutych=0; for($i=0;$i<=count($otazky);$i++){ for($s=0;$s<$slov;$s++){ $slovo=$otazkaEX[$s]; if(preg_match("/(.*)$slovo(.*)/siU",$otazky[$i])){ $najdutych+=1; } } //echo $najdutych."<br>"; $najviac=$najdutych; $najdutych=0; $pravdepodobnost=100*($najviac/(count(explode(" ",$otazky[$i])))); //echo $pravdepodobnost." -- otazka $otazky[$i]<br>"; if($pravdepodobnost>79){ echo "<span onclick=\"document.getElementById('text').value='$otazky[$i]'\" style=\"cursor:pointer\">$otazky[$i]</span> <br>"; } } } zisti("$_GET[text]"); ?> V súbore status.php musia byť dané otázky už napísané tak isto ako tam kde zadávaš ten text, pravdepodobne to máš na indexe.php, odpovede nemusia. Dúfam, že toto je niečo také, čo si chcel *******************************[/b]honza.p:[/b] ok :) - keďže to buglo, prosím čítaj tento príspevok po uvedené hviezdičky(********************) teraz použijeme ešte ajax, kôli našeptávaču,aby sa nemusela stránka refreshovať vytvoríš ešte jeden súbor: status.php do pôvodného súboru, kde zadávaš otázky napíšeš tento kód: <script> function naseptavac(text){ var x; if (window.xmlhttprequest) { x=new xmlhttprequest(); } else { x=new activexobject("microsoft.xmlhttp"); } x.onreadystatechange=function() { if (x.readystate==4 && x.status==200) { ret=x.responsetext; document.getelementbyid('naseptavac').innerhtml=ret; } } x.open('get',"status.php?text="+text,true); x.send(); } </script> <form><input type="text" name="otazka" style="text-align:right" onkeyup="naseptavac(this.value)" autocomplete="off" id="text" size="75">?<input type="submit" value="zisti odpoved"></form> <?php function zisti($otazka){ $kladena_otazka=$otazka; if(substr($otazka,-1,1)==" ")$otazka=substr($otazka,0,(strlen($otazka)-1)); $nahrad=array( 'Š'=>'s', 'š'=>'s', 'Đ'=>'dj', 'đ'=>'dj', 'Ž'=>'z', 'ž'=>'z', 'Č'=>'c', 'č'=>'c', 'Ć'=>'c', 'ć'=>'c', 'a'=>'a', 'Á'=>'a', 'Â'=>'a', 'a'=>'a', 'Ä'=>'a', 'a'=>'a', 'a'=>'a', 'Ç'=>'c', 'e'=>'e', 'É'=>'e', 'e'=>'e', 'Ë'=>'e', 'i'=>'i', 'Í'=>'i', 'Î'=>'i', 'i'=>'i', 'n'=>'n', 'o'=>'o', 'Ó'=>'o', 'Ô'=>'o', 'o'=>'o', 'Ö'=>'o', 'o'=>'o', 'u'=>'u', 'Ú'=>'u', 'u'=>'u', 'Ü'=>'u', 'Ý'=>'y', '?'=>'b', 'ß'=>'ss', 'a'=>'a', 'á'=>'a', 'â'=>'a', 'a'=>'a', 'ä'=>'a', 'a'=>'a', 'a'=>'a', 'ç'=>'c', 'e'=>'e', 'é'=>'e', 'e'=>'e', 'ë'=>'e', 'i'=>'i', 'í'=>'i', 'î'=>'i', 'i'=>'i', '?'=>'o', 'n'=>'n', 'o'=>'o', 'ó'=>'o', 'ô'=>'o', 'o'=>'o', 'ö'=>'o', 'o'=>'o', 'u'=>'u', 'ú'=>'u', 'u'=>'u', 'ý'=>'y', 'ý'=>'y', '?'=>'b', 'y'=>'y', 'Ŕ'=>'r', 'ŕ'=>'r', 'Ť'=>'t', 'ť'=>'t','Ř'=>'r','ř'=>'r','ů'=>'u','Ů'=>'u','Ě'=>'e','ě'=>'e' ); $otazka=strtr($otazka,$nahrad); //otazky $otazky=array(); $otazky[]="komu patri youtube"; $otazky[]="komu patri facebook"; $otazky[]="ake je hlavne mesto cr"; $otazky[]="ake je hlavne mesto polska"; $otazky[]="ake je hlavne mesto slovenska"; //odpovede $odpovede=array(); $odpovede[]="google inc"; $odpovede[]="markovi zuckenbergovi"; $odpovede[]="praha"; $odpovede[]="varšava"; $odpovede[]="bratislava"; $najviac=0; $o=-1; $otazkaex=explode(" ",$otazka); $slov=count($otazkaex); $najdutych=0; for($i=0;$i<=count($otazky);$i++){ for($s=0;$s<$slov;$s++){ $slovo=$otazkaex[$s]; if(preg_match("/(.*)$slovo(.*)/siu",$otazky[$i])){ $najdutych+=1; } } //echo $najdutych."<br>"; if($najdutych>$najviac){ $najviac=$najdutych; $o=$i; } $najdutych=0; //echo $o."<br>"; } $pravdepodobnost=100*($najviac/(count(explode(" ",$otazky[$o])))); //echo $pravdepodobnost."%"; if($pravdepodobnost>90){ echo "otazka: $kladena_otazka <br>odpoved: $odpovede[$o]"; } } zisti("$_get[otazka]"); ?> <hr><div id="naseptavac"></div> teraz do súboru status.php napíšeš tento kód: <?php function zisti($otazka){ if(substr($otazka,-1,1)==" ")$otazka=substr($otazka,0,(strlen($otazka)-1)); $nahrad=array( 'Š'=>'s', 'š'=>'s', 'Đ'=>'dj', 'đ'=>'dj', 'Ž'=>'z', 'ž'=>'z', 'Č'=>'c', 'č'=>'c', 'Ć'=>'c', 'ć'=>'c', 'a'=>'a', 'Á'=>'a', 'Â'=>'a', 'a'=>'a', 'Ä'=>'a', 'a'=>'a', 'a'=>'a', 'Ç'=>'c', 'e'=>'e', 'É'=>'e', 'e'=>'e', 'Ë'=>'e', 'i'=>'i', 'Í'=>'i', 'Î'=>'i', 'i'=>'i', 'n'=>'n', 'o'=>'o', 'Ó'=>'o', 'Ô'=>'o', 'o'=>'o', 'Ö'=>'o', 'o'=>'o', 'u'=>'u', 'Ú'=>'u', 'u'=>'u', 'Ü'=>'u', 'Ý'=>'y', '?'=>'b', 'ß'=>'ss', 'a'=>'a', 'á'=>'a', 'â'=>'a', 'a'=>'a', 'ä'=>'a', 'a'=>'a', 'a'=>'a', 'ç'=>'c', 'e'=>'e', 'é'=>'e', 'e'=>'e', 'ë'=>'e', 'i'=>'i', 'í'=>'i', 'î'=>'i', 'i'=>'i', '?'=>'o', 'n'=>'n', 'o'=>'o', 'ó'=>'o', 'ô'=>'o', 'o'=>'o', 'ö'=>'o', 'o'=>'o', 'u'=>'u', 'ú'=>'u', 'u'=>'u', 'ý'=>'y', 'ý'=>'y', '?'=>'b', 'y'=>'y', 'Ŕ'=>'r', 'ŕ'=>'r', 'Ť'=>'t', 'ť'=>'t','Ř'=>'r','ř'=>'r','ů'=>'u','Ů'=>'u','Ě'=>'e','ě'=>'e' ); $otazka=strtr($otazka,$nahrad); //otazky $otazky=array(); $otazky[]="komu patri youtube"; $otazky[]="komu patri facebook"; $otazky[]="ake je hlavne mesto cr"; $otazky[]="ake je hlavne mesto polska"; $otazky[]="ake je hlavne mesto slovenska"; $najviac=0; $o=-1; $otazkaex=explode(" ",$otazka); $slov=count($otazkaex); $najdutych=0; for($i=0;$i<=count($otazky);$i++){ for($s=0;$s<$slov;$s++){ $slovo=$otazkaex[$s]; if(preg_match("/(.*)$slovo(.*)/siu",$otazky[$i])){ $najdutych+=1; } } //echo $najdutych."<br>"; $najviac=$najdutych; $najdutych=0; $pravdepodobnost=100*($najviac/(count(explode(" ",$otazky[$i])))); //echo $pravdepodobnost." -- otazka $otazky[$i]<br>"; if($pravdepodobnost>79){ echo "<span onclick=\"document.getelementbyid('text').value='$otazky[$i]'\" style=\"cursor:pointer\">$otazky[$i]</span> <br>"; } } } zisti("$_get[text]"); ?> v súbore status.php musia byť dané otázky už napísané tak isto ako tam kde zadávaš ten text, pravdepodobne to máš na indexe.php, odpovede nemusia. dúfam, že toto je niečo také, čo si chcel ******************************[ |
||
Honza.P Profil |
#17 · Zasláno: 25. 2. 2012, 16:36:00
Nejak se to rozhodilo, ovsem mam pocit ze to nefunguje:-(
|
||
SeparateSK Profil |
Do súboru index.php dáš ten prvý kód ,čo som napísal (ten 83 riadkový)
Do súboru status.php dáš ten druhý kód ,čo som napísal, samozrejme v tomto súbore musia byť tie isté otázky ako v súbore index.php (ten 46 riadkový) |
||
Honza.P Profil |
#19 · Zasláno: 25. 2. 2012, 16:52:08
SeparateSK:
Aha, tak takhle to funguje:-) Ovsem, myslel jsem neco jineho, naseptavac jako ma treba google. Pri zadavani nejakeho vyrazu ti to nasepta primo v tom vyhledavacim poli, ale to nevadi, tohle je tez dobre:-) Jestli muzu tak bych mel jeste jednu malickost a to takovou ze kdyz by to vyhodilo prazdny vysledek tak s textem ze zadana otazka neexistuje nebo tak neco, zatim to funguje tak, ze to nevyhodi nic, jen prazdny vysledek. |
||
SeparateSK Profil |
#20 · Zasláno: 25. 2. 2012, 16:55:24
Tam - zrejme v indexe.php kde máš teraz ten 83 riadkový kód ,tak ako sú riadky riadok 77 - 79; - nahradíš
if($pravdepodobnost>90){ echo "Otazka: $kladena_otazka <br>Odpoved: $odpovede[$o]"; } if($pravdepodobnost>90){ echo "Otazka: $kladena_otazka <br>Odpoved: $odpovede[$o]"; } else echo "Zadaná otázka neexistuje"; |
||
Honza.P Profil |
#21 · Zasláno: 25. 2. 2012, 17:05:09
SeparateSK:
Tak teď už je to úplně všechno, děkuji ti za tvůj čas strávený semnou. Mockrát děkuji Honza |
||
Honza.P Profil |
#22 · Zasláno: 26. 2. 2012, 01:58:50
Omlouvam se, ale vyskytl se problem. Při otevření v mobilnim telefonu z místního uložení na paměťové kartě se soubor otevře, ale ten kod php tam v tom dělá bordel, je možnost nějaké konverze do html? Soubor musí fungovat v offline režimu bez připojení k internetu.
|
||
panther Profil |
#23 · Zasláno: 26. 2. 2012, 08:09:01
Honza.P:
tos měl napsat rovnou, že to potřebuješ mít rozběhané offline. Něco musí test vyhodnotit, na to samotné HTML nestačí - pokud podporuje tvůj telefon JavaScript, šlo by to přepsat a vyhodnocovat JavaScriptem (na stejném principu jako toto PHP řešení). |
||
SeparateSK Profil |
Prerobený php script do JS - ulozis ako .html:
<style>*{font-family:arial}</style> <script> //OTAZKY otazky=new Array(); otazky[0]="Komu patri youtube"; otazky[1]="Komu patri facebook"; otazky[2]="Ake je hlavne mesto CR"; otazky[3]="Ake je hlavne mesto Polska"; otazky[4]="Ake je hlavne mesto Slovenska"; function zisti(otazka){ kladena_otazka=otazka; otazka=otazka.toUpperCase(); if(otazka.substr(-1,1)==" ")otazka=otazka.substr(0,(otazka.length-1)); nahrad=new Array("Á","Č","Ď","É","Í","Ĺ","Ľ","Ň","Ó","ô","Ŕ","Ř","Š","Ť","Ú","Ý","Ž"); scim=new Array("A","C","D","E","I","L","L","N","O","O","R","R","S","T","U","Y","Z"); var nt=""; var pismeno; for(j=0;j<otazka.length;j++){ for(i=0;i<nahrad.length;i++){ pismeno=otazka.substr(j,1); if(pismeno==nahrad[i]){pismeno=scim[i]; break;} } nt+=pismeno; } otazka=nt.toLowerCase(); var patt=""; var aktualna=""; var malaslov=0; //ODPOvEDE odpovede=new Array(); odpovede[0]="Google Inc"; odpovede[1]="Markovi Zuckenbergovi"; odpovede[2]="Praha"; odpovede[3]="Varšava"; odpovede[4]="Bratislava"; var najdutych=0; var najviac=0; o=-1; otazkaEX=otazka.toLowerCase().split(" "); slov=otazkaEX.length; najdutych=0; for(i=0;i<otazky.length;i++){ for(s=0;s<slov;s++){ slovo=otazkaEX[s].toLowerCase(); aktualna=otazky[i]+""; aktualna=aktualna.toLowerCase(); if(aktualna.match(slovo)){ najdutych+=1; } } //echo najdutych."<br>"; if(najdutych>najviac){ najviac=najdutych; a=otazky[i]; malaslov=a.split(" ").length; o=i; } najdutych=0; //echo o."<br>"; } pravdepodobnost=100*(najviac/malaslov); //echo pravdepodobnost."%"; if(pravdepodobnost>90){ document.getElementById('odpovede').innerHTML="<font color=\"008000\" face=\"arial\">Otazka:</font> "+kladena_otazka+" <br> <font color=\"ff0000\" face=\"arial\">Odpoved:</font> "+odpovede[o]; } } function naseptavac(otazka){ document.getElementById('naseptavac').innerHTML=""; otazka=otazka.toUpperCase(); if(otazka.substr(-1,1)==" ")otazka=otazka.substr(0,(otazka.length-1)); nahrad=new Array("Á","Č","Ď","É","Í","Ĺ","Ľ","Ň","Ó","ô","Ŕ","Ř","Š","Ť","Ú","Ý","Ž"); scim=new Array("A","C","D","E","I","L","L","N","O","O","R","R","S","T","U","Y","Z"); var nt=""; var pismeno; for(j=0;j<otazka.length;j++){ for(i=0;i<nahrad.length;i++){ pismeno=otazka.substr(j,1); if(pismeno==nahrad[i]){pismeno=scim[i]; break;} } nt+=pismeno; } otazka=nt.toLowerCase(); najviac=0; o=-1; otazkaEX=otazka.split(" "); slov=otazkaEX.length; najdutych=0; for(i=0;i<=otazky.length;i++){ for(s=0;s<slov;s++){ slovo=otazkaEX[s].toLowerCase(); aktualna=otazky[i]+""; aktualna=aktualna.toLowerCase(); if(aktualna.match(slovo)){ najdutych+=1; } } //echo najdutych."<br>"; najviac=najdutych; najdutych=0; pravdepodobnost=100*(najviac/(aktualna.split(" ").length)); //echo pravdepodobnost." -- otazka otazky[i]<br>"; if(pravdepodobnost>79&&otazky[i]!==undefined){ document.getElementById('naseptavac').innerHTML+="<span onclick=\"document.getElementById('text').value='"+otazky[i]+"'\" style=\"cursor:pointer\">"+otazky[i]+"</span> <br>"; } } } </script> <input type="text" name="otazka" style="text-align:right" onkeyup="naseptavac(document.getElementById('text').value+' ')" autocomplete="off" id="text" size="75">?<input type="submit" value="Zisti odpoved" onclick="zisti(document.getElementById('text').value+' ')"> <div id="naseptavac" style="border-bottom:1px solid grey;border-left:1px solid grey;border-right:1px solid grey;width:485px"></div> <hr><div id="odpovede"></div> V JS som vytvoril vlastný replace ,lebo ten originálny nenahradil všetko (iba jedno písmeno s dĺžňom / mäkčeňom- napr vo vete Aké je hlavné sú dve é a výsledok bol AkE je hlavnÉ) Ale kto má lepšie skúsenosti v JS to urobí aj nejakym regulárom v replace. Pri otázkach je nutné medzi tie [] dať číslo!, tiež aj odpovediach- otázky stačí písať iba raz. Dúfam ,že toto postačí. Ale keď to chceš v Jave(ako aplikáciu pre mobilné telefóny v .jar súbore), tak to by ti mohol poradiť niekto iný, lebo ja v Jave moc programovať neviem. Edit: odstránil som alert v funkcií naseptavac |
||
Honza.P Profil |
#25 · Zasláno: 26. 2. 2012, 12:18:13 · Upravil/a: Honza.P
SeparateSK:
Tak takhle je to super ale nevim jak to mam upravit ve stylech, protoze v js neumím. v php jsem to mel zatim takto <form class="form-wrapper cf"> <input type="text" name="otazka" autocomplete="off" placeholder="Sem napiš otázku..." required> <button type="submit">Hledat</button> </form> a <form class="form-wrapper cf"> ZDE obsahovalo PHP kód </form> Jenze ted nevim jak to mam udelat aby to tak fungovalo i sti mjafascriptem takto vypadá css <style> body { background: #555 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpi/P//PwM6YGLAAuCCmpqacC2MRGsHCDAA+fIHfeQbO8kAAAAASUVORK5CYII=); font: 16px Arial, Verdana, sans-serif; color: #eee; text-align: left; } a { color: #f5f5f5; } /*-------------------------------------*/ .cf:before, .cf:after{ content:""; display:table; } .cf:after{ clear:both; } .cf{ zoom:1; } /*-------------------------------------*/ .form-wrapper { width: 450px; padding: 15px; margin: 20px auto 20px auto; background: #444; background: rgba(0,0,0,.2); -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; -moz-box-shadow: 0 1px 1px rgba(0,0,0,.4) inset, 0 1px 0 rgba(255,255,255,.2); -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.4) inset, 0 1px 0 rgba(255,255,255,.2); box-shadow: 0 1px 1px rgba(0,0,0,.4) inset, 0 1px 0 rgba(255,255,255,.2); } .form-wrapper input { width: 330px; height: 20px; padding: 10px 5px; float: left; font: bold 15px Arial, Verdana, sans-serif; border: 0; background: #eee; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px; } .form-wrapper input:focus { outline: 0; background: #fff; -moz-box-shadow: 0 0 2px rgba(0,0,0,.8) inset; -webkit-box-shadow: 0 0 2px rgba(0,0,0,.8) inset; box-shadow: 0 0 2px rgba(0,0,0,.8) inset; } .form-wrapper input::-webkit-input-placeholder { color: ##999; font-weight: normal; font-style: italic; } .form-wrapper input:-moz-placeholder { color: #999; font-weight: normal; font-style: italic; } .form-wrapper input:-ms-input-placeholder { color: #999; font-weight: normal; font-style: italic; } .form-wrapper button { overflow: visible; position: relative; float: right; border: 0; padding: 0; cursor: pointer; height: 40px; width: 110px; font: bold 15px/40px Arial, Verdana, sans-serif; color: #fff; text-transform: uppercase; background: #d83c3c; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; border-radius: 0 3px 3px 0; text-shadow: 0 -1px 0 rgba(0, 0 ,0, .3); } .form-wrapper button:hover{ background: #e54040; } .form-wrapper button:active, .form-wrapper button:focus{ background: #c42f2f; } .form-wrapper button:before { content: ''; position: absolute; border-width: 8px 8px 8px 0; border-style: solid solid solid none; border-color: transparent #d83c3c transparent; top: 12px; left: -6px; } .form-wrapper button:hover:before{ border-right-color: #e54040; } .form-wrapper button:focus:before{ border-right-color: #c42f2f; } .form-wrapper button::-moz-focus-inner { border: 0; padding: 0; } .space10 { height: 10px; } #copyright { width: 250px; padding: 0px; margin: 50px auto 20px auto; text-align: center; font-size: 13px; } </style> |
||
SeparateSK Profil |
#26 · Zasláno: 26. 2. 2012, 13:00:29
No to čo sa v tom scripte dá vyštýlovať sú riadky 111-113.
Javascript automaticky dopĺňa riadky 112,113 o text, do našeptávaču dáva zopár spanov, na ktorých je cursor pointer. Tieto spany upravíš na riadku 106 ( style=\"cursor:pointer\"). tieto \" znamenajú ,že JS vypíše : " (bez \). Ak chceš upraviť tie odpovede, tak to je na riadku 66. <font color=\"008000\" face=\"arial\">Otazka:</font> "+kladena_otazka+" <br> <font color=\"ff0000\" face=\"arial\">Odpoved:</font> "+odpovede[o]; A vypisované odpovede sú v dive s ID odpovede. |
||
Honza.P Profil |
#27 · Zasláno: 26. 2. 2012, 13:01:40 · Upravil/a: Honza.P
Aha, takze to uz nemuze vypadat jako na screenech s pouzit php?
oprava: s pouzitim toho php http://i39.tinypic.com/21b438y.png http://i42.tinypic.com/67o8ht.png S tim javascriptem uz to takhle vystylovat nelze? |
||
SeparateSK Profil |
Ide to vyštýlovať :)
Všetko štýlovanie môžeš upraviť v riadkoch 66,111,112,113 a 114. To kam zadávaš text vyštýlovať ide. Vypísané odpovede vyštýlovať ide tiež. Aj našeptávač ide. Povedzme tomu ,že chceš vyštýlovať odpovede,tak zmeníš riadok 66 na: document.getElementById('odpovede').innerHTML='<font color="ff8888" face="arial"><b>Tvoja otázka:</b></font> '+kladena_otazka+' <br> <font color="88ff88" face="arial"><b>Odpoved:</b></font> <font color="000000">'+odpovede[o]+'</font>';} Povedzme ,že chceš zaoblené okraje na dive, s odpoveďami, tak zmeníš riadok 114 na: <hr><div id="odpovede" style="border-radius:4px;width:485px;border:1px solid black"> </div> |
||
Honza.P Profil |
#29 · Zasláno: 26. 2. 2012, 13:17:00 · Upravil/a: Honza.P
Ja bych prave potřeboval, aby to vypadal tak, jako je to na těch screenech. Takhle to totiž vypadá s tím php kodem, ale nevím jak to udělat s tim js. O nic jineho mi nejde. Poku máš icq mohu ti poslat stranku jak to vypada. Zde si nechci dělat reklamu. 437870111
EDIT: Tak uz jsem to vyresil, jenze kdyz kliknu na tlacitko hledat, odpověd to ukaze, ale hned zmizi, proste jen problikne. http://i40.tinypic.com/4tk67t.png http://i42.tinypic.com/343rgp5.png http://i43.tinypic.com/241sahv.png |
||
SeparateSK Profil |
Môj výtvor podobný tvojmu:
<style> body { background: #555 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpi/P//PwM6YGLAAuCCmpqacC2MRGsHCDAA+fIHfeQbO8kAAAAASUVORK5CYII=); font: 16px Arial, Verdana, sans-serif; color: #eee; text-align: left; } .obsah{margin:0 auto;width:480px;text-align:left} .formular{padding:5px;background:rgba(0,0,0,0.3);border-radius:6px;padding:5px} .text_otazka{height:30px;font-size:18px;width:390px} .button{height:30px;background:#ff3333;color:#fff;font-size:18px;border:1px solid #f00;position:relative;left:-8px;border-radius:3px} .odpovede{border:1px solid #333;padding:4px;background:rgba(0,0,0,0.3);border-radius:6px;} .naseptavac{background:rgba(0,0,0,0.3);text-align:left;width:390px;margin:0 auto;padding:5px;position:relative;left:-40px} </style> <script> //SeparateSK //OTAZKY otazky=new Array(); otazky[0]="Komu patri youtube"; otazky[1]="Komu patri facebook"; otazky[2]="Ake je hlavne mesto CR"; otazky[3]="Ake je hlavne mesto Polska"; otazky[4]="Ake je hlavne mesto Slovenska"; //ODPOVEDE odpovede=new Array(); odpovede[0]="Google Inc"; odpovede[1]="Markovi Zuckenbergovi"; odpovede[2]="Praha"; odpovede[3]="Varšava"; odpovede[4]="Bratislava"; function zisti(otazka){ kladena_otazka=otazka; otazka=otazka.toUpperCase(); if(otazka.substr(-1,1)==" ")otazka=otazka.substr(0,(otazka.length-1)); nahrad=new Array("Á","Č","Ď","É","Í","Ĺ","Ľ","Ň","Ó","ô","Ŕ","Ř","Š","Ť","Ú","Ý","Ž"); scim=new Array("A","C","D","E","I","L","L","N","O","O","R","R","S","T","U","Y","Z"); var nt=""; var pismeno; for(j=0;j<otazka.length;j++){ for(i=0;i<nahrad.length;i++){ pismeno=otazka.substr(j,1); if(pismeno==nahrad[i]){pismeno=scim[i]; break;} } nt+=pismeno; } otazka=nt.toLowerCase(); var patt=""; var aktualna=""; var malaslov=0; var najdutych=0; var najviac=0; o=-1; otazkaEX=otazka.toLowerCase().split(" "); slov=otazkaEX.length; najdutych=0; for(i=0;i<otazky.length;i++){ for(s=0;s<slov;s++){ slovo=otazkaEX[s].toLowerCase(); aktualna=otazky[i]+""; aktualna=aktualna.toLowerCase(); if(aktualna.match(slovo)){ najdutych+=1; } } //echo najdutych."<br>"; if(najdutych>najviac){ najviac=najdutych; a=otazky[i]; malaslov=a.split(" ").length; o=i; } najdutych=0; //echo o."<br>"; } pravdepodobnost=100*(najviac/malaslov); //echo pravdepodobnost."%"; if(pravdepodobnost>90){ document.getElementById('odpovede').innerHTML='<font color="ff8888" face="arial"><b>Tvoja otázka:</b></font> '+kladena_otazka+' <br> <font color="88ff88" face="arial"><b>Odpoved:</b></font> '+odpovede[o];} } function naseptavac(otazka){ document.getElementById('naseptavac').innerHTML=""; otazka=otazka.toUpperCase(); if(otazka.substr(-1,1)==" ")otazka=otazka.substr(0,(otazka.length-1)); nahrad=new Array("Á","Č","Ď","É","Í","Ĺ","Ľ","Ň","Ó","ô","Ŕ","Ř","Š","Ť","Ú","Ý","Ž"); scim=new Array("A","C","D","E","I","L","L","N","O","O","R","R","S","T","U","Y","Z"); var nt=""; var pismeno; for(j=0;j<otazka.length;j++){ for(i=0;i<nahrad.length;i++){ pismeno=otazka.substr(j,1); if(pismeno==nahrad[i]){pismeno=scim[i]; break;} } nt+=pismeno; } otazka=nt.toLowerCase(); najviac=0; o=-1; otazkaEX=otazka.split(" "); slov=otazkaEX.length; najdutych=0; for(i=0;i<=otazky.length;i++){ for(s=0;s<slov;s++){ slovo=otazkaEX[s].toLowerCase(); aktualna=otazky[i]+""; aktualna=aktualna.toLowerCase(); if(aktualna.match(slovo)){ najdutych+=1; } } //echo najdutych."<br>"; najviac=najdutych; najdutych=0; pravdepodobnost=100*(najviac/(aktualna.split(" ").length)); //echo pravdepodobnost." -- otazka otazky[i]<br>"; if(pravdepodobnost>79&&otazky[i]!==undefined){ document.getElementById('naseptavac').innerHTML+="<span onclick=\"document.getElementById('text').value='"+otazky[i]+"'\" style=\"cursor:pointer\">"+otazky[i]+"</span> <br>"; } } } </script> <div class="obsah"> <div class="formular"> <input type="text" name="otazka" class="text_otazka" style="text-align:left" placeholder="Sem napiš otázku..." onkeyup="naseptavac(document.getElementById('text').value+' ')" autocomplete="off" id="text"> <input type="submit" class="button" value="Hladať" onclick="zisti(document.getElementById('text').value+' ')"> </div> <div id="naseptavac" class="naseptavac"></div><br> <div id="odpovede" class="odpovede"> </div> </div> |
||
Téma pokračuje na další straně.
|
0