2015-05-13 3 views
1

Я пытаюсь получить конкретную информацию из базы данных и для каждого пользователя. Я хочу пропустить объект и получить определенную информацию (строку) из двух разных полей в базе данных. Каждый 2-мя полевой компилятор создаст ссылку для загрузки файла (этот файл будет находиться внутри папки проекта)PHP Object loop

Мне нужно пройти через базу данных, получить поле и отобразить его, конечно, база данных будет содержать много файлов-ссылок ,

Здесь структуры базы данных:

  • file_id (интермедиат)
  • имя_файла (имя)
  • file_extension (PDF)
  • user_id (интермедиат)

Вот файл класса для получения полной информации от пользователя:

public $file = array(); 
    public $pdo = ''; 

    public function __construct($id) 
    { 
     $this->pdo = new PDO('mysql:host=127.0.0.1;dbname=****', '***', '***', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
     $sql = 'SELECT `name`, `file_name`, `file_extention` FROM `users`' 
       .'JOIN `file`' 
       .'ON users.`user_id` = file.`user_id`' 
       .'WHERE users.`user_id` = :id'; 
     $stmt = $this->pdo->prepare($sql); 
     $stmt->execute(array(':id' => $id)); 
     while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      $this->file[] = $row; 
     } 
    } 

Вот вид класса дисплей:

public function displayFile($link) 
    { 
    $output = ''; 
    $output .= '<p><a href="#"><i class="fa fa-folder"></i>&nbsp&nbsp'. $link.'</a></p><br />'; 
    return $output; 
    } 

Мне нужно, чтобы получить ссылку, как:

$link = [file_name].'.'.[file_extension]; 

Окончательный результат для общественности должны быть:

  • Ссылка на файл 01
  • ссылка на файл 02
  • Ссылка на файл 03
  • и т.д ....
+1

Не могли бы вы уточнить, где вы застряли, пожалуйста? Вы сами пишете этот код или кто-то передал его вам? – MonkeyZeus

+0

Я сам написал этот код. Когда я создаю ссылку, это всегда занимает последнее звено и пропускает предыдущий. – Nicks

ответ

1

Вы почти получили, внутри цикла, вы создаете ссылку, как это:

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
    ... 
    $link = $row['file_name'] . '.' . $row['file_extension']; 

    // then you can store it in an array: 
    $links[] = $link; 
    // or call the display function directly: 
    $output .= displayFile($link); 
    ... 
} 
0

Вместо добавления строки в массив , создайте ссылку и добавьте ее.

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
       $this->file[] = $row['file_name'].'.'.$row['file_extension']; 
    } 
0

Рабочий код упаковывают кого-то нужно: Благодаря Honza Haering

public function __construct($id) 

{ 
    public $file = array(); 
    public $pdo = ''; 
    $this->pdo = new PDO('mysql:host=127.0.0.1;dbname=project001', 'root', '', array(PDO::ATTR_ERRMODE => PDO:: 
ERRMODE_EXCEPTION)); 
    $sql = 'SELECT `name`, `file_name`, `file_extention` FROM `users`' 
      .'JOIN `file`' 
      .'ON users.`user_id` = file.`user_id`' 
      .'WHERE users.`user_id` = :id'; 
    $stmt = $this->pdo->prepare($sql); 
    $stmt->execute(array(':id' => $id)); 
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     $this->file[] = $row['file_name'] . '.' . $row['file_extention']; 
    } 
} 
public function displayFile() 
{ 
    $link = $this->file; 
    $output = ''; 
    foreach($link as $row) { 
    $output .= '<p><a href="#"><i class="fa fa-folder"></i>&nbsp&nbsp'. $row.'</a></p><br />'; 
    } 
    return $output; 
}