Avatar billede Kengun Praktikant
17. december 2001 - 20:27 Der er 16 kommentarer og
2 løsninger

300 Points for litt PHP kode.

Er der nogen PHP-hajer der vil lave en lille php-kode der kan søge i et .txt dokument for mig?

Jeg har et tekst dokument med noen \"kontakter\". Kolonnene er: 1) Fornavn Etternavn 2)Epostadresse 3)URL til webside og 4)ICQnr. @ i epostadressen er byttet ut med et andet tegn, f.eks. =. Dette forhindrer at søkemotorer og andre programmer stjeler epostadressene.

Deretter vil jeg have en side der man skriver inn navnet på personen man vil have opplysningene til. Her må man kunne bruke * slik at man ikke trenger å skrive hele navnet. Men man må skrive minst 3-4 tegn for at kunne søge. Hvis søget lykkes så kommer epostadresse frem MED @ slik at man kan klikke på epostadressen slik at epostprogrammet åpnes. Hvis personen har webside (URL) og/eller ICQ så kommer også dette frem. Fint om også ICQ status kommer frem.

Brukerne skal også kunne få en liste over alle personene som står oppført i listen men UTEN epostadressene.

Alle kontakter legger jeg inn selv og skal i fremtiden legge inn nye kontakter MANUELT selv. Trenger altså ingen tilføy php-kode.

Vennligst si ifra hvis noget er uklart eller hvis det er for lite points. Jeg giver desverre KUN points eller gjenytelse (http://www.lyngdal.f2s.com/no-oppdrag.htm)
Avatar billede skwat Praktikant
17. december 2001 - 20:39 #1
Er dette det eksperten er til for?
Avatar billede Kengun Praktikant
17. december 2001 - 20:43 #2
Ja, er det ik? Jeg har lavet maaaange bannere, logos, etc. for brugere av Eksperten. Og jeg håber at Eksperten fremdeles er et sted der man kan få hjelp. Denne gangen er det jeg som søger hjelp.
Avatar billede oetting Nybegynder
18. december 2001 - 13:39 #3
Jeg vil gerne hjælpe, kan du ikke maile et lille eksempel på txt dokumentet til mig?
oetting@worldonline.dk

Har set på dine logoer, meget flot. Vil du ikke kigge på mit spørgsmål her: http://www.eksperten.dk/spm/147678

/oettinger

Avatar billede Kengun Praktikant
18. december 2001 - 14:31 #4
Ja jeg vil gjerne se på ditt spørgsmål (147678). Og det var fint at du også vil se på mitt :-) Foreløpig har jeg kun alle mine kontakter i en Excelfil. Disse kan jeg eksportere til et txt dokument akkurat slik du ønsker, men det mest vanlige er vel kolon, semikolon eller tabulator separert. F.eks. slik:
Kenneth Gundersen, navn2000=hotmail.com, www.lyngdal.f2s.com, 21891819
Ola Normann, ola=normann.no, www.ola-normann.no, 12345678
osv, osv......

Legg merke til at @ i epostadressen er byttet ut med et = (har forklart dette i spørgsmålet mitt over)
Avatar billede barefoot Nybegynder
18. december 2001 - 15:27 #5
Her er et eksempel jeg lige har skrevet som i selv kan arbejde lidt videre med hvis i ønsker:
<?php

