| Autor | Správa |
Matho
 Užívateľ
 Založený: 25.07.2007 Príspevky: 217 Bydlisko: Kálnica city
 | Zaslal: So 02.02.08 19:45 |   |
Robim vyhladavanie na stranku. Do $text sa mi nacita obsah stlpca z sql tabulky, kde sa mi vyskytuje hladane slovo . Hladane slova mam ulozene v poli $slova .
Potreboval by som, aby mi hladane slova vyfarbilo na cerveno a zobrazilo mi len tie vety v ktorych sa hladane slovo vyskytuje a pridalo pred/za vetu tri bodky ak sa za nou/pred nou este daka veta vyskytuje.
toto mozno pomoze..
| kód: |
if (!empty($text)){
$zaciatok="<font color=\"#FF0000\">";
$koniec="</font>";
foreach ( $slova as $slova2 ){
$vzor[$i]=$slova2;
$nahrada[$i]=$zaciatok.$slova2.$koniec;
$text_zobraz =str_replace($vzor,$nahrada,$text);
}
echo "\n Text:<br>$text_zobraz<br><br>";
}
} |
ak by sa nasla daka dobra dusa bol by som rad |
| |
    |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: So 02.02.08 21:45 |   |
Prisaham bohu ze aj ja presne toto riesim a mam to hotove.
Je toho ale hodne a nechcelo by sa mi to prisposobovat tvojmu...ak ces hodim sem cely moj zdrojac a uprav si ho...to uz bude jednoduche  |
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
Matho
 Užívateľ
 Založený: 25.07.2007 Príspevky: 217 Bydlisko: Kálnica city
 | Zaslal: So 02.02.08 21:51 |   |
ok daj zdrojak, mne daco z toho funguje len hlavne o to skracovanie sami jedna.. |
| |
    |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: So 02.02.08 22:22 |   |
