Avatar billede kren1000 Nybegynder
02. april 2008 - 20:35 Der er 5 kommentarer og
1 løsning

Jeg forsøger at oprettet et array basseret på et database udtræk.

$sql10 = "SELECT produktId FROM `produkt` WHERE aktiv = '1'";
$result10 = mysql_query($sql10);
$values = array();

while ($arr10 = mysql_fetch_array($result10)){

$value = $arr10['produktId'];
$values[] = $value;
}

Jeg forsøger at oprettet et array basseret på et database udtræk, hver runde i whileløkken skulle meget gerne give en værdi mere.

arrayet skal senere benyttes i et andet udtræk, og det er derfor vigtigt jeg får en kommesepereret liste ud. Udtrækket er testet med værdier fra databasen, så det burde virke - jeg mangler blot kommalisten fra det første udtræk - er der nogen som kan hjælpe?

Kode
$result = mysql_query ("SELECT * FROM produktikat WHERE kategoriId = ".$_GET['subsubkat']." && produktId IN (',' ,$values) LIMIT $vis_fra, $pr_side") or die(mysql_error());

Eksempel på test direkte i databasen med fire værdier
$result = mysql_query ("SELECT * FROM produktikat WHERE kategoriId = ".$_GET['subsubkat']." && produktId IN (',' ,"25", 26, 28, 35) LIMIT $vis_fra, $pr_side") or die(mysql_error());
Avatar billede coderdk Praktikant
02. april 2008 - 22:22 #1
Denne burde sætte $values til en kommasepareret liste, og "0" hvis der ingen var...

sql10 = "SELECT produktId FROM `produkt` WHERE aktiv = '1'";
$result10 = mysql_query($sql10);
$values = array();
while ($arr10 = mysql_fetch_array($result10))
{
  $values[] = $arr10['produktId'];
}
if ( count( $values ) > 0 )
{
    $values = implode( ",", $values );
}
else
{
  $values = '0';
}
Avatar billede showsource Seniormester
02. april 2008 - 22:23 #2
Det kan vist laves på mange måder.
Men for nu at holde sig til det du spørger om:

$values = array();
while ($arr10 = mysql_fetch_array($result10)){
$values[] = $arr10['produktId'];
}

og så for at lave en "kommas-liste":

$str = implode(", ", $values);
Avatar billede coderdk Praktikant
02. april 2008 - 22:24 #3
Ellers ser det ud som om du bare kan bruge én SELECT med en INNER JOIN:

SELECT pi.* FROM produktikat AS ik INNER JOIN produkt AS p ON pi.produktId = p.produktId WHERE p.aktiv = 1
Avatar billede coderdk Praktikant
02. april 2008 - 22:24 #4
produktikat AS ik

skulle naturligvis have været

produktikat AS pi
Avatar billede kren1000 Nybegynder
03. april 2008 - 10:01 #5
Ok, det er fedt, virker perfekt coderdk, jeg takker mange gange for hjælpen, så hvis duy smider et svar er den i vinkel.

Også tak for input, showsource, og du har ret i at det sikkert kan gøres på mange måder:).
Avatar billede coderdk Praktikant
03. april 2008 - 12:34 #6
Ok :)
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

IT-JOB

Politiets Efterretningstjeneste

Bliv IT-supporter i PET's IT Servicedesk

Netcompany A/S

Network Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink

Netcompany A/S

Test Consultant