Mehrdimensionales Array aus DB füllen

Dieses Thema Mehrdimensionales Array aus DB füllen im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von wibni, 21. Apr. 2005.

Thema: Mehrdimensionales Array aus DB füllen Hallo Forum, ich möchte ein mehrdimensionales Array aus einer DB heraus füllen um mir danach die Werte in 2...

  1. Hallo Forum,

    ich möchte ein mehrdimensionales Array aus einer DB heraus füllen um mir danach die Werte in 2 Dropdownboxen anzeigen lassen zu können.

    Das Array hat z.B. diese Einträge - hier mal als statisches Bsp.:
    $arr_db = array(
    Accounting => array(Other Accts,System Dev),
    Admin => array(Meetings,Other Admin,Reception),
    Engineering => array(Other Engineering,Sales Support),
    HR => array(Other HR),);

    Das ergibt:
    Array ( [Accounting] => Array ( [0] => Other Accts [1] => System Dev ) [Admin] => Array ( [0] => Meetings [1] => Other Admin [2] => Reception ) [Engineering] => Array ( [0] => Other Engineering [1] => Sales Support ) [HR] => Array ( [0] => Other HR ) )

    (sorry, die 0 bei Feld 0 will er net anzeigen hier)

    In der DB habe ich 2 Spalten welche ungefähr so aussehen:
    spalte1 | spalte2
    Accounting | Other Accts
    Accounting | System Dev
    Admin | Meetings
    Admin | Other Admin

    Wenn ich also in der ersten Box Admin wähle, sollen in der anderen Box Meeings, Other Admin und Reception erscheinen.
    Das mache ich sicher in Javascript. Aber zunächst brauche ich erstmal hilfe das
    mehrdimensionale Array dynamisch zu füllen.

    lG,
    Pia
     
  2. Code:
    <?php
    $sql = SELECT DISTINCT spalte1 FROM test_tbl ORDER by spalte1 ASC;
    $res = mysql_query($sql);
    while($row = mysql_fetch_row($res)) {
    	$sql = SELECT spalte2 FROM test_tbl WHERE spalte1='. $row[0] .' ORDER by spalte2;
    	$res2 = mysql_query($sql);
    	while($row2 = mysql_fetch_row($res2)) {
    		$arr[$row[0]][] = $row2[0];
    	}
    }
    print_r($arr);
    ?>
    
    Ergebnis:
    Du musst nur die MySQL-Befehle gegen ODBC-Befehle austauschen. (Du hattest doch ne ACCESS-DB. Oder ???)

    gruss conny

    PS:
    Schon mal daran gedacht ADODB einzusetzen ??? Die kann auch mit einer ACCES-DB kommunizieren ;)
    http://adodb.sourceforge.net/#download
     
  3. Ok. Danke. Habe es so.
    es fehlen nur die Werte aus der zweiten Abfrage. Wieviele es sind, weiss er ja offensichtlich, da die Anzahl der Indexe unterschiedlich sind.

    $result_phasecodes = odbc_exec( $con, SELECT DISTINCT phasecode FROM activitycodes ORDER by phasecode ASC);

    while( odbc_fetch_row( $result_phasecodes ) ) {
    $phase = odbc_result( $result_phasecodes, 1 );
    $result_activitycodes = odbc_exec( $con,SELECT activitycode FROM
    activityCodes WHERE phasecode ='. $phase .' ORDER BY activitycode);

    while( odbc_fetch_row( $result_activitycodes ) ) {
    $activity = odbc_result( $result_activitycodes, 1 );

    $arr[$phase][] = $$activity;
    }
    }

    Ich erhalte:
    Array ( [Accounting] => Array ( [0] => [1] => ) [Admin] => Array ( [0] => [1] => [2] => ) [Engineering] => Array ( [0] => [1] => ) [HR] => Array ( [0] => )


    An ADO hab ich schon gedacht. Aber das ist jetzt glaube ich die letzte Herausforderung mit Access und da lohnt sich des net mehr alles umzuschreiben. Ausserdem schiesst mir bei ADO imemr der Apache ab und ich stände ja dann immer noch vor meinem Array-Prolem oder?
     
  4. Sorry mein Fehler!!!
    Habe zwei $ vor dem $activity.

    Ich Dussel!
    Der Dank gebührt Conny!

    Nun muss ich des nur noch in Dropdownboxen unterbringen.
    Bin sicher ich melde mich wieder...
    ;)
     
  5. *hüstel*

    ADO und ADODB haben genausoviel gemeinsam wie Weinbergschnecken und Windmühlen ;) ;D ;D


    gruss conny
     
  6. Ich glaube, da war noch zu wenig Kaffee im Spiel ;D ;D

    Die Sache geht doch viel einfacher ;D

    Code:
    <?php
    $sql = SELECT * FROM test_tbl ORDER by spalte1, spalte2 ASC;
    $res = mysql_query($sql);
    while($row = mysql_fetch_row($res)) {
    	$arr[$row[0]][] = $row[1];
    }
    
    ?>
    
    gruss conny
     
  7. jepp.
    ich quäl mich derweil wieder mit JS rum. mit dem steh ich echt auf kriegsfuss.
    hab dieses statische beispiel und versuche das nun in die selectboxen umzusetzen.
    $search_value ist dabei die getroffene auswahl in der ersten selectbox. also der value oder der index dieser box (sind gleich)
    mit der foreach-schleife lasse ich mir die werte des arrays ausgeben, welche zu dem $search_value gehören.

    $search_value = Admin;
    foreach ($arr_activity as $key => $row)
    {
    if ($key == $search_value)
    {
    foreach ($arr_activity[$key] as $cell)
    {
    echo <p>.$cell.<br>;
    }
    }
    }

    und nun wieder dieses JS!!!
    ändere ich 1.dropdownbox, habe ich meinen $search_value und dieser soll mir die resultierenden werte in der 2.dropdownbox anzeigen.

    ich glaub mir fehlt hier ne windung.... :-[
     
  8. Code:
    <script language=javascript type=text/javascript>
    // Object finden
    function MM_findObj(n, d) { //v4.01
     var p,i,x; if(!d) d=document; if((p=n.indexOf(?))>0&&parent.frames.length) {
     d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
     if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
     for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
     if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    
    function func1(f1, f2) {
     dat1 = f1;
     dat2 = MM_findObj(f2);
     opt = MM_findObj(dat1.value);
     
     var l = dat2.length;
     var params = opt.value.split(;);
     var x=0;
     var i=0;
     
     while(x < l) {
    	dat2.options[0] = null;
    	++x;
     }
     
     while(i < params.length) {
    	var option = new Option(params[i], params[i]);
        dat2.options.add(option);
    	++i;
     }
    }
    </script>
    
    
    <?php
    $con = mysql_connect(localhost,xxxx,xxxx);
    mysql_select_db(test,$con);
    $sql = SELECT * FROM test_tbl ORDER by spalte1, spalte2 ASC;
    $res = mysql_query($sql);
    while($row = mysql_fetch_row($res)) {
    	$arr[$row[0]][] = $row[1];
    }
    
    $hidden = ;
    foreach($arr as $key => $val) {
    	$opt .= <option value='.$key.'>.$key.</option>;
    	$temp = ;
    	for($i = 0; $i < count($val); $i++) {
    		$temp .= $val[$i].;; 
    	}
    	$temp = ereg_replace(;$,, $temp);
    	$hidden .=-><input type=hidden name='.$key.' value='.$temp.'>';
    }
    ?>
    
    <form action=datum.php method=post name=form1>
     <?php echo $hidden; ?>
     <select name=dat1 onChange=func1(this,->dat2') style=width:100 >
      <?php echo $opt; ?>
     </select> 
     <select name=dat2 style=width:100 ></select>
    </form>
    
    ;D ;D

    gruss conny
     
  9. Thanks mate!
    mal ausprobieren.
    Aber wie ich Dich kenne, laeuft es einwandfrei....

    C ya
     
  10. Hi Conny,

    ....und natuerlich funzt Dein Beispiel.
    Ist es auch moeglich in der Dropdownbox dat2 als ersten Wert immer alles auszugeben. und danach erst die werte aus dem array?

    habe mal so angefangen aber nur fehler kassiert.

    var i=0;
    while(i < params.length ) {
    if (i=0){
    var option = new Option(all Activities, first);
    activity.options.add(option);
    }

    option .= new Option(params, params);
    activity.options.add(option);
    ++i;
    }
     
Die Seite wird geladen...

Mehrdimensionales Array aus DB füllen - Ähnliche Themen

Forum Datum
Java- mehrdimensionales Array sortieren Webentwicklung, Hosting & Programmierung 26. Juni 2005
mehrdimensionales array ausgeben (php) Webentwicklung, Hosting & Programmierung 14. Juni 2003
php Array mit Rijndael verschlüsseln Windows XP Forum 22. Nov. 2013
HP Smart Array e200 Windows XP Forum 10. Juli 2009
Prozessoewechsel / & Raidarray umbauen Hardware 24. Nov. 2007