Avatar billede Blackz Nybegynder
10. oktober 2010 - 17:45 Der er 5 kommentarer og
1 løsning

Jeg sidder fast og har brug for hjælp til php

Jeg har her et search script som virker fint når man kun søger på "keywords" men det jeg har brug for er at jeg kan søge på flere punkter i databasen og her har jeg brug for hjælp....
coden ser sådan ud:

//get data
$button = $_GET['submit'];
$search = $_GET['search'];

if (!$button)
    echo "Du sendte ingen søgeord"."<br />";
    else
    {
        if (strlen($search)<=1)   
        echo "Søgning er for kort"."<br />";
       
        else {
            echo "Du søgte På: <b> $search </b><hr size='1'";
               

                //explode our search terms
                $search_exploded = explode(" ",$search);   
               
                foreach ($search_exploded as $search_each)
                {
                    //construct query
                    $x++;
                    if ($x==1)
                        $construct .= "keywords LIKE '%$search_each%'";
                    else
                        $construct .="OR keywords LIKE '%$search_each%'";
                }
               
                //echo our construct
                $construct = "SELECT * FROM test_biblo WHERE $construct";
                $run = mysql_query($construct);
               
                $foundnum = mysql_num_rows($run);
               
                if ($foundnum == 0)
                    echo "Ingen resultat fundet.";
                else
                {
                    echo " $foundnum resultat fundet<p>";
                   
                    while ($runrows = mysql_fetch_assoc($run))
                    {
                        //get data
                        $forfatter = $runrows['forfatter'];
                        $titel = $runrows['titel'];
                        $isbn = $runrows['isbn'];
                        $beskrivelse = $runrows['beskrivelse'];
                        $url = $runrows['url'];
                       
                        echo "
                        Forfatter. $forfatter<br />
                            Titel.$titel<br />
                            Isbn.$isbn<br />
                            Beskrivelse.$beskrivelse<br /><hr />
                            <!--<a href='$url'>$url</a><p>-->
                            ";
                       
                    }
                }
            }
           
        }
   

?>
<b>Min Søge Maskine</b>
<form action="<?php $PHP_SELF; ?>" method="GET">
<input type="text" name="search" />
<input type="submit" name="submit" Value="Search">
</form>

håber at hører fra nogen gevinsten er 200point
Avatar billede w13 Novice
10. oktober 2010 - 18:02 #1
Så må du nok ændre:

if ($x==1)
    $construct .= "keywords LIKE '%$search_each%'";
else
    $construct .="OR keywords LIKE '%$search_each%'";


til:

if ($x>1) {
    $construct .= " OR";
}
$construct .= " keywords LIKE '%$search_each%' OR other_field LIKE '%$search_each%' OR another_field LIKE '%$search_each%'";


Dvs. skrive de felter ind, du vil søge i. :)
Avatar billede w13 Novice
10. oktober 2010 - 18:39 #2
Du kan selvfølgelig skrive det lidt pænere:

if ($x>1) {
    $construct .= " OR";
}
$construct .= "
                            keywords LIKE '%$search_each%' OR
                            other_field LIKE '%$search_each%' OR
                            another_field LIKE '%$search_each%'
";
Avatar billede Blackz Nybegynder
10. oktober 2010 - 19:37 #3
Hej w13
jeg har prøvet at bruge dit forslag men får fejl meddelsen her:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/home/web/web43691/search_test/serach.php on line 40
den hen viser til denne line:
                      $foundnum = mysql_num_rows($run);

Jeg har følg tabel som jeg søger i "test_biblo" med felterne:
forfatter - titel - isbn - beskrivelse håber at det kan hjælpe dig
Avatar billede w13 Novice
10. oktober 2010 - 20:39 #4
Så skal det være:

if ($x>1) {
    $construct .= " OR";
}
$construct .= "
                            forfatter LIKE '%$search_each%' OR
                            titel LIKE '%$search_each%' OR
                            isbn LIKE '%$search_each%' OR
                            beskrivelse LIKE '%$search_each%'
";


Det ved jeg ikke, om du har rettet det til selv?

For lige nu lyder det som om der er defineret nogle database-felter, som ikke findes i databasen.

Du kan også rette:

$run = mysql_query($construct);


til:

$run = mysql_query($construct) or die(mysql_error());


Så vil den give en fejlbesked, når SQL'en er forkert.
Avatar billede Blackz Nybegynder
09. november 2010 - 10:20 #5
jeg takker for dine forslag men jeg valgte og bruge noget andet da jeg ikke kunne få det til at virke men dine point er hjemme for det arbejde du har gjort mangfe tak for hjælpen :)
Avatar billede w13 Novice
09. november 2010 - 11:49 #6
Det var så lidt, og godt du fik det til at virke!

Bare lige til din info, så tog du pointene selv. :) Men jeg har masser, så det gør intet. =)

God tirsdag! :)
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