15. september 2005 - 21:10
Der er
24 kommentarer og 2 løsninger
Lave SQL søgening
Hej. Hvordan ville I lave et simpelt PHP script som søgede efter ord i angivet MySql tabel? Har tænkt meget over det, og søgt på Google, men kan sku ingenting finde :S Tak for hjælpen /Bente Fiber
Annonceindlæg fra inspirit365
15. september 2005 - 21:12
#1
meget simpelt, så lav en form der hedder "search" og send den som f.eks. GET. <? //connect $q = mysql_query("SELECT * FROM tabel WHERE tekst LIKE '%".$_GET['search']."' ORDER BY id DESC") or die(mysql_error()); while($row = mysql_fetch_array($q)) { echo $row['tekst']; } ?>
15. september 2005 - 21:13
#2
$sWord = "nisse"; $sql = "SELECT * FROM mit_tabel_navn WHERE mit_kollonne_navn LIKE '%".$sWord."%'"; $query = ...osv
15. september 2005 - 21:15
#3
Cool... jeg siger tak mange gange... #JAW vil du ikke have nogle point??
15. september 2005 - 21:17
#4
Det vil jeg da selvfølgelig gerne :) Og jeg bliver nu ikke sur, hvis du tager lidt af det tilbage igen - 200 er meget! Og selv mange tak...
15. september 2005 - 21:20
#5
Point er ingenting for mig herinde... :) Igen, tak :)
15. september 2005 - 21:22
#6
thx
15. september 2005 - 21:29
#7
Kan ikke helt få den til at virke,den viser bare dem jeg har i rækken. Søgningen har slet ingen påvirkning echo '<table align="center" width="80%" class="tabel"><form method="post" action="?do=search"> <td width="15%"><td width="100">Søgeord: </td><td width="200"><input type="text" name="search"></td><td><input type="submit" value="Søg"></td><td width="15%"></td></form></table>'; if($_GET['do'] == search) { $hostname = "localhost"; $user = "enetonline"; $pass = "123456"; $database = "bites"; $connection = "localhost"; $connection = mysql_connect($hostname, $user, $pass) or die(mysql_error()); $db = mysql_select_db($database, $connection) or die(mysql_error()); //connect $q = mysql_query("SELECT * FROM varer WHERE navn LIKE '%".$_GET['search']."' ORDER BY id DESC") or die(mysql_error()); while($row = mysql_fetch_array($q)) { echo '<table align="center" width="80%" class="tabel"><td>'.$row['navn'].'</td></table>'; } }
15. september 2005 - 21:30
#8
Skift $_GET['search'] ud med $_POST['search']
15. september 2005 - 21:31
#9
Cool.. jeg takker :)
15. september 2005 - 21:31
#10
Selv tak. Og så bør man jo ikke acceptere svaret, før man har fået hvad man vil :) Og hvis jeg virkelig skal pive lidt, så bør det også gives til den løsning der er først og meste korret, eller den du bruger...
15. september 2005 - 21:36
#11
Sorry mester, er ikke så meget in- mht det med point - bruger kun forummet til at få hjælp :) Men det skal jeg huske, og igen.. TAK! Hehe..
15. september 2005 - 21:43
#12
Hvad gør man hvis den ikke skal søge på 1 tabel, men søge på ALLE tabellerne?
15. september 2005 - 21:46
#13
vær lige opmærksom på at sqlinjection kan forekomme her eller en ondsindet bruger kan nappe følsomme oplysninger om dit miljø ved at tvinge fejl igennem. Du bør noget ala følgende... function _GET( $sVar ){ $returnVal = !empty($_GET[$sVar]) ? htmlspecialchars($_GET[$sVar], ENT_QUOTES) : null; return $returnVal; } for at sikre at der ikke sendes farlige tegn med ned i db´en
15. september 2005 - 21:46
#14
SELECT * FROM varer, min_kollonne2, min_kollonne3, min_kollonne4
15. september 2005 - 21:47
#15
nårh nej se lige bort fra den sidste *sorry*
15. september 2005 - 21:49
#16
#horsmark Kan man bruge * varer, kolonne2 osv ?
15. september 2005 - 21:50
#17
#hormark Kan heller ej få din anti injection script til at virke...
15. september 2005 - 21:56
#18
mht til anti injection script så istedet for at skrive $_GET['search'] skriver du _GET('search')
15. september 2005 - 21:58
#19
Har lavet min lille egen: Men er den sikker nok? $search = addslashes($_POST['search']); //connect $q = mysql_query("SELECT * FROM varer WHERE navn LIKE '%$search' ORDER BY id DESC") or die(mysql_error());
15. september 2005 - 21:59
#20
mysql_real_escape_string($_POST['search']);
15. september 2005 - 21:59
#21
mht til søgning over flere kollonner så ja. SELECT * FROM tabel WHERE (kollonne1 LIKE '%kriterie%') OR (kollonne2 LIKE '%kriterie%') OR (kollonne3 LIKE '%kriterie%') ORDER BY min_tabels_unikke_id ASC
15. september 2005 - 22:01
#22
jaw>> mht til post værdier så er det også relevant mange andre steder feks. iforb med form input
15. september 2005 - 22:02
#23
#Jaw Hvad er forskellen på $search = addslashes($_POST['search']); og $search = mysql_real_escape_string($_POST['search']); --- #Horsmak Mange mange tak, jeg skylder jer virkelig en kold bajer ;)
15. september 2005 - 22:06
#24
Det forstod jeg ikke lige horsmark?! Og bete_fiber, hvis du vil søge i flere tabeller, så kan det f.eks. være således: SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.tekst LIKE '%".$search."%' OR tabel2 LIKE '%".$search."%' ORDER BY id DESC Måske fucker det, er rimelig træt :)
15. september 2005 - 22:08
#25
Selvf.: WHERE tabel1.tekst LIKE '%".$search."%' OR tabel2.tekst LIKE '%".$search."%'
15. september 2005 - 22:08
#26
#Jaw.. Takker, har fået det til at virke :) Mange tak..
Vi tilbyder markedets bedste kurser inden for webudvikling