2017-11-09 2 views
-1

Ich versuche, dynamisch Admin-Seite meiner Website mit Abschnitten aus der Datenbank zu füllen.Rückgabe Array von PHP-Funktion gibt nur das erste Element

Das Problem ist, dass ich alle Abschnitte in der Datenbank hinzugefügt werden möchte, und um für mich einfacher zu sein, verwende ich eine Funktion.

Dieser Code druckt mir das erste Array-Element aus.

functions.php

<?php 
function fetchAdminSections ($user_id){ 
    global $pdo; 

    $get_sections = $pdo->prepare("SELECT `id`, `section_name`, `section_description` FROM `administration_sections` WHERE `admin_added_this` = :admin"); 
    $get_sections->execute([ 
     ':admin' => $user_id 
    ]); 

    while ($row = $get_sections->fetch(PDO::FETCH_ASSOC)){ 
     $sections = []; 

     $id = $row['id']; 
     $name = $row['section_name']; 
     $description = $row['section_description']; 
     $sections[$id]['section_name'] = $name; 
     $sections[$id]['section_description'] = $description; 
     return $sections; 
    } 
} 
?> 

index.php

<?php 
    include 'functions.php'; 

    $elements = fetchAdminSections($user_id); 
    print_r($elements); 
?> 

Was ich erhalte, ist:

Array ([1] => Array ([section_name] => test1 [section_description] => test)) 

einfach $row innenRückkehrgibt mir eine ähnliche Sache:

Array ([id] => 1 [section_name] => test1 [section_description] => test) 

Ich möchte alle Abschnitte erhalten, und eine Schleife durch sie!

+2

bewegen 'return $ Abschnitte;' nach Schleife – splash58

+1

Jedes Mal, wenn Sie Schleife initiieren Variable '$ sections' wieder was bedeutet, es ständig überschrieben wird. Verschieben Sie diese Zeile '$ sections = [];' außerhalb der Schleife. – Pascal

Antwort

2

Sie benötigen Array außerhalb der Schleife zu definieren und zurück nach der Schleife ... fertig ist

<?php 
function fetchAdminSections ($user_id){ 
    global $pdo; 

    $get_sections = $pdo->prepare("SELECT `id`, `section_name`, `section_description` FROM `administration_sections` WHERE `admin_added_this` = :admin"); 
    $get_sections->execute([ 
     ':admin' => $user_id 
    ]); 

    $sections = []; 
    while ($row = $get_sections->fetch(PDO::FETCH_ASSOC)){ 

     $id = $row['id']; 
     $name = $row['section_name']; 
     $description = $row['section_description']; 
     $sections[$id]['section_name'] = $name; 
     $sections[$id]['section_description'] = $description; 
    } 

    return $sections; 
} 
?> 
1

Sie müssen außerhalb der while-Schleife Ihre return-Anweisung setzen.

Wie es jetzt gemacht wird, kehrt es aus der While-Schleife im ersten Lauf zurück. Eine Funktion kann einen Wert nicht mehrfach zurückgeben. Bearbeiten Sie es so etwas wie dieses:

$sections = []; 
while ($row = $get_sections->fetch(PDO::FETCH_ASSOC)){ 
    $id = $row['id']; 
    $name = $row['section_name']; 
    $description = $row['section_description']; 
    $sections[$id]['section_name'] = $name; 
    $sections[$id]['section_description'] = $description; 

} 
return $sections; 
Verwandte Themen