Avatar billede perh Juniormester
01. april 2001 - 14:52 Der er 8 kommentarer og
1 løsning

invers søgning -?

Det hedder det sikkert ikke, men:
Jeg har i en database et felt, der indeholder ugenumre på optagede uger.

Jeg skal bruge en søgning på ledige uger, sådan at hvis \"optagede uger\" IKKE indeholder det ugenummer, der søges på svares der \"LEDIG\"

if ($in{\'ledig\'} !(en del af) $rec{optaget}){
kør på...
}

$rec{optaget} kan indeholde 0..mange ugenumre, adskilt af \"hvadsomhelst\", men min maskine finder dem. Der skal kun søges på et nummer ad gangen.

Så det er lige udtrykket jeg skal bruge.
Det er nok noget med arrays, som jeg endnu ikke er for god til.
Avatar billede mukke Nybegynder
01. april 2001 - 15:01 #1
jeg ved ikke helt om dette kan bruges, men du kan måske komme videre ud fra dette:

if ($rec{\'optaget\'} !~ m/.*$in{\'ledig\'}.*/)
{
  # ledig er ikke en del af optaget
}

Avatar billede perh Juniormester
02. april 2001 - 21:52 #2
Tak skal du have jeg prøver hvad jeg kan gøre med det, og vender tilbage.
Avatar billede mukke Nybegynder
02. april 2001 - 22:01 #3
Jeg er ikke helt sikker på hvordan du gemmer dine data, men Regular Expressions er højest sansynligt vejen at gå... Hvis du bruger ActiveState\'s Perl kan du åbne hjælpen (HTML) og i indekset finde PerlRE

Det kan i første omgang være lidt forvirrende, men når først du begynder at forstå det er det MEGET genialt.
Avatar billede perh Juniormester
02. april 2001 - 23:58 #4
Ja, faktisk kan jeg anvende RegExp i min søgestreng, men jeg kan ikke se , at man kan sætte noget sammen, der giver alle svar, der IKKE matcher?
Avatar billede mukke Nybegynder
03. april 2001 - 12:07 #5
har du noget eksempel data? - som sagt er jeg ikke sikker på hvordan dine data faktisk ser ud / er gemt.
Avatar billede perh Juniormester
03. april 2001 - 12:54 #6
Ja, nu kan jeg se at det er et meget stærkt værktøj.
Jeg kan i søgestrengen sætte \"&Optaget=30\", så får jeg f. eks den der indeholder \"29,30,31\"
det er OK
skriver jeg \"&Optaget=[^30]\", forventer jeg ikke at få den post, men den kommer alligevel, men der ER sorteret en del andre poster fra, altså virker regexp en , men udtrykket er forkert.
Jeg skal bruge et udtryk som finder de records, som IKKE indeholder nogen forekomst af \"30\" nogen steder i feltet \"Optaget\".
Feltet \"Optaget\" indeholder kun tocifrene numre fra 20 til 40, adskilt af mellemrum, eller komma, eller bindestreg, eller ..

Avatar billede mukke Nybegynder
03. april 2001 - 13:55 #7
if ($rec{\'optaget\'} !~ m/.*30*/)
{
  # \'30\' indgår ikke i $rec{\'ledig\'}
}

Hvis ikke det er det du mener så må da altså vise noget af din kode!

Med sig... er det i en SQL-sætning du forsøger at lave din udvælgelse?
Avatar billede perh Juniormester
03. april 2001 - 14:45 #8
Hov, nej glem det oprindelige spørgsmål. Nu drejer det sig om et link til databasen, fordi det kan indeholde regExps.

http://www.dk-web.com/cgi-bin2/sommer/sommer.cgi?By=Svaneke&Optaget=*&re=on&uid=default&view_records=1

re=on betyder at regexps bliver anvendt.

Det kunne være linket. Optaget er sat til stjerne og returnerer alle felter.

Sæt det lig 30 og der kommer kun et svar (og en fejlmeddelelse)


skriver jeg \"&Optaget=[^30]\", forventer jeg ikke at få den \"Optaget\"-post som indeholder 30, men den kommer alligevel, men der ER sorteret en del andre poster fra, altså virker regexp en , men udtrykket er forkert.
Jeg skal bruge et udtryk som finder de records, som IKKE indeholder nogen forekomst af \"30\" nogen steder i feltet \"Optaget\".

Noget i stil med &Optaget=[^30], som skulle finde de records, der ikke indeholder 3 og ikke indeholder 0, men jeg skal bruge: \"ikke (30)\"
Avatar billede perh Juniormester
28. februar 2012 - 15:41 #9
lukker
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
Kurser inden for grundlæggende programmering

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