PFZ.nl - PHP Community: Foreach vraag - Databases - Forum - PFZ.nl - PHP Community

Je kunt niet antwoorden op dit topic
#1 08-09-2010 21:08
Onderstaande functies genereren mijn werkbalken vanuit een database.
In de url zou ik graag het database veld werkbalk gebruiken ipv $werkbalknaam,
maar ik heb geen idee hoe ik dit zou kunnen doen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
function maak_lijst_zij($ouder){
        // Vereist de hoofdarray $werkbalken:
        global $werkbalken;

        // Start een geordende lijst:
        echo '<ul>';
        
        // Maak een lus voor elke onderliggende array:
        foreach ($ouder as $werkbalk_id => $werkbalknaam) {
    
            if(isset($_GET['id']) && is_numeric($_GET['id'])){
                $werkbalkid = '&id='.$_GET['id'].'';
            } else {
                $werkbalkid= '';
            }
            
               // Geef het item weer:
            echo "<li><a href=".strtolower('index.php?p='.$werkbalknaam.$werkbalkid)." title=".$werkbalknaam.">$werkbalknaam";

            // Controleer op subwerkbalken:
            if (isset($werkbalken[$werkbalk_id])) {
                maak_lijst_zij($swerkbalken[$werkbalk_id]);
            }
            
               echo '</a></li>';

        } //  <- Einde van lus FOREACH.

        echo '</ul>';
    }
        
    function maak_zij_balk($ouderid){
        //Benodigde bestanden includen
        include('pass.inc.php');

        $mysqli = new mysqli ($dbhost,$dbuser,$dbpass,$db);
        $resultaat = $mysqli->query("SELECT werkbalk_id, ouder_id, werkbalknaam, werkbalk FROM werkbalk WHERE zichtbaar=1 AND ouder_id='".$ouderid."' ORDER BY ouder_id ASC");

        // Database connectie sluiten 
        $mysqli->close();

        //Foutafhandeling als Query mislukt
        if(!$resultaat){
            sqlerrorhandler("(".mysql_errno().") ".mysql_error(), $sql, $_SERVER['PHP_SELF'], __LINE__);
        }
        
        // Initialiseer de opslagarray:
        $werkbalken = array();
    
        while (list($werkbalk_id, $ouder_id, $werkbalk) = mysqli_fetch_array($resultaat, MYSQLI_NUM)) {
    
            // Voeg toe aan de array:
            $werkbalken[$ouder_id][$werkbalk_id] = $werkbalk;
        }
    
        // Verzend het eerste element van de array
        // naar de functie maak_lijst():
        $this->maak_lijst_zij($werkbalken[$ouderid]);
    }
?>
Consultancy en webdevelopment @ http://www.pcwsolutions.nl

#2 08-09-2010 21:24
  • L de Vries
  • Groep: Verenigingsleden
  • Posts: 11
  • Actief sinds: 08-09-2010
in de while worden $wekbalk_id $ouder_id en $werkbalk opgehaald, waarbij $werkbalk word gevuld met werkbalknaam uit de database.
Je kan daar nog een extra variabele bij zetten, en die meegeven aan $werkbalken[$ouder_id][$werkbalk_id]

#3 09-09-2010 05:30
Goedemorgen
Ik heb nu dit, maar krijg het toch nog niet helemaal voor elkaar?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
function maak_lijst_zij($ouder){
        // Vereist de hoofdarray $werkbalken:
        global $werkbalken;

        // Start een geordende lijst:
        echo '<ul>';
        
        // Maak een lus voor elke onderliggende array:
        foreach ($ouder as $werkbalk_id => $werkbalknaam) {
    
            if(isset($_GET['id']) && is_numeric($_GET['id'])){
                $werkbalkid = '&id='.$_GET['id'].'';
            } else {
                $werkbalkid= '';
            }
            
               // Geef het item weer:
            echo "<li><a href=".strtolower('index.php?p='.$werkbalknaam.$werkbalkid)." title=".$werkbalknaam.">$werkbalknaam";

            // Controleer op subwerkbalken:
            if (isset($werkbalken[$werkbalk_id])) {
                maak_lijst_zij($swerkbalken[$werkbalk_id]);
            }
            
               echo '</a></li>';

        } //  <- Einde van lus FOREACH.

        echo '</ul>';
    }
        
    function maak_zij_balk($ouderid){
        //Benodigde bestanden includen
        include('pass.inc.php');

        $mysqli = new mysqli ($dbhost,$dbuser,$dbpass,$db);
        $resultaat = $mysqli->query("SELECT werkbalk_id, ouder_id, werkbalknaam, werkbalk FROM werkbalk WHERE zichtbaar=1 AND ouder_id='".$ouderid."' ORDER BY ouder_id ASC");

        // Database connectie sluiten 
        $mysqli->close();

        //Foutafhandeling als Query mislukt
        if(!$resultaat){
            sqlerrorhandler("(".mysql_errno().") ".mysql_error(), $sql, $_SERVER['PHP_SELF'], __LINE__);
        }
        
        // Initialiseer de opslagarray:
        $werkbalken = array();
    
        while (list($werkbalk_id, $ouder_id, $werkbalk, $werkbalknaam) = mysqli_fetch_array($resultaat, MYSQLI_NUM)) {
    
            // Voeg toe aan de array:
            $werkbalken[$ouder_id][$werkbalk_id][$werkbalknaam] = $werkbalk;
            print_r($werkbalken);
        }
    
        // Verzend het eerste element van de array
        // naar de functie maak_lijst():
        $this->maak_lijst_zij($werkbalken[$ouderid]);
    }
        
?>
Consultancy en webdevelopment @ http://www.pcwsolutions.nl

#4 10-09-2010 07:26
Na de While aanpassing heb ik ook nog onderstaande aangepast.
Tevens een voorbeeld van de array bijgevoegd.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[2][9] ['artikelbeheer'] = "Artikelbeheer";
$a[2][10]['nieuwsberichten'] = "Nieuwsberichten";
$a[2][11]['vgv'] = "Veel gestelde vragen";

// Start een geordende lijst:
        echo '<ul>';

            foreach ($ouder as $v1 => $n1) {
                foreach ($n1 as $v2 => $n2) {
                    foreach($n2 as $v3 => $n3){
                        // Geef het item weer:
                        echo '<li><a href="'.strtolower('index.php?p='.$v3.'&id='.$v1).'" title="'.$n3.'">'.$n3.'';
            
                           echo '</a></li>';

                    }//    <- Einde van lus FOREACH.    
                }//    <- Einde van lus FOREACH.
            } // <- Einde van lus FOREACH.

        echo '</ul>';
 

//sprint_r($a)
?>
Consultancy en webdevelopment @ http://www.pcwsolutions.nl


Inloggen wachtwoord vergeten? Aanmelden
ADSL – Telfort Internet – Ziggo Alles in 1