$search = \'hej\'; /*$search indeholder det brugeren søger efter*/
$type = \'email\';/*indeholder den type som brugeren søger efter*/
$fil = file(\'filnavn.txt\');/*henter alle linier ind i et array*/

$lines = find($search, $type);
if($lines){
    for($i=0; $i<sizeof($linie); $i++){/*er det flere resultater er den nødvendigt med løkken*/
        $linie = $lines[$i];/*henter oplysningerne én af gangen*/
        echo \'Oplysningerne er navn: \"\'.$linie[1].\'\" email \"\'.str_replace(\'=\', \'@\', $linie[2]).\' Hjemmeside adresse: \"\'.$linie[3].\'\" ICQ: \'.$linie[4].\'<br>\';/*udskriver oplysningerne*/
    }
}
else{
    echo \'Der kunne ikke findes nogle oplysninger\';
}


function find($search)
{
    global $fil;
    for($i=0; $i<sizeof($fil); $i++){

        if(stristr($fil[$i], $search)){
            $linie = explode(\"\\t\", $fil[$i]);/*splitter kolonnerne op efter et tabulatortegn*/

            $return[] = $linie;/*laver et array med resultaterne*/
        }
    }
    return $return;
}
?>
Det indeholder principperne i hvordan det KAN gøre men der er mange andre måder...
Det er ment som en hjælp så jeg vil ikke gøre mere ud af det eller tilpasse det til dig, det kan du selv eller oetting gøre hvis han ikke har sin egen metode...
Avatar billede oetting Nybegynder
18. december 2001 - 18:40 #6
Jeg har brugt barefoots udemærkede søger og har lavet følgende forslag:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">
<HTML>
<HEAD>
    <TITLE>Den søde søger</TITLE>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
</HEAD>
<BODY>
<FORM METHOD=\"POST\">Søg efter: <INPUT TYPE=\"text\" NAME=\"search\">&nbsp;&nbsp;<INPUT TYPE=\"submit\" VALUE=\"Søg\"></FORM>


<?php
###### Skal rettes #######

$filen=\"tekst.txt\";

##########################


if($search){
    $fil = file($filen); /*henter alle linier ind i et array*/
    $lines = find($search);
    if($lines){       
            echo \'<center><table width=\"600\" border=\"0\"><tr><td colspan=\"4\" align=\"left\">Resultater på søgning efter \"\'.$search.\'\"</td></tr><tr align=\"center\"><td bgcolor=\"#DDDDDD\">Navn</td><td bgcolor=\"#DDDDDD\">Email</td><td bgcolor=\"#DDDDDD\">Hjemmeside</td><td bgcolor=\"#DDDDDD\">Icq</td></tr>\';
        for($i=0; $i<sizeof($lines); $i++){/*er det flere resultater er den nødvendigt med løkken*/
            $linie = $lines[$i][0];/*henter oplysningerne én af gangen*/                               
                    $linie=explode(\", \", $linie); /*splitter informationerne om den enkelte bruger op i et array med \', \' som deler                                        */                   
            echo \'<tr align=\"right\"><td bgcolor=\"#EEEEEE\">\'.$linie[0].\'</td><td bgcolor=\"#EEEEEE\"><a href=\"mailto:\'.str_replace(\'=\', \'@\', $linie[1]).\'\">\'.str_replace(\'=\', \'@\', $linie[1]).\'</a></td><td bgcolor=\"#EEEEEE\"><a href=\"http://\'.$linie[2].\'\">http://\'.$linie[2].\'</td><td bgcolor=\"#EEEEEE\">\'.$linie[3].\' <img border=\"0\" ALIGN=\"middle\" src=\"http://wwp.icq.com/scripts/online.dll?icq=\'.$linie[3].\'&img=5\"></td></tr>\';/*udskriver oplysningerne*/
        }
            echo \'</table></center>\';
    }
    else{
        echo \'Der kunne ikke findes nogle oplysninger\';
        }
    }
function find($search){
    global $fil;
    for($i=0; $i<sizeof($fil); $i++){
        if(stristr($fil[$i], $search)){
            $linie = explode(\"\\t\", $fil[$i]);/*splitter kolonnerne op efter et tabulatortegn*/
            $return[] = $linie;/*laver et array med resultaterne*/
        }
    }
    return $return;
}
?>
Dette script skulle virke, hvis de enkelte personer er adskildt med taulatortegn, og informationerne adskildt med  \', \'

Se evt. http://skoletiden.dk/test
og http://skoletiden.dk/test/tekst.txt

/oettinger

</BODY>
</HTML>

Avatar billede oetting Nybegynder
18. december 2001 - 18:41 #7
Icq tingen køre over icq\'s server og er ofte langsom! Kunne undlades aller man kunne lave det muligt at slå det fra.
Avatar billede Kengun Praktikant
18. december 2001 - 19:52 #8
Det fungerer da udemerket på dine sider! Akkuratt slik jeg ønsker. Det eneste er at det hadde været fint hvis du kunne legge inn at man må MINST skrive 2-3 tegn for at kunne søge. Slik det er nå kan du skrive kun et a og begge oppføringerer kommer frem. Jeg forsøger å legge det opp på min server også. Jacob har du sett på dette: http://www.eksperten.dk/spm/147678
Avatar billede barefoot Nybegynder
18. december 2001 - 20:28 #9
Jeg vil lige pointere at det udkast jeg lavede søgte i alle informationer om en person.
Så hvis du kun ønsker at søge efter navnet skal det selvfølgelig ændres.
Grundet de mange måder som underlige navne kan staves på anbefaler jeg at der laves en udviddet søgning med php\'s soundex() funktion for at gøre det optimalt.

Avatar billede Kengun Praktikant
18. december 2001 - 20:34 #10
Det høres fornuftig ud med den soundex() funktion :-)
Avatar billede Kengun Praktikant
18. december 2001 - 20:36 #11
Jeg synes scriptet fungerer fint men jeg skulle gjerne hatt inn slik at det brugeren må skrive inn MINST 3-4 tegn for at kunde søge. Hva må jeg endre i scriptet for at få dette til?
Avatar billede barefoot Nybegynder
18. december 2001 - 21:05 #12
Jeg har add\'et det med soundex funktionen og længden af søgeordet.
Du kan for det første ikke skrive mere end tre tegn i input boksen men hvis det alligevel skulle lykkes at smugle et søgeord på to bogstaver ind så brokker den sig over det...

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">
<HTML>
<HEAD>
    <TITLE>Den søde søger</TITLE>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
</HEAD>
<BODY>
<FORM METHOD=\"POST\">Søg efter: <INPUT TYPE=\"text\" NAME=\"search\" VALUE=\"<?php echo $search;?>\" maxlength=\"3\">&nbsp;&nbsp;<INPUT TYPE=\"submit\" VALUE=\"Søg\"></FORM>


<?php
###### Skal rettes #######

$filen=\"tekst.txt\";

##########################

if(strlen($search)<3){
    echo \'Du skal skrive mindst tre tegn\';
    unset($search);
}
if($search){
    $fil = file($filen); /*henter alle linier ind i et array*/
    $lines = find($search);
    if($lines){       
            echo \'<center><table width=\"600\" border=\"0\"><tr><td colspan=\"4\" align=\"left\">Resultater på søgning efter \"\'.$search.\'\"</td></tr><tr align=\"center\"><td bgcolor=\"#DDDDDD\">Navn</td><td bgcolor=\"#DDDDDD\">Email</td><td bgcolor=\"#DDDDDD\">Hjemmeside</td><td bgcolor=\"#DDDDDD\">Icq</td></tr>\';
        for($i=0; $i<sizeof($lines); $i++){/*er det flere resultater er den nødvendigt med løkken*/
            $linie = $lines[$i][0];/*henter oplysningerne én af gangen*/                               
                    $linie=explode(\", \", $linie); /*splitter informationerne om den enkelte bruger op i et array med \', \' som deler                                        */                   
            echo \'<tr align=\"right\"><td bgcolor=\"#EEEEEE\">\'.$linie[0].\'</td><td bgcolor=\"#EEEEEE\"><a href=\"mailto:\'.str_replace(\'=\', \'@\', $linie[1]).\'\">\'.str_replace(\'=\', \'@\', $linie[1]).\'</a></td><td bgcolor=\"#EEEEEE\"><a href=\"http://\'.$linie[2].\'\">http://\'.$linie[2].\'</td><td bgcolor=\"#EEEEEE\">\'.$linie[3].\' <img border=\"0\" ALIGN=\"middle\" src=\"http://wwp.icq.com/scripts/online.dll?icq=\'.$linie[3].\'&img=5\"></td></tr>\';/*udskriver oplysningerne*/
        }
            echo \'</table></center>\';
    }
    else{
        echo \'Der kunne ikke findes nogle oplysninger\';
        }
    }
function find($search){
    global $fil;
    for($i=0; $i<sizeof($fil); $i++){
        if(stristr($fil[$i], soundex($search))){
            $linie = explode(\"\\t\", $fil[$i]);/*splitter kolonnerne op efter et tabulatortegn*/
            $return[] = $linie;/*laver et array med resultaterne*/
        }
    }
    return $return;
}
?>
Dette script skulle virke, hvis de enkelte personer er adskildt med taulatortegn, og informationerne adskildt med  \', \'

Se evt. http://skoletiden.dk/test
og http://skoletiden.dk/test/tekst.txt

/oettinger

</BODY>
</HTML>
Avatar billede Kengun Praktikant
18. december 2001 - 21:19 #13
Jeg vet jeg beder om meget men kunde du også gjøre det slik at epostadressen IKKE kommer frem med at det i stedet står \"Klik her\". Når man klikker på \"Klik her\" så åpner epostprogrammet med den riktige epostadresse i tilfeltet. Hvis du kan fikse dette så er det PERFEKT :-) - Du kan gjerne sende scriptet til navn2000@hotmail.com - Barefoot> Kan du også smide et SVAR så kan jeg give deg også nogen points :-) Er det ok at jeg deler pointsene 50/50 (150 til hver) til Oetting og Barefoot??
Avatar billede Kengun Praktikant
18. december 2001 - 21:24 #14
Hmmm. Det siste scriptet fungerer ikke helt som det skal. Man skal selvfølgelig kunne skrive inn mere enn 3 tegn i søgeboksen men ikke mindre enn 3 tegn. Jeg ved heller ik om den soundex fungerer som den skal, for hvis jeg søger etter f.eks. Ken så finder den ik noget.
Avatar billede barefoot Nybegynder
18. december 2001 - 21:52 #15
Jeg kan nu ikke forstå hvorfor man ikke må kunne se epostadressen... der er ikke noget værre end sider hvor der virker sådan. Hvis man hører til alle dem som ikek bruger outlook til at sende mail så er det ret besværligt at se hvilken mailadresse man kan bruge...

Jeg tænkte mig ikke helt om med hensyn til soundex. Det er lidt mere avanceret hvis den skal sættes ind så det droppede jeg igen.

Det med maks tre tegn i input feltet var min store fejl!
Det har jeg gjernet igen!

Det med point er helt fair:)

Her er koden så:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">
<HTML>
<HEAD>
    <TITLE>Den søde søger</TITLE>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
</HEAD>
<BODY>
<FORM METHOD=\"POST\">Søg efter: <INPUT TYPE=\"text\" NAME=\"search\" VALUE=\"<?php echo $search;?>\">&nbsp;&nbsp;<INPUT TYPE=\"submit\" VALUE=\"Søg\"></FORM>


<?php
###### Skal rettes #######

$filen=\"tekst.txt\";

##########################

if(strlen($search)<3){
    echo \'Du skal skrive mindst tre tegn\';
    unset($search);
}
echo soundex($search);
if($search){
    $fil = file($filen); /*henter alle linier ind i et array*/
    $lines = find($search);
    if($lines){       
            echo \'<center><table width=\"600\" border=\"0\"><tr><td colspan=\"4\" align=\"left\">Resultater på søgning efter \"\'.$search.\'\"</td></tr><tr align=\"center\"><td bgcolor=\"#DDDDDD\">Navn</td><td bgcolor=\"#DDDDDD\">Email</td><td bgcolor=\"#DDDDDD\">Hjemmeside</td><td bgcolor=\"#DDDDDD\">Icq</td></tr>\';
        for($i=0; $i<sizeof($lines); $i++){/*er det flere resultater er den nødvendigt med løkken*/
            $linie = $lines[$i][0];/*henter oplysningerne én af gangen*/                               
                    $linie=explode(\", \", $linie); /*splitter informationerne om den enkelte bruger op i et array med \', \' som deler                                        */                   
            echo \'<tr align=\"right\"><td bgcolor=\"#EEEEEE\">\'.$linie[0].\'</td><td bgcolor=\"#EEEEEE\"><a href=\"mailto:\'.str_replace(\'=\', \'@\', $linie[1]).\'\">Klik her</a></td><td bgcolor=\"#EEEEEE\"><a href=\"http://\'.$linie[2].\'\">http://\'.$linie[2].\'</td><td bgcolor=\"#EEEEEE\">\'.$linie[3].\' <img border=\"0\" ALIGN=\"middle\" src=\"http://wwp.icq.com/scripts/online.dll?icq=\'.$linie[3].\'&img=5\"></td></tr>\';/*udskriver oplysningerne*/
        }
            echo \'</table></center>\';
    }
    else{
        echo \'Der kunne ikke findes nogle oplysninger\';
        }
    }
function find($search){
    global $fil;
    for($i=0; $i<sizeof($fil); $i++){
        if(stristr($fil[$i], $search)){
            $linie = explode(\"\\t\", $fil[$i]);/*splitter kolonnerne op efter et tabulatortegn*/
            $return[] = $linie;/*laver et array med resultaterne*/
        }
    }
    return $return;
}
?>

</BODY>
</HTML>
Avatar billede oetting Nybegynder
19. december 2001 - 09:23 #16
Point delingen er helt fair med mig.

Dog forstår jeg ikke hvad det der
echo soundex($search);
skal gøre godt for

oetting
Avatar billede Kengun Praktikant
19. december 2001 - 11:04 #17
Jeg tror at Barefoot brukte echo soundex($search);
under \"testkjøringen\". Jeg har fjernet den setningen fra scriptet.
Avatar billede barefoot Nybegynder
19. december 2001 - 12:37 #18
Det er helt korrekt med soundex. Det var for at jeg kunne se hvad den returnerede da den ikke virkede i første omgang.
Hvis man skal bruge soundex skal man først lave nogle andre strenge ud fra den originale og så søge på den alle sammen.
Tak for pointsne :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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