Avatar billede Morten Nybegynder
24. februar 2008 - 16:04 Der er 15 kommentarer og
1 løsning

Udtræk til Multi Dim Array fra 2 tabeller

Hej

Jeg skal have noget data fra 2 tabeller ud i et multi dim array...

Array skal vel se ud sådan her når jeg er færdig:

Array[0] -> Design001
Array[0][0] -> type5
Array[0][1] -> Str8

Osv

data til Array 0 kommer fra min første tabel
og 0 -0 og 0-1 fra den anden tabel:

$design_results = mysql_query("SELECT * FROM MAIN_designs") or die("MYSQL ERROR: ".mysql_error());
while($design_row=mysql_fetch_array($design_results))
{
$DVarray[$i] = $design_row['navn'];

$variation_results = mysql_query("SELECT navn,url FROM MAIN_variationer WHERE design_ID = ".$design_row['ID']) or die("MYSQL ERROR: ".mysql_error());
    while($variation_row=mysql_fetch_array($variation_results))
    {
    $DVarray[$i][$j]= $variation_row['navn'];
                $j++;
            }
        $j=0;
        $i++;
    }
    echo "<pre>";

    print_r($DVarray);
    echo "</pre>";

Ovenstående er det jeg har prøvet men det virker ikke.. det vil sige jeg får fint ud i den første del [$i] dog overskrives et par karakterer....

HJÆLP
Avatar billede showsource Seniormester
24. februar 2008 - 17:56 #1
Vil du bruge id som nøgle?
Og prøv at putte en mysql_free_result($variation_results) ind efter din anden while
Avatar billede coderdk Praktikant
24. februar 2008 - 18:15 #2
Det kan du ikke. Du er nødt til at omstrukturere lidt:

Array[0][name] -> Design001
Array[0][info] ->
  Array[0] -> type5
  Array[1] -> Str8

Prøv:

$DVarray = array();
$design_results = mysql_query("SELECT * FROM MAIN_designs") or die("MYSQL ERROR: ".mysql_error());
while($design_row=mysql_fetch_array($design_results))
{
$DVarray[$i]['name'] = $design_row['navn'];

$variation_results = mysql_query("SELECT navn,url FROM MAIN_variationer WHERE design_ID = ".$design_row['ID']) or die("MYSQL ERROR: ".mysql_error());
    while($variation_row=mysql_fetch_array($variation_results))
    {
    $DVarray[$i]['info'][]= $variation_row['navn'];
            }
        $i++;
    }
    echo "<pre>";

    print_r($DVarray);
    echo "</pre>";
Avatar billede coderdk Praktikant
24. februar 2008 - 18:16 #3
while($variation_row=mysql_fetch_array($variation_results))
    {
    $DVarray[$i]['info'][]= $variation_row['navn'];
            }
        $i++;
    }

skal i øvrigt nok være:

    $DVarray[$i]['info'] = array();
    while($variation_row=mysql_fetch_array($variation_results))
    {
    $DVarray[$i]['info'][]= $variation_row['navn'];
            }
        $i++;
    }
Avatar billede Morten Nybegynder
24. februar 2008 - 22:18 #4
--->Coderdk

Nå det ser mere rigtigt ud, men - burde nok have skrevet dette i mit første indlæg ;O)

Jeg skal bruge det til et array for et javascritp som ser sådan her ud:

team = new Array(
    new Array(
        new Array("Dark", 'http://www.XXX.dk/index.php?tstyle=dark'),
        new Array("Light", 'http://www.XXX.dk/index.php?tstyle=light')
    ),

ahh.. kan godt se at det er noget helt andet end mit oprindelige spørgsmål - kan du hjælpe??????
Avatar billede Morten Nybegynder
24. februar 2008 - 22:22 #5
Sådan ser det færdige array ud:
team = new Array(
new Array(
new Array("Saku Koivu", 39482304),
new Array("Karl Dykhuis", 89092834)
),
new Array(
new Array("Mario Lemieux", 23840238),
new Array("Kevin Stevens", 29345423)
),
new Array(
new Array("Mario Lemieux", 23840238),
new Array("Jean-Sebastien Aubin", 39234923),
new Array("Kevin Stevens", 29345423)
),
new Array(
new Array("Patrick Lalime", 98203894),
new Array("Radek Bonk", 98234902)
)
);

Det bruges til at fylde en dropdownboks på baggrund af et valg i en anden dropdown boks - kan du hjælpe med at lave det array via PHP fra min mysql database...

Bemærm hvis der ikke er nogte at trække ud så skal der sættes null,

Håber du kan hjælpe..? Jeg lavede det tidligere hvor jeg bare nøjagtig med parenteser kommaer osv. fik lavet et array og så lave jeg bare en team = <?php echo .... men det virkede ikke ?
Avatar billede Morten Nybegynder
24. februar 2008 - 22:40 #6
Burde det sidst jeg beskriver egentlig ikke virker qva at php jo afvikles på serveren - burde browseren så ikke bare se det som noget jeg kunne have tastet - tror lige jeg vil prøve en gang mere og se om det var forkert syntaks eller.... men høre gerne hvis jeg er gal på den... ;O)
Avatar billede coderdk Praktikant
24. februar 2008 - 23:19 #7
Lyder som noget i stil med:

