[PHP + JS] Multidemensionale associatieve arrays *

Pagina: 1
Acties:

  • oogapp0ltje
  • Registratie: Januari 2001
  • Niet online
Ik wil in PHP javascript code genereren die een multidimensionale associatieve array maakt waarin de categorie naam in de eerste dimensie moet fungeren als key, de key van de tweede dimensie stelt het aantal producten in die categorie voor, key 0 en 1 van de derde dimensie bevatten het product id en de product naam die beiden uit de database gehaald worden.
Tijdens het executen van het script krijg ik geen error terug (JSP error debugging werkt hier niet dus ik heb geen benul van welke error er teruggegeven word).
Het probleem is dat de loops wel werken als ik $x vervang door een 1, maar zodra ik deze array dynamisch wil laten vullen werkt het niet :?.

Dit is een van mijn eerste scripts in javascript en ik ben van mening dat er echt veel te wensen over laat aan deze taal, vooral wat betreft het werken met arrays en error debugging (want die was al niet om over naar huis te schrijven).

ps. er zit een typo in het script, catagorie ipv. categorie maar deze typo maakt niet uit aangezien dit geen effect heeft op het werken van het script.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        echo "<script language=\"javascript\">\n";
        $qryobjCat=$objDB->mExecute("SELECT id, naam FROM catagorie WHERE hidden != 1");
        $iNmbrCat=mysql_num_rows($qryobjCat);

        echo "  var items=new Array($iNmbrCat);\n";
        
        $y=0;
        while($arrCat=mysql_fetch_assoc($qryobjCat)) {
             $x=0;

             $qryobjProd=$objDB->mExecute("SELECT * FROM producten WHERE catagorie={$arrCat['id']}");
             $iNmbrProd=mysql_num_rows($qryobjProd);

             echo "  \nitems[\"{$arrCat['naam']}\"]=new Array($iNmbrProd, 1);\n";
             while($arrProd=mysql_fetch_assoc($qryobjProd)) {
                echo "  items[\"{$arrCat['naam']}\"][$x][0]={$arrProd['id']};\n";
                echo "  items[\"{$arrCat['naam']}\"][$x][1]='" . addslashes(htmlspecialchars($arrProd['naam'])) . "';\n\n";
                
                $x++;
             }
             $y++;
        }

        echo "</script>\n";

[ Voor 8% gewijzigd door oogapp0ltje op 08-08-2003 11:41 ]

| To acknowledge what is known as known and what is not known as known is knowledge. |


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

PHP en JSP, interessante combinatie, je bedoelt waarschijnlijk PHP en Javascript?

Who is John Galt?


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:45

mulder

ik spuug op het trottoir

3e dimensie maak je niet aan. Maar je moet het gegenereerde javascript eens posten, dat is wat duidelijker.

en naar W&G dan denk ik

oogjes open, snaveltjes dicht


  • oogapp0ltje
  • Registratie: Januari 2001
  • Niet online
justmental: met JSP bedoelde ik idd javascript ;).

don facundo:
het klopt dat ik de 3e dimensie niet aanmaak, dat zou naar mijn mening erg omslachtig zijn en keiveel werk. de array benader ik echter wel als een 3 dimensionale array.

hier is een stukje van de output van de code die het script genereert.
code:
1
2
3
4
5
6
7
8
9
10
11
var items=new Array(28);   //28 product categoriën in de 1e dimensie
  
items["Moederborden"]=new Array(30, 1);   //30 producten in de 2e dimensie van 'Moederborden'
  items["Moederborden"][0][0]=7;
  items["Moederborden"][0][1]='EPOX 8KTA3L+ 100 / 133MHZ DURON / TB / X';

  items["Moederborden"][1][0]=23;
  items["Moederborden"][1][1]='USB CONNECTOR VOOR EPOX M/B';

  items["Moederborden"][2][0]=24;
  items["Moederborden"][2][1]='EPOX P80P PCI DIAGNOSE KAART';


Het genereren van de code werkt wel als ik de tweede dimensie niet laat ophogen en op 0 of 1 laat staan.

alvast bedankt voor jullie commentaar, ik weet niet of dit de meest gepaste categorie is voor deze topic, het betreft PHP, javascript, en array's dus dit leek mij de juiste categorie omdat het programmeerwerk betreft dat bedoeld is voor een website.

| To acknowledge what is known as known and what is not known as known is knowledge. |


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Javascript hoort idd in W&G :)
moved dus.



Zonder de foutmelding in Javascript moeten we de kristallen bollen van stal halen. Ik heb 'm thuis laten liggen, dus het liefst post je gewoon even de error ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:11

crisp

Devver

Pixelated

Zo maak je in JS multi-dimensionale arrays:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
var items=new Array();   // aantal hoeft niet, zeker niet doen bij associatieve arrays!
  
items['Moederborden']=new Array();   // hier dus ook niet nodig, maar mag wel - echter maar 1 argument, namelijk het aantal items in de array, dus geen ,1

  items['Moederborden'][0]=new Array();  // ja, dat moet voor elk nieuw level
    items['Moederborden'][0][0]=7;
    items['Moederborden'][0][1]='EPOX 8KTA3L+ 100 / 133MHZ DURON / TB / X';

  items['Moederborden'][1]=new Array();  // nog een keer dus
    items['Moederborden'][1][0]=23;
    items['Moederborden'][1][1]='USB CONNECTOR VOOR EPOX M/B';

  items['Moederborden'][2]=[24, 'EPOX P80P PCI DIAGNOSE KAART'];  // of verkort mbv een constructor

[ Voor 7% gewijzigd door crisp op 08-08-2003 13:43 ]

Intentionally left blank

Pagina: 1