26. februar 2008 - 19:19
Der er
8 kommentarer og 1 løsning
Dynamisk sqlsætning
Hej eksperter. Jeg har det problem at jeg ud fra et array skal sammensætte en søgning i min MySQL database. Rækkerne i tabellen har flg. navne: 1,2,3,4,5 osv.. - Den skal søge efter samme key i dem alle. Men hvordan skal jeg sammensætte sqlstrengen så det kommer til at passe? Mit nuværende ser nogenlunde sådan ud: $sql = "SELECT * FROM `" . _MYSQl_DATASTORE_TABLE . "` WHERE"; efter det skal jeg have sat flg. ind: "`$look` LIKE '%" . $key . "%'" eller "OR `$look` LIKE '%" . $key . "%'" Den skal selv finde ud af hvilken der passer ind hvor, og hvor mange gange det skal gentages, samt hvad $look skal indeholde, ud fra et array der bliver bygget med en select der ser nogenlunde sådan ud: <select name="area[]" multiple> <?php $column_names = mysql_query(select......); while($r = mysql_fetch_array($column_names)) { ?> <option value="<?=$id?>"><?=$name?></option> <?php } ?> </select> Håber jeg har beskrevet problemet godt nok, ellers må i spørge ind til det :)
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
26. februar 2008 - 21:45
#1
Kan du bruge et array? A la dette: $where = array(); $where[] = "`$look1` LIKE '%" . $key1 . "%'"; $where[] = "`$look2` LIKE '%" . $key2 . "%'"; $where[] = "`$look3` LIKE '%" . $key3 . "%'"; $where = implode( " OR ", $where );
26. februar 2008 - 22:06
#2
Desværre.. For jeg ved jo ligenetop ikke hvor mange gange jeg skal køre det igennem ..
26. februar 2008 - 22:10
#3
Noget a'la' <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <select name="selectname[]" multiple> <option value="1">valg 1</option> <option value="2">Valg 2</option> <option value="3">Valg 3</option> <option value="4">Valg 4</option> </select> <input type="text" name="seek"> <input type="submit"> <br> <?php if(isset($_POST["selectname"]) && is_array($_POST["selectname"])) { $antal = count($_POST["selectname"]); $sql = "SELECT * FROM `tabel` WHERE "; $a = 1; foreach($_POST["selectname"] as $key) { $sql .="`". $key ."` LIKE '%". $_POST["seek"] ."%'"; if($a < $antal) { $sql .=", or "; } $a++; } echo $sql; } ?>
26. februar 2008 - 23:11
#4
Tusind tak skal du have!.. Det var faktisk meget mere simpelt end jeg havde regnet med.. Smid et svar og du skal få points :)
26. februar 2008 - 23:30
#5
ingen point, ellers tak
26. februar 2008 - 23:49
#6
Jamen, jeg siger mange tak så :)
27. februar 2008 - 00:41
#7
Det var så også det jeg mente ;P <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <select name="selectname[]" multiple> <option value="1">valg 1</option> <option value="2">Valg 2</option> <option value="3">Valg 3</option> <option value="4">Valg 4</option> </select> <input type="text" name="seek"> <input type="submit"> <br> <?php if(isset($_POST["selectname"]) && is_array($_POST["selectname"])) { $sql = "SELECT * FROM `tabel` WHERE "; $where = array(); foreach($_POST["selectname"] as $key) { $where[] = "`". $key ."` LIKE '%". $_POST["seek"] ."%'"; } $where = implode( " OR ", $where ); echo $sql . $where; } Men lad nu det ligge ;)
27. februar 2008 - 06:59
#8
Ah.. Sorry.. Forstod åbenbart ikke lige dit eksempel så.. hehe..
27. februar 2008 - 08:08
#9
Jeg mente sgu nok der var noget "bøf" med det OR ! :O)
Vi tilbyder markedets bedste kurser inden for webudvikling