| kód: | <?php
$slova=explode(" ", $slovo);//rozdeli hladany vyraz po slovach cez medzery
$spolu=count($slova); //spocita slova
$prikaz="";
for ($i=0; $i<$spolu; $i++){
//vytvori prikaz pre vyhladavanie pre presny pocet slov
$prikaz.="text like \"%".$slova[$i]."%\" || nadpis like \"%".$slova[$i]."%\"";
if (($i+1)!=$spolu)$prikaz.=" || ";
}
$vysledok=mysql_query("select text, nadpis from clanky where ".$prikaz." "); //vybet z db
if (mysql_num_rows($vysledok)=="0")echo "Hladanému výrazu nevyhovuje žiaden článok!"; //ziaden clanok nevyhovuje
else{
while ($zaznam=MySQL_Fetch_Array($vysledok, MYSQL_NUM)){//pre jednotlive vybery urobi vypis
$zaznam[0]=str_replace(" ", " ", strip_tags(syntax($zaznam[0]))); //nahradi viac medzier jednou
$pozicia="99999999999999";//definovanie maximalnej pozicie(cim vecsie cislo tym lepsie)
for ($i=0; $i<$spolu; $i++){//zistenie ktore hladane slovo je v texte prve
$strp=strpos($zaznam[0], $slova[$i]);
if ($strp<$pozicia && $strp!==false)$pozicia=$strp;
}
if(substr($zaznam[0], $pozicia, 300)!==false)$zaznam[0]=substr($zaznam[0], $pozicia, 300);//u mna hlada aj v nadpise a ten zobrazuje cely, tak pokial sa nachadza v hladane slovo aj v texte zobrazi ho od toho slova a to presne 300 znakov(namiesto 300 znakov si mozes dat aj ine)
else $zaznam[0]=substr($zaznam[0], 0, 300);//pokial slovo nie je v texte zobrazi prvych 300 znakov(namiesto 300 znakov si mozes dat aj ine)
for ($i=0; $i<$spolu; $i++){
//samotne nahradenie slova zvyraznenym slovom...pri verzii php 5 sa da pouzit aj str_ireplace, inak str_replace(lepise bude CSS ako <font>)
$phpversion = substr(phpversion(), 0, 3);
if($phpversion >= 5.0){
$zaznam[1]=str_ireplace(htmlspecialchars($slova[$i]), "<span style=\"color:red;\">".strtoupper(htmlspecialchars($slova[$i]))."</span>", $zaznam[1]);
$zaznam[0]=str_ireplace($slova[$i], "<span style=\"color:red;\>".strtoupper($slova[$i])."</span>", $zaznam[0]);
}
else{
$zaznam[1]=str_replace(htmlspecialchars($slova[$i]), "<span style=\"color:red;\>".strtoupper(htmlspecialchars($slova[$i]))."</span>", $zaznam[1]);
$zaznam[0]=str_replace($slova[$i], "<span style=\"color:red;\>".strtoupper($slova[$i])."</span>", $zaznam[0]);
}
}
echo "<a href= \"index.php?clanok=1\" title=\"Zobraziť celý článok\" class=\"head\">".$zaznam[2]."</a><br />";//zobrazi nadpis
echo "...".$zaznam[1]."...<br /><br />";//zobrazi text
}
?> |
okomentoval som kazdy krok, snad pomoze
keby cosi nebolo jasne sa este ozvi  |
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
Punker661
 Užívateľ
 Založený: 06.12.2006 Príspevky: 180
 |
cau skusil som ten tvoj script ale stale mi pise : Fatal error: Call to undefined function syntax() in C:\wamp\www\new_crazy\files\hladaj.php on line 18
.. tento riadok akosi nechce strajkuje : $zaznam[0]=str_replace(" ", " ", strip_tags(syntax($zaznam[0]))); //nahradi viac medzier jednou |
| |
    |
 |
kmsa
 Užívateľ
 Založený: 26.07.2006 Príspevky: 1383 Bydlisko: Slovakia-Košice
 | Zaslal: Ne 03.02.08 11:20 |   |
a dobre si si odriadkoval ze vies presne ktory? |
_________________ CPU: Intel E7200 momentalne default + freezer 7 pro | MB: Gigabyte GA-P35-DS3 rev. 2.0 F14 | RAM: A-DATA 4x1GB EE Vitesta | VGA: ATI Radeon HD4850 Sapphire Dual Slot | Monitor: BenQ E2200HD+17CTX | HDD: WD 3200AAKS + Maxtor 6Y080M0 80GB SATAII + 120GB ATA Barracuda | PSU: Corsair VX450W | Windows 7 Ultimate Sk | REPRO: Logitech X-210
+
IPhone 3GS JB 3.1.3 (new BR)
múdry sa postara o seba ale ešte múdrejši sa postara aj o druhých | |
    |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: Ne 03.02.08 11:22 |   |
| Punker661 napísal: | cau skusil som ten tvoj script ale stale mi pise : Fatal error: Call to undefined function syntax() in C:\wamp\www\new_crazy\files\hladaj.php on line 18
.. tento riadok akosi nechce strajkuje : $zaznam[0]=str_replace(" ", " ", strip_tags(syntax($zaznam[0]))); //nahradi viac medzier jednou |
jaj samozrejme...funkcia syntax() je mnou definovana a prevadza bbcode tagy na klasicke html tagy...vyhod ju.
som pisal ze som sem hodil moj neupraveny, len treba prisposobit  |
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
Punker661
 Užívateľ
 Založený: 06.12.2006 Príspevky: 180
 | Zaslal: Ne 03.02.08 11:35 |   |
aj som si myslel ze to je neaka tvoja funkcia len sa mi ju akosi nedari dat prec odtial  |
| |
    |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: Ne 03.02.08 11:38 |   |
| kód: | | $zaznam[0]=str_replace(" ", " ", strip_tags($zaznam[0])); |
|
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
JohnyNM
 Užívateľ
 Založený: 03.02.2008 Príspevky: 1
 | Zaslal: Ne 03.02.08 12:07 |   |
mne to ukazuje zase chybu na riadku 21 : $strp=strpos($zaznam[0], $slova[$j]);
uz to skusam asi hodinu a neviem nato prist .
toto mi vypisuje : Warning: strpos() [function.strpos]: Empty delimiter. |
| |
  |
 |
qacer
 Užívateľ
 Založený: 29.12.2005 Príspevky: 540 Bydlisko: 127.0.0.1 (Pov. Bys.)
 | Zaslal: Ne 03.02.08 12:13 |   |
mas hore definovanu premennu $slovo? je to vlastne retazec ktory hladame, ktory rozdelime na slova...moze to byt bud $slovo=$_GET['search'];, alebo $slovo=$_POST['search'];...plus este kontrola ci v nich nieco je | kód: | if(trim($_POST['search'])=="")echo "Nie je co hladat!";
else{
//samotny skript
} |
som to tam nedaval lebo to uz si dosadte sami ako vam vyhovuje...tu su len nejake priklady |
_________________ "Kde končí hiphop, začína IQ." | |
     |
 |
Matho
 Užívateľ
 Založený: 25.07.2007 Príspevky: 217 Bydlisko: Kálnica city
 | Zaslal: Ut 05.02.08 16:47 |   |
diki idem mi to , len asi si to este trochu pomenim (ak budem vediet ako).. je to totiz nie prilis najlepsie ked hladane slovo zobrazi ako prve, ale diki velmi si mi pomohol |
| |
    |
 |
Tominator
 Zablokovaný užívateľ
 Založený: 21.02.2007 Príspevky: 4009
 | Zaslal: St 06.02.08 20:49 |   |
však LIKE nie?
SELECT * FROM table WHERE Meno LIKE='pes' |
| |
  |
 |
|