Avatar billede jarner Nybegynder
20. august 2007 - 20:57 Der er 8 kommentarer og
1 løsning

Søge i specifikke kolonner

Hej

Jeg har i min database(mysql) en tabel der hedder tabel1 og i denne er der 3 kolonner: column1, column2 og column3 der alle består af heltal(int).

Jeg vil gerne lave en søgefunktion der indeholder 3 felter hvor man søger efter værdien fra hver enkelt kolonne i hvert søgefelt og søgeresultatet så bliver et resultat af de 3 søgefelter kombineret.

Håber det giver mening?
På forhånd tak
Avatar billede jakobdo Ekspert
20. august 2007 - 21:20 #1
SELECT * FROM tabel1 WHERE column1 LIKE '%noget1%' OR column2 LIKE '%noget2%' OR column3 LIKE '%noget%3'

Og hvis det ikke skal være eller, kan du rette OR til AND
Eller du kan lege med felter og bygge din SQL op efter hvilke felter der er indhold i.
Avatar billede jarner Nybegynder
20. august 2007 - 21:27 #2
mange tak for svar

og hvordan ville det se ud i php, hvis man forestillede sig tre forskellige søgefelter og en submit-knap?
Avatar billede showsource Seniormester
20. august 2007 - 21:28 #3
En lidt anden mulighed, så x-antal felter også er en mulighed:

Du giver hvert textfelt et navn med [] tilsidst, så får du et array

name="seek_col[]" value="column1"
name="seek_col[]" value="column2"


Ved request

$$kolonner = array();


    foreach($_POST["seek_col"] as $col => $value) {

        if(trim($value) == "") {
        continue;
        }

    $kolonner[] = "`". $col ."` LIKE '%". $value ."%'";

    }

if!empty($kolonner)) {
$find = mysql_query"SELECT FROM `tabel` WHERE ". implode(" OR ", $kolonner) ." ORDER BY `id` DESC") or die (mysql_error());

// VISNING


}else{
echo"Udfyld søgefelter!";
}

Noget tjek på hvad $value indeholder vil jo lige være på sin plads!
Avatar billede showsource Seniormester
20. august 2007 - 21:32 #4
hov
$$kolonner = array(); => $kolonner = array();
Avatar billede jarner Nybegynder
20. august 2007 - 22:12 #5
så jeg opretter 3 tekstfelter i stil med
<input type="text" name="seek_col[]" value="column1">
<input type="text" name="seek_col[]" value="column2">
<input type="text" name="seek_col[]" value="column3">
?

skal det være i en form eller hvordan?
undskyld, jeg er ikke så stærk i det her...
Avatar billede olebole Juniormester
20. august 2007 - 22:53 #6
<ole>

Undgå foreach-løkken, når du i stedet kan bruge en alm. for-løkke. Sidstnævnte er langt hurtigere:
    for ($i=0,$j=count($_POST["seek_col"]); $i<$j; $i++) {
        if (trim($_POST["seek_col"][$i]) == "") continue;
    }

/mvh
</bole>
Avatar billede olebole Juniormester
20. august 2007 - 22:55 #7
- og endnu mere effektivt:
    $seek_col = $_POST["seek_col"];
    for ($i=0,$j=count($seek_col); $i<$j; $i++) {
        if (trim($seek_col[$i]) == "") continue;
    }
Avatar billede jarner Nybegynder
20. august 2007 - 23:40 #8
Tak for alle løsningerne. Jeg har fået hjælp andetsteds og lukker derfor denne tråd.
smid gerne svar
Avatar billede jarner Nybegynder
20. september 2007 - 09:57 #9
svar
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