2015-10-18 3 views
-2

У меня есть файл с 20 фотографиями художников страны и текстовый файл со своими веб-сайтами. Я пытаюсь отобразить эти данные в таблице столбцов 4 строки 5, используя PHP.Отображение данных из массивов в динамической таблице PHP

попытки использовать цикл Еогеаспа, который выполняет итерацию на каждые 5 элементов в массиве (для загрузки каждой строки по одному)

foreach(array_chunk($CountryArtists, 5, true) as $Value) { 
    <table> 
     <tr><td> $CountryArtists[$Value] $ArtistImages[$Value]</td> 
    <td> $CountryArtists[$Value] $ArtistImages[$Value]</td> 
    <td> $CountryArtists[$Value] $ArtistImages[$Value]</td> 
    <td> $CountryArtists[$Value] $ArtistImages[$Value]</td> 
    <td> $CountryArtists[$Value] $ArtistImages[$Value]</td></tr> 
</table> 

Ive пытается выяснить, как загрузить изображения в массив, но не повезло. Я начинаю думать, что я должен поместить ссылку на расположение файла в массиве, но я не уверен.

$colsToDisplay = 5; 
$CountryArtists = array("C:\Users\THEFOLDER\images"); 
$ArtistImages = array("AJackson", "BShelton", "CUnderwood", "DBentley", "DLJones", "DRucker", "JAldean", "JCash", "JJohnson", "JStrait", "KChesney", "LAntebellum", "LDavis", "LRimes", "MLambert", "MMcBride", RTravis", "STwain", TKeith", TMcgraw"); 
$filename = "C:\Users\THEFOLDER\images"; 

Я относительно новым для PHP и на самом деле просто нужно знать, как загрузить мои изображения и как сделать эту таблицу отображаться правильно.

EDIT:

Я добавил эхо строк таблицы, но это всего лишь показывает эхо на выходе браузера:

" echo " $CountryArtists[$Value] $ArtistImages[$Value]" echo " .$CountryArtists[$Value]. $ArtistImages[$Value]" echo " .$CountryArtists[$Value]. $ArtistImages[$Value]" echo " .$CountryArtists[$Value]. $ArtistImages[$Value]" echo " .$CountryArtists[$Value]. $ArtistImages[$Value]" echo "" } ?> 

Мой код теперь выглядит следующим образом:

foreach(array_chunk($CountryArtists, 5, true) as $Value) { 
    echo "<table>" 
    echo "<tr><td> $CountryArtists[$Value] $ArtistImages[$Value]</td>" 
    echo "<td> .$CountryArtists[$Value]. $ArtistImages[$Value]</td>" 
    echo "<td> .$CountryArtists[$Value]. $ArtistImages[$Value]</td>" 
    echo "<td> .$CountryArtists[$Value]. $ArtistImages[$Value]</td>" 
    echo "<td> .$CountryArtists[$Value]. $ArtistImages[$Value]</td></tr>" 
    echo "</table>" 
} 

Я чувствую, что я плохо себя чувствую, был бы так благодарен, если бы это указывало мне.

ПОЛНЫЙ ФАЙЛ

<!DOCTYPE HTML> 
<html> 
<body> 

<?php 
$ArtistImages = array("AJackson", "BShelton", "CUnderwood", "DBentley", "DLJones", "DRucker", "JAldean", "JCash", "JJohnson", "JStrait", "KChesney", "LAntebellum", "LDavis", "LRimes", "MLambert", "MMcBride", "RTravis", "STwain", "TKeith", "TMcgraw"); 
$count = count($ArtistImages); 
$cols = 6; 
$div = (int) $count/(int)$cols; 
$diff = ceil($div); 
echo 
$fin = $cols * $diff; 

$a = 1; 
echo '<table>'; 
for($i = 0; $i < $fin; $i++) { 
    if($a == 1) 
     echo "\t<tr>".PHP_EOL; 

    $artist = (!empty($ArtistImages[$i]))? $ArtistImages[$i]: ""; 
    echo "\t\t".'<td>'.$artist.'</td>'.PHP_EOL; 

    if($a == $cols) { 
      echo "\t</tr>".PHP_EOL; 
      $a=0; 
     } 

    $a++; 
} 
echo '</table>'; 
?> 

</body> 
</html> 

ответ

1

Я думаю, вы можете искать что-то похожее на этот алгоритм. Он добавляет строку каждые 5 значений. Вы хотите сделать делитель, сделайте его ceil(), чтобы он добавил все необходимые пустые ячейки. Вы можете сделать это foreach, если вы делаете <ul> и <li> и используете CSS, чтобы они отображались как таблица. Тогда вам не нужно вычислять лишние ячейки.

$i = 1; 
echo '<table>'; 
foreach($array as $value) { 
    if($i == 1) 
     echo "<tr>"; 

    echo '<td>'.$value.'</td>'; 

    if($i == 5) { 
      echo "</tr>"; 
      $i=0; 
     } 

    $i++; 
} 
echo '</table>'; 

EDIT:

Вот более практичный вариант основан на вашем:

$ArtistImages = array("AJackson", "BShelton", "CUnderwood", "DBentley", "DLJones", "DRucker", "JAldean", "JCash", "JJohnson", "JStrait", "KChesney", "LAntebellum", "LDavis", "LRimes", "MLambert", "MMcBride", "RTravis", "STwain", "TKeith", "TMcgraw"); 

// Count total artists in array 
$count = count($ArtistImages); 
// Choose how many to display per row 
$cols = 6; 
// Divide the total by the columns 
$div = (int) $count/(int)$cols; 
// Round up (incase the number will produce empty cells 
$diff = ceil($div); 
// Mulitply the final numbers 
$fin = $cols * $diff; 
// Create an autoincrementer to keep track of next rows 
$a = 1; 
echo '<table>'.PHP_EOL; 
for($i = 0; $i < $fin; $i++) { 
    if($a == 1) 
     echo "\t<tr>".PHP_EOL; 
    // You need to see if this artist is populated. If not, make empty 
    // If left without this it will have a warning saying not exists 
    $artist = (!empty($ArtistImages[$i]))? $ArtistImages[$i]: ""; 
    echo "\t\t".'<td>'.$artist.'</td>'.PHP_EOL; 
    if($a == $cols) { 
      echo "\t</tr>".PHP_EOL; 
      $a=0; 
     } 

    $a++; 
} 
echo '</table>'; 
+0

Даже если я использую этот точный код, он выводится следующим образом в Chrome: '; foreach ($ CountryArtists как $ value) {if ($ i == 1) echo ""; echo ''. $ value. ''; if ($ i == 5) {echo ""; $ I = 0; } $ i ++; } echo ''; ?> ........... Я должен делать что-то еще неправильно? – user3018771

+0

Да, вы делаете что-то неправильно. Подождите, я постараюсь приблизиться к тому, что вам нужно ... – Rasclatt

+0

Спасибо за помощь, я могу опубликовать полный файл, возможно, что-то связано с настройкой моей страницы. – user3018771

0

В файле PHP необходимо повторить данные, которые вы хотите. Однако если вы в php-файле, вы можете закрыть php, как это. ? > И напишите html-код. Если вы хотите отобразить PHP атрибуты вам снова нужно открыть PHP так: и продолжать, как это ... Php FCAN только возвращающие строку или JSON данные Позвольте мне знать, если это работает для вас ....

+0

Смотрите это один http://stackoverflow.com/questions/900207/return-a- php-page-as-an-image –