$DVarray = array();
$design_results = mysql_query("SELECT * FROM MAIN_designs") or die("MYSQL ERROR: ".mysql_error());
while($design_row=mysql_fetch_array($design_results))
{
$variation_results = mysql_query("SELECT navn,url FROM MAIN_variationer WHERE design_ID = ".$design_row['ID']) or die("MYSQL ERROR: ".mysql_error());
    while($variation_row=mysql_fetch_array($variation_results))
    {
    $DVarray[]= array( $variation_row['navn'], $variation_row['url'] );
            }
        $i++;
    }
    echo "<pre>";

    print_r($DVarray);
    echo "</pre>";

Bortset fra at jeg tvivler på at dit "url"-felt indeholder et tal? ;P
Avatar billede Morten Nybegynder
24. februar 2008 - 23:35 #8
hey Coderdk...

Det var som jeg nævnte sidst i mit indlæg at jeg ikke kunne forstå hvorfor jeg ikke bare kunne lave det i php og så lave en echo der ved javascriptet... det virker nu.. jeg må have haft et komma forkert eller ligende - men smid lige et svar for ulejligheden...... tak
Avatar billede coderdk Praktikant
25. februar 2008 - 00:04 #9
heheh ok, men tag hovedparten af pointene selv ;)
Avatar billede Morten Nybegynder
25. februar 2008 - 00:07 #10
nope det er ligemeget... ;O)
Avatar billede Morten Nybegynder
27. februar 2008 - 23:55 #11
Hey coderdk... hvis du stadig følger med på dette spørgsmål

Kan du ikke fortælle mig hvor den sætter det aktive valg...

Altså hvad der svare til <option selected="selected"> i det følgende javascipt:
<SCRIPT LANGUAGE="JavaScript">
<!-- Original:  Jerome Caron (jerome.caron@globetrotter.net) -->

<!-- Begin
<?php echo $JSarray; ?>
function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) {
var i, j;
var prompt;
// empty existing items
for (i = selectCtrl.options.length; i >= 0; i--) {
selectCtrl.options[i] = null;
}
prompt = (itemArray != null) ? goodPrompt : badPrompt;
if (prompt == null) {
j = 0;
}
else {
selectCtrl.options[0] = new Option(prompt);
j = 1;
}
if (itemArray != null) {
// add new items
for (i = 0; i < itemArray.length; i++) {
selectCtrl.options[j] = new Option(itemArray[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[i][1];
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
  }
}
//  End -->
</script>

Det er ikke i arrayet - her angives kun tekst og link - er der en af variablerne i scriptet der kan sættes til noget ved gennemløb - jeg fatter desvære næsten kun minus af javascript...
Avatar billede Morten Nybegynder
28. februar 2008 - 00:00 #12
må hellere forklare lidt mere... problemet er at man kan tilgå denne side uden at benytte mine to dropdown bokse (hvor scriptet herover styre nr. 2 som er baseret på valg i boks - og når jeg kommer fra en anden side så er der selvfølelig ikke fortaget et valg i den første boks - og selvklart bliver der så ikke fortaget noget valg som kan sætte boks 2 - så vil høre om ikke jeg kan indsætte en variable til at vælge det valg (som ikke er fortaget ;O) jeg tæller alle elementer i boks 1 i mit php script og jeg kan læse så meget af javasciptet så den vælger hvad boks 2 skal vise på baggrund af numret i boks 1

Er ovenstående forvirrende ??? looool
Avatar billede Morten Nybegynder
28. februar 2008 - 00:23 #13
Ovenståen er vist..........

Her er input boksen som køre scriptet det må jeg skulle have lagt ind i en eller anden onload måske i <body> - men kan du ikke hjælpe med variablerne:

<select name="inchoice" size="1" onchange= "fillSelectFromArray(this.form.Team, ((this.selectedIndex == -1) ? null : team[this.selectedIndex-1]));" class="select">

Har prøvet med dette - uden held:
onload="fillSelectFromArray(this.form.Team,<?php echo $numberSelected; ?>;"

hvor $numberSelected er numret på den valgte i rækkefølgen.. håber du forstå looooooooooooooooool
Avatar billede Morten Nybegynder
28. februar 2008 - 00:24 #14
og alt dette burde jo ligge i Javascript kategorien... kan du javascript? looool
Avatar billede coderdk Praktikant
28. februar 2008 - 08:13 #15
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;

sætter den til at vælge den første...
Avatar billede Morten Nybegynder
28. februar 2008 - 09:40 #16
Hey - okay - jeg fik nu løst det i nat men tak alligevel....
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