Avatar billede hjalte81 Nybegynder
19. december 2010 - 14:19 Der er 5 kommentarer og
1 løsning

Problemer med at vælge data fra ID felt, hvad gør jeg forkert?

Hej alle...

Jeg har et simpelt php script der skal finde en række i en MySQL database baseret på en variabel kaldet '$term'.

Det ser sådan her ud:

------

$result = mysql_query("SELECT * FROM data");

while ($row = mysql_fetch_array($result))

    $data[]     = $row[0];
    $kw[]         = $row['kw'];
    $id[]         = $row['id'];
    $url[]         = $row['redurl'];
}
                       
foreach ($kw as $num=>$kw)
{
    if (stristr($term, $kw))
        {
    $dbid         = $num + 1;   
        }
}

-----

Mit problem er, at hvis jeg ikke tilføjer den nederste 'kommando' ($dbid         = $num + 1;), så vælger den altid den række i databasen der står nedenuder.

Så hvis den række der har et match, er ID 3, så ville den vælge række 2.

Hvordan før jeg den til at 'standse' på den rigtige række.

Som I kan se bruger jeg 'stristr' til at søge med...

Håber I kan hjælpe.
Avatar billede arne_v Ekspert
19. december 2010 - 18:21 #1
Jeg kan ikke gennemskue din kode, men var det ikke bedre at putte en WHERE på den SQL ?
Avatar billede hjalte81 Nybegynder
19. december 2010 - 18:42 #2
Det næste der sker (efter koden) er jo at jeg så vælger den række den er 'standset' på og henter noget data derfra.

Hvorfor er det bedre at bruge WHERE?
Avatar billede arne_v Ekspert
19. december 2010 - 18:51 #3
Hvis data kan udvælges med WHERE så sparer man jo at hente en masse data fra databasen.
Avatar billede hjalte81 Nybegynder
19. december 2010 - 18:58 #4
Arne>>

Ignorer det ovenstående indlæg :)

Grunden til at jeg ikke bruger WHERE i ovenstående eksempel er at jeg skal matche en sætning op imod databasen.

F.eks.:

---
$result = mysql_query("SELECT * FROM example
WHERE kw='$kw'");
---
 
I min DB 'example' er kw 'fødselsdag' men den $kw er 'idag er det min fødselsdag'.

Så, så vidt jeg har forstået kan jeg ikke bruge en where, ordene ikke matcher 100%.

Det skal lige siges at jeg er ret grøn når det kommer til php, så måske er der noget jeg har misforstået :)
Avatar billede hjalte81 Nybegynder
19. december 2010 - 21:33 #5
Arne>>

Selvom du aldrig svarede på mit andet spørgsmål, så fandt jeg en løsning alligevel.

Jeg læste noget mere om WHERE statements, og det ender med at se sådan her ud:


$result = mysql_query("SELECT * FROM data WHERE MATCH (kw) AGAINST ('{$term}' IN BOOLEAN MODE)");

Det er jo smukt :)

Smid lige et svar, så sender jeg nogle points din vej...!
Avatar billede arne_v Ekspert
19. december 2010 - 23:33 #6
ok
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
Computerworld tilbyder specialiserede kurser i database-management

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