2015-10-09 3 views
0

У меня возникли проблемы с получением моего html-файла в моем цикле foreach php-скрипта. Я включил свои массивы на мою страницу header.php, которая включена в веб-страницу, которую я сейчас создаю. Прямо сейчас мой сайт показывает только пустой колодец, так как я использую бутстрап.html не отображается в php-скрипте

Я уже пробовал просто положить обычный html в div, и это работает, что означает, что в php-скрипте что-то не так.

Мой PHP массивы

<?php 
    //Teams 
    $teams = array(
      "fnatic" => array(
        title => "Fnatic", 
        teamLocation => "Sweden" 
      ), 
      "tsm" => array(
        title => "TSM", 
        teamLocation => "Denmark" 
      ), 

      "envyus" => array(
        title => "EnvyUs", 
        teamLocation => "France" 
      ), 
     ); 
?> 

Вот мой HTML. Средняя часть, где я пытаюсь отобразить мой цикл foreach. Я уже включил свой заголовок. Php, у которого есть мои массивы, и мой footer.php, который имеет все мои скрипты.

<?php 
    define('TITLE', 'PROS | CSGOPLAYER CONFIGS'); 
    include('includes/header.php'); 
    include('includes/minicarousel.php'); 

?> 

<div class="container-fluid"> 
    <div class="row"> 
     <div class="well"> 
      <?php foreach ($teams as $team => $item) { ?> 
      <h1><a href="team.php?item=<?php echo $team; ?>"><?php echo $item[title]; ?></h1> 
      <p><?php echo $item[teamLocation];?></p> 
      <?php } ?> 

     </div> 
    </div> 
</div><!--Contect--> 


<?php 
    include('includes/footer.php'); 
?> 
+0

'$ пункт [ title] 'должен быть' $ item ['title'] '. Но PHP будет преобразовывать его для вас, хотя он печатает предупреждение, когда он это делает. – Barmar

+0

Вам не хватает '' – Barmar

+0

@Barmar, но это не решит проблему. Можете ли вы добавить var_dump ($ teams); прямо перед вашей петлей foreach – sauerburger

ответ

0

Вам не хватает тег a. Также рассмотрите возможность включения short_open_tags в вашем PHP и используйте <? и ?> (более эффективный). Попробуйте print вместо echo. Что происходит, когда вы выполняете print_r($item) внутри цикла?

<div class="container-fluid"> 
    <div class="row"> 
     <div class="well"> 
      <?php 
       foreach ($teams as $team => $item) { 
        ?> 
         <h1> 
          <a href="team.php?item=<?php echo $team; ?>"> 
           <?php 
            print $item[title]; 
           ?> 
          </a> 
         </h1> 
         <p> 
          <?php 
           print $item[teamLocation]; 
          ?> 
         </p> 
        <?php 
       } 
      ?> 
     </div> 
    </div> 
</div><!--Contect--> 
+0

Почему OP должен 'print' вместо' echo'? –

+1

это в значительной степени вопрос личного вкуса, но короткие теги обычно обескуражены (http://php.net/manual/en/language.basic-syntax.phptags.php). Повышение эффективности незначительно, и тогда вам может потребоваться развернуть на сервере, где 'short_open_tags' не включены и не могут быть. Был там, сделал это, получил футболку и серьезное мочание себя :-) – LSerni

+0

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

2

Мое предложение было бы сделать var_dump из $teams в скважине, а затем exit() скрипт для проверки команды правильно загрунтовать.

Кроме того, я бы посоветовал использовать следующий синтаксис, как я чувствую, что это ясно, но ваш пробег может конечно варьироваться:

<?php 
    $well = ''; 
    foreach ($teams as $team => $item) { 
     $well .= <<<WELL 
     <h1><a href="team.php?item={$team}">{$item['title']}</a></h1> 
     <p>{$item['teamLocation']}</p> 
WELL; 
// The above line must start at column 1, to work as here-document 
    } 
    print $well; 
?> 

Кроме того, синтаксис вы используете должен выдавать много предупреждений о строках без кавычек. Тот факт, что вы не видите эти предупреждения, говорит мне, что у вас установлено error_reporting слишком низко, и, возможно, отображение ошибок также отключено. И это может объяснить, почему вы видите пустой колодец вместо полезного сообщения об ошибке.

title => "Fnatic", 
     teamLocation => "Sweden" 

и так далее, должны быть

'title' => 'Fnatic', 
     'teamLocation' => 'Sweden' 

одинарной или двойной кавычки это вопрос выбора, но это лучше, если некоторые котировки всегда на месте.

Все, что сказано, ваш код должен работать, поэтому рассмотрите возможность возникновения ошибки в другом месте.

+0

+1, я отправил ответ, думая, что все упустили тот факт, что ОП определил массив неправильно, а затем увидел вашу нижнюю часть (>. <). – Script47

0

Вы должны удалить эту устаревшую запятую.

$teams = array(
     "fnatic" => array(
       title => "Fnatic", 
       teamLocation => "Sweden" 
     ), 
     "tsm" => array(
       title => "TSM", 
       teamLocation => "Denmark" 
     ), 

     "envyus" => array(
       title => "EnvyUs", 
       teamLocation => "France" 
     ) 
    ); 
+0

Это не должно иметь значения - конечная запятая в объявлении массива не будет генерировать ошибку – andrewsi

0

в заголовке вашего

<?php 
$html = array(); 
foreach($teams as $team => $item){ 
    $html[] = "<h1><a href='team.php?item=".$team."'>".$item['title']."</a><h1>".<p>".$team['teamLocation']."</p>"; 
} 
?> 

внутри div.well

<?php echo implode('' , $html); ?>; 

также ключи массива должны быть завернуты в qoutes как:

... 

'title'=>'Fnatic', 

...