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 :/
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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!
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
28. december 2005 - 01:17
#3
Ja ok, der mangler et ; efter: WHERE "
28. december 2005 - 01:19
#4
Ja men såå kommer den med en: Parse error: parse error, unexpected ';' Efter WHERE "
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);
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 ?
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!
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å...
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"
28. december 2005 - 01:46
#11
Hedder feltet, hvor "Crenicichla" står da "genus" i tabellen "genus"?
28. december 2005 - 01:50
#12
Ja der står "Crenicichla" nede i tabellen genus...
28. december 2005 - 01:50
#13
Du får lige 50 point mere, klokken er mange :P
28. december 2005 - 01:51
#14
Ja tabellen hedder genus, men hedder feltet også genus?
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?
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
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.
28. december 2005 - 01:57
#18
Sådan faktisk: $query = mysql_query("SELECT ".$searchtable[0].".id, ".$searchlist." FROM ".$searchtable[0]." WHERE ".$searchlist." LIKE '".$searchname."%'");
28. december 2005 - 02:02
#19
Kig lige :P
28. december 2005 - 02:02
#20
Så fandt den da noget...
28. december 2005 - 02:03
#21
Tror det er fordi den tager for mange poster ..
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...
28. december 2005 - 02:08
#23
Nu virker det sku .. Den få dog ikke det rigtige id frem ?
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...
28. december 2005 - 02:11
#25
Er det ikke fordi du det ene sted bruger genus.asp og det andet sted bruger genus.php? :)
28. december 2005 - 02:12
#26
Hahah lol torsk Rasmus ..
28. december 2005 - 02:12
#27
Så det godt lige :P Lav lige et svar det er vel fortjent !
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! :)
28. december 2005 - 02:14
#29
Hehe iorden ;) Sov godt .. :)
Vi tilbyder markedets bedste kurser inden for webudvikling