Avatar billede krummel Juniormester
27. juli 2006 - 23:48 Der er 5 kommentarer og
1 løsning

Array og udtræk fra db

Bruger php og mysql. Hvordan for jeg data ud af en db som afhænger af en array. Fx hvis jeg vælger 5, 10 og 20 i denne multiple select boks.

<form method="GET" action="test.php">
<select MULTIPLE SIZE="4" NAME="Pk[]">
<OPTION value="0">Alle</OPTION>
<OPTION value="1">5</OPTION>
<OPTION value="2">10</OPTION>
<OPTION value="3">20</OPTION>
<OPTION value="4">30</OPTION>
</select> 
<input type='submit' border='0' value='Stem'>
</form>

Hvordan skal sql sætningen så se ud? Dvs. den skal vise alle ID=5, 10 og 20.

SELECT ID from tabel where ID=$_GET[Pk]
Avatar billede erikjacobsen Ekspert
27. juli 2006 - 23:55 #1
$sql="SELECT ID from tabel where ID in (".join(",",$_GET['Pk']).")";
Avatar billede pidgeot Nybegynder
27. juli 2006 - 23:57 #2
Hvis det er tal:
$sql='SELECT ID FROM tabel';
if (!empty($_GET['Pk']) && !in_array("0",$_GET['Pk']))
  $sql.=' WHERE ID IN ('.implode(',',$_GET['Pk']).')';

Hvis det er tekst:
$sql='SELECT ID FROM tabel';
if (!empty($_GET['Pk']) && !in_array("0",$_GET['Pk']))
  $sql.=" WHERE ID IN ('".implode("','",$_GET['Pk'])."')";

Hvis ingen af dine options bliver valgt, er det lavet så den vil hente alle som standard. Du kan evt. udelade den option fra din <select>, i hvilket tilfælde if'en blot skal lyde if (!empty($_GET['Pk'])).
Avatar billede krummel Juniormester
28. juli 2006 - 09:03 #3
Jeg kan ikke få det til at virke, men det er nok fordi jeg ikke kan finde ud af at implementere det korrekt - det er muligvis " og ' der driller? Kan jeg få jer til at indsætte jeres liner i følgende:?

<?
$sqlpk = mysql_query("select ID from tabel    ......    " , $db);

while($myrow = mysql_fetch_assoc($sqlpk)) {
?>
<? echo $myrow[ID]; ?>
}

Tusind tak
Avatar billede pidgeot Nybegynder
28. juli 2006 - 10:53 #4
Du *skal* bruge din querytext i en variabel, fordi du skal gøre to forskellige ting alt afhængigt af hvad der er valgt:

<?
$sql='SELECT ID FROM tabel';
if (!empty($_GET['Pk']) && !in_array("0",$_GET['Pk']))
  $sql.=' WHERE ID IN ('.implode(',',$_GET['Pk']).')';
$sqlpk = mysql_query($sql, $db);

while($myrow = mysql_fetch_assoc($sqlpk)) {
?>
<? echo $myrow[ID]; ?>
}
Avatar billede krummel Juniormester
25. august 2006 - 18:08 #5
Tak for at bruge tid på det her - svar så du kan få point.
Avatar billede pidgeot Nybegynder
25. august 2006 - 18:42 #6
Værsgo :)
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