Avatar billede dj-hupi Nybegynder
28. december 2005 - 00:06 Der er 28 kommentarer og
1 løsning

Hjælp til en ordenlige search streng

Form koden:
                <table border="0" width="100%" id="table3" cellspacing="0" cellpadding="0">
                    <tr>
                        <td width="75" valign="top"><?php
                                echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n";
                                echo "<input type='text' value='Search...' name='searchname'/>";
                        ?></td>
                        <td width="75" valign="top"><?php
                                echo "<select style='width: 125px' name='searchlist'>";
                                echo "<option value=''>Choose search</option>";
                                echo "<option value='family.family'>Family</option>";
                                echo "<option value='sub_family.sub_family'>Sub-family</option>";
                                echo "<option value='genus.genus'>Genus</option>";
                                echo "<option value='specie.species'>Specie</option>";
                                echo"</select>";
                        ?></td>
                        <td width="50" valign="top"><?php
                        echo "<input type=\"submit\" name=\"search\" value=\"Search\">\n";
                        ?></td>
                        <td width="100" valign="top"></td>
                    </tr>
                </table>

---------------------------------------------------------
Koden som leder:

$searchname = mysql_escape_string($_POST['searchname']);
                                $searchlist = mysql_escape_string($_POST['searchlist']);
                               
                                $query = mysql_query("SELECT family.id, family.family, sub_family.id, sub_family.sub_family, genus.id, genus.genus, specie.id, specie.species FROM family, sub_family, genus, specie WHERE '".$searchlist."' LIKE '".$searchname."%'");
                                if(mysql_num_rows($query) > 0)
                                    {
                                    //Vi fandt noget...
                                    while($row = mysql_fetch_array($query))
                                    {
                                        if($searchlist == "family.family"){
                                                echo "<a class='listtext'>Found:</a><br>";
                                        echo "<a href=family.asp?id=" . $row[0] . ">  " . $row[1] . "<br>";
                                          }
                                         
                                        if($searchlist == "sub_family.sub_family"){
                                                echo "<a class='listtext'>Found:</a><br>";
                                        echo "<a href=subfamily.asp?id=" . $row[2] . ">  " . $row[3] . "<br>";
                                          }
                                       
                                        if($searchlist == "genus.genus"){
                                                echo "<a class='listtext'>Found:</a><br>";
                                        echo "<a href=genus.asp?id=" . $row[4] . ">  " . $row[5] . "<br>";
                                          }

                                        if($searchlist == "specie.species"){
                                                echo "<a class='listtext'>Found:</a><br>";
                                        echo "<a href=species.asp?id=" . $row[6] . ">  " . $row[7] . "<br>";
                                          }
                                    }
                                }
                                else
                                {
                                    //Vi fandt ikke noget...
                                    echo "Vi fandt desværre ikke: " . $searchname . " i vores database, prøv igen!";
                                }


Kan ikke rigtig få det til at fungere :/
Avatar billede jaw Nybegynder
28. december 2005 - 01:06 #1
Nej, det vil ikke virke. Prøv:

$searchname = mysql_escape_string($_POST['searchname']);
$query = mysql_query("SELECT family.id, family.family, sub_family.id, sub_family.sub_family, genus.id, genus.genus, specie.id, specie.species FROM family, sub_family, genus, specie WHERE ";

for($i = 0; $i < count($_POST['searchlist']; $i++) {
  if($i > 0)
    $query .= " AND ";
  $query .= mysql_real_escape_string($_POST['searchlist'][$i]) ." LIKE '".$searchname."%'";
}

...og så bare resten af scriptet som det er nu - skulle jeg mene!
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:16 #2
$query = mysql_query("SELECT family.id, family.family, sub_family.id, sub_family.sub_family, genus.id, genus.genus, specie.id, specie.species FROM family, sub_family, genus, specie WHERE "

                                        for($i = 0; $i < count($_POST['searchlist']; $i++) {
                                          if($i > 0)
                                          $query .= " AND ";
                                          $query .= mysql_real_escape_string($_POST['searchlist'][$i]) ." LIKE '".$searchname."%'";
                                        }

For en Parse error: parse error, unexpected T_FOR
Avatar billede jaw Nybegynder
28. december 2005 - 01:17 #3
Ja ok, der mangler et ; efter: WHERE "
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:19 #4
Ja men såå kommer den med en: Parse error: parse error, unexpected ';'
Efter WHERE "
Avatar billede jaw Nybegynder
28. december 2005 - 01:22 #5
Ja ok, der var jeg vist liiiige hurtig nok:

$q = "SELECT family.id, family.family, sub_family.id, sub_family.sub_family, genus.id, genus.genus, specie.id, specie.species FROM family, sub_family, genus, specie WHERE ";
for($i = 0; $i < count($_POST['searchlist']); $i++) {
  if($i > 0)
    $query .= " AND ";
  $query .= mysql_real_escape_string($_POST['searchlist'][$i]) ." LIKE '".$searchname."%'";
}
$query = mysql_query($q);
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:28 #6
Jaw nu for jeg fejl i min if sætning :P : if(mysql_num_rows($query) > 0)
Mulighed for du lige kigger den igennem igen ?
Avatar billede jaw Nybegynder
28. december 2005 - 01:36 #7
Jeg må vist beklage... Jeg havde fået opfattelsen af, at det var en select-liste og ikke en drop-down.

Men så skal linien vel bare være:
$query = mysql_query("SELECT family.id, family.family, sub_family.id, sub_family.sub_family, genus.id, genus.genus, specie.id, specie.species FROM family, sub_family, genus, specie WHERE ".$searchlist." LIKE '".$searchname."%'");

? Ellers må du prøve at forklare, hvor det er det går galt... Beklager igen!
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:39 #8
Næsten nemmere du lige ser det :)
http://www.akvarie-galleri.dk/search.php
Jeg vil gerne ha den bare finder det den skal i tabellerne :)
Avatar billede jaw Nybegynder
28. december 2005 - 01:40 #9
Ja, altså problemet er, at den skriver den ovenover dine forms? For selve søgningen virker, eller hvad? Jeg ved jo ikke lige hvad jeg kan søge på...
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:42 #10
Problemet er at jeg aldrig kommer ind i min while($row = mysql_fetch_array($query))..
Hvis jeg søger på noget hopper den bare ned til:                                    echo "Vi fandt desværre ikke: " . $searchname . " i vores database, prøv igen!";

Du kan prøve at søge på: "Crenicichla" og i dropdown "Genus"
Avatar billede jaw Nybegynder
28. december 2005 - 01:46 #11
Hedder feltet, hvor "Crenicichla" står da "genus" i tabellen "genus"?
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:50 #12
Ja der står "Crenicichla" nede i tabellen genus...
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:50 #13
Du får lige 50 point mere, klokken er mange :P
Avatar billede jaw Nybegynder
28. december 2005 - 01:51 #14
Ja tabellen hedder genus, men hedder feltet også genus?
Avatar billede jaw Nybegynder
28. december 2005 - 01:53 #15
Og i bund og grund tror jeg også din query prøver at hente mere end den kan klare. Du henter jo ud fra 4 tabeller, og forventer så at genus.genus skal være Crenicichla. Er der en grund til at du vil hente fra alle tabeller, i stedet for bare at nøjes med den ene tabel du nu vil søge i?
Avatar billede dj-hupi Nybegynder
28. december 2005 - 01:55 #16
Ja fordi du kan jo vælge om det skal være en family, Sub-family, genus eller en species ...
Men du har helt sikkert ret... Kigger lige på det
Avatar billede jaw Nybegynder
28. december 2005 - 01:57 #17
Jeg tænker på at prøve:

$searchname = mysql_escape_string($_POST['searchname']);
$searchlist = mysql_escape_string($_POST['searchlist']);
$searchtable = explode(".", $_POST['searchlist']);
$query = mysql_query("SELECT ".$searchtable[0].".id, ".$searchlist." FROM family, sub_family, genus, specie WHERE ".$searchlist." LIKE '".$searchname."%'");

f.eks.
Avatar billede jaw Nybegynder
28. december 2005 - 01:57 #18
Sådan faktisk:
$query = mysql_query("SELECT ".$searchtable[0].".id, ".$searchlist." FROM ".$searchtable[0]." WHERE ".$searchlist." LIKE '".$searchname."%'");
Avatar billede dj-hupi Nybegynder
28. december 2005 - 02:02 #19
Kig lige :P
Avatar billede jaw Nybegynder
28. december 2005 - 02:02 #20
Så fandt den da noget...
Avatar billede dj-hupi Nybegynder
28. december 2005 - 02:03 #21
Tror det er fordi den tager for mange poster ..
Avatar billede jaw Nybegynder
28. december 2005 - 02:05 #22
Nej, du skal bare ændre alle dine links til $row[0] og $row[1]. Nu har du ikke flere end de 2 på noget tidspunkt. Og så mangler du lige en </a> efter linket, men det har så ikke den store betydning i fejlfindingsprocessen...
Avatar billede dj-hupi Nybegynder
28. december 2005 - 02:08 #23
Nu virker det sku ..
Den få dog ikke det rigtige id frem ?
Avatar billede jaw Nybegynder
28. december 2005 - 02:11 #24
Ikke? Hvis jeg går ind på din "sort genus", så har Crenicichla da også id 1?!

Men må gå i seng nu, held og lykke - og godnat...
Avatar billede jaw Nybegynder
28. december 2005 - 02:11 #25
Er det ikke fordi du det ene sted bruger genus.asp og det andet sted bruger genus.php? :)
Avatar billede dj-hupi Nybegynder
28. december 2005 - 02:12 #26
Hahah lol torsk Rasmus ..
Avatar billede dj-hupi Nybegynder
28. december 2005 - 02:12 #27
Så det godt lige :P
Lav lige et svar det er vel fortjent !
Avatar billede jaw Nybegynder
28. december 2005 - 02:13 #28
Hehe, godt... Glad for at det virker og beklager det roderi jeg lige fik startet med :)

Tak for points, og SÅ er det godnat! :)
Avatar billede dj-hupi Nybegynder
28. december 2005 - 02:14 #29
Hehe iorden ;)
Sov godt .. :)
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