Avatar billede boselbach Nybegynder
14. september 2009 - 23:41 Der er 8 kommentarer

Søgning på flere sider fra en side

Hej

Jeg har fire sider, hvor jeg har forskelligt indhold på, jeg vil nu oprette en femte side, hvor der skal være muligt at søge efter f.eks. "adidas" jeg vil så gerne have et php script som søger efter "adidas" på de fire sider og retunere alle de links den finder.

Er der en af jer der kan sparke mig i den rigtige retning, evt. kan vise et mindre eksempel, så jeg kan komme igang med dette projekt?

Med venlig hilsen
Bo
Avatar billede repox Seniormester
15. september 2009 - 08:22 #1
Hvordan er de fire sider oprettet? Er det statiske sider? Er det database-genereret indhold?
Avatar billede boselbach Nybegynder
15. september 2009 - 11:55 #2
Det er database genereret indhold
Avatar billede repox Seniormester
15. september 2009 - 12:38 #3
Et eksempel på din tabelstruktur samt indhold?
Avatar billede boselbach Nybegynder
15. september 2009 - 21:38 #4
Det skal laves uden at hente data fra databasen. Men ved at lave den samme søgning på de fire sider, som en bruger ville gøre det, så det er den sides egen php kode som er den eneste der har adgang til databasen for den side, og derefter vise resultaterne på den femte.
Avatar billede repox Seniormester
16. september 2009 - 11:39 #5
Lyder unødvendigt kompliceret...
Anyways, du kunne overveje at parse resultater fra google eller også kunne du cURL'e dine egne sider for så at finde relevente søgetermer (således du ikke indekserer din PHP kode i dine søgeresultater).
Avatar billede gbjensen65 Nybegynder
16. september 2009 - 21:56 #6
Det jeg synes du skal gøre, at at udnytte at MySql kan lave en fuld-tekst søgning i din database af de felter som du har linket sammen.

f.eks. $sql="SELECT *, MATCH (emne,text,username) AGAINST ('".$seeqit."' IN BOOLEAN MODE) AS score FROM news WHERE MATCH (emne,text,username) AGAINST ('".$seeqit."' IN BOOLEAN MODE) LIMIT ".$lstart.",".$antal;";

Her søger jeg tabellen news igennem efter indholdet i $seeqit fra hit nr. $lstart og finder maximalt $antal

Du bør læse om emnet her: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

Ikke alle felt typer kan søges, måske skal du lave en kopi i en tabel hvor du kun bruger CHAR, VARCHAR, eller TEXT felter.

Selv så laver jeg et index af mine tabeller en gang i døgnet med et cron job, så det der findes ved en søgning er max 24 timer gammelt.

Du kan godt få en kopi af mit script, det fylder bare lidt for meget til at jeg vil indsætte det her.

Mvh. Lars
Avatar billede boselbach Nybegynder
24. september 2009 - 03:34 #7
Jeg har fundet ud af at få de nødvendige data jeg skal bruge fra de andre sider, men nu vil jeg gerne have alle de links som er i body, det kan jeg også, men jeg vil også gerne have fat i det img tag som ligger inde i billed tagget.

Linket ser sådan f.eks. sådan ud.
<a href="http://testside.dk/00012" title="Test" target="_blank">
<img title="Test billed"
id="00012" class="t" src="http://testside.dk/12345.jpg" />
</a>

Den her kode virker til at få linket, jeg får prøvet alt muligt får at få fat i billedet, men uden held.

$result = $GetURL->_get_result();
$file = $result['FILE'];
$doc = new DomDocument();
@$doc->loadHTML($file);

$xpath = new DOMXpath($doc);
$elements = $xpath->evaluate("/html/body//a");

if (!is_null($elements))
{
    foreach ($elements as $element)
    {
    echo $element->getAttribute('href')."<br/>";
    }
}

Er der en af jer der ved hvordan det kan lade sig gøre?
Avatar billede boselbach Nybegynder
24. september 2009 - 03:37 #8
Jeg mener <img> inde i <a>?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester