2016-01-19 5 views
-6

У меня есть страница php, на которой есть вкладки аккордеона. Заголовок заголовка для каждой вкладки должен быть заголовком категории. В базе данных 10 категорий.Пока петля внутри цикла While loop looping

Каждая вкладка должна содержать список всех игроков данной категории. Итак, аккордеон tab1 будет иметь название «Категория 1» и включает список всех игроков из базы данных в «Категория 1». Это делается на двух отдельных php-страницах.

На первой странице находится корпус панели аккордеона, который должен проходить через базу данных и создавать новую панель для каждой категории. Затем на этой странице панели отображается «включить» для игроков.

Моя проблема в том, что панель While While проходит цикл только один раз и создает панель для категории 1, но никогда не переходит в «Категория 2». Причина почему-то заключается в том, что «php includes» для игроков. Если я прокомментирую "include 'includes/player-select.php';" для игроков, так что он будет создавать только табуляции для категорий, то он будет проходить через всю базу данных и создавать 10 вкладок. Включение игроков остановит цикл только на вкладке первой категории.

Есть идеи?

Вот Panel.php

 <?php 
    $query = "SELECT catID,cat_name,categoryColor FROM Categories"; 
    $result = mysqli_query($conn, $query); 

    if($result === FALSE) { 
     die(mysqli_error()); 
     } 

    while ($row = mysqli_fetch_array($result)) { 

     $cat_id = $row['catID']; 
     $catName = $row['cat_name']; 
     $catColor = $row['categoryColor']; 

     // BEGIN PANEL 
     echo '<div class="panel panel-default">'; 
      echo '<a data-toggle="collapse" data-parent="#accordion" href="#collapse' . $cat_id .'">'; 
       echo '<div class="panel-heading" style="background-color: ' . $catColor . '; color: #2b2c31;">'; 
        echo '<h4 class="panel-title">'; 
         echo $catName . '<span class="glyphicon glyphicon-chevron-down caret-right"></span>'; 
        echo '</h4>'; 
       echo '</div>'; 
      echo '</a>'; // END Panel Title Bar 
     // BEGIN Panel Body 
      echo '<div id="collapse' . $cat_id . '" class="panel-collapse collapse in">'; 
       echo '<div class="panel-body votes">'; 

//  BEGIN Player1Select.php 
        include 'includes/player-select.php'; 
        //  END Player1Select.php 

          echo '</div>'; // END panel-body 
        echo '</div>'; // END collapse' $cat_id 
      echo '</div>'; // END panel panel-default 
    // END PANEL 
    } 
?> 

И теперь вот игрока-select.php

<div class="col-md-4 text-center"> 
<div class="tab-inner"> 
    <div class="form-group"> 
     <form action="" method="post"> 
      <div class="select-box-left"> 

       <?php 
        //execute the SQL query and return records 
        $query = "SELECT first_name,last_name, playerID, categoryID FROM Players WHERE categoryID = '$cat_id' ORDER BY last_name"; 
        $result = mysqli_query($conn, $query); 

        if($result === FALSE) { 
         die(mysqli_error()); 
        } 

        while ($row = mysqli_fetch_array($result)) { 

         $playerID = $row['playerID']; 
         $playerFN = $row['first_name']; 
         $playerLN = $row['last_name']; 
         $playerCatID = $row['categoryID']; 

         echo '<div class="selection1" value=' . $playerFN . $playerLN . '>' . $playerFN . " " . $playerLN ."</div>"; 
        } 

       ?> 
       </div> 
     </form> 
    </div><!-- END form-group --> 
           </div> <!-- END tab-inner --> 
          </div> <!-- END col-md-4 --> 

       <!-- BEGIN Player Images --> 
          <div class="col-md-4 text-center"> 
<div class="tab-inner"> 
    <img src="images/players/3_image.png" class="img-responsive img-left" alt="Vote" width="160" height="116"> 
    <img src="images/players/2_image.png" class="img-responsive img-right" alt="Vote" width="160" height="116"> 
    <img src="images/vs.png" class="img-responsive img-middle" alt="vs" width="45" height="45"> 
           </div> 
<div id="btnVote"><button type="submit" class="btn btn-primary" id="voteButton" disabled>VOTE NOW</button></div> 
          </div> 
       <!-- END Player Images --> 

          <div class="col-md-4 text-center"> 
<div class="tab-inner"> 
    <div class="form-group"> 
      <div class="select-box-right"> 
       <?php 
        //execute the SQL query and return records 
        $query = "SELECT first_name,last_name, playerID, categoryID FROM Players WHERE categoryID = '$cat_id' ORDER BY last_name"; 
        $result = mysqli_query($conn, $query); 

        if($result === FALSE) { 
         die(mysql_error()); // TODO: better error handling 
        } 

        //fetch tha data from the database 
        while ($row = mysqli_fetch_array($result)) { 

         $playerID = $row['playerID']; 
         $playerFN = $row['first_name']; 
         $playerLN = $row['last_name']; 
         $playerCatID = $row['categoryID']; 

         echo '<div class="selection2" value=' . $playerFN . $playerLN . '>' . $playerFN ." " . $playerLN . "</div>"; 
        } 
       ?> 
       </div> 
    </div><!-- END form-group --> 
           </div> <!-- END tab-inner --> 
          </div> <!-- END col-md-4 --> 
+1

Исправьте код вашего кода. – Mikey

+0

Если вы собираетесь спрятаться за клавиатурой и пропустить этот вопрос, то, по крайней мере, вырастите пару и укажите, почему. Если это потому, что вы не можете использовать полосу прокрутки, возможно, вы не должны отвечать на вопросы здесь в первую очередь. Вы знаете так же хорошо, как и я, этот код является копией с исходной кодовой страницы. Это не похоже на то, что я проснулся сегодня утром и имел свой злой план отступить от *** из вопроса Stackoverflow ..... – FunnyGuy

+0

Причина для downvote: есть слишком много кода. Я могу использовать полосу прокрутки, но если код использует два блока кода, как с горизонтальными, так и с вертикальными полосами прокрутки, наверняка не все это необходимо для вопроса. И если вы собираетесь копировать/вставлять код волей-неволей, вы только навредите себе. –

ответ

0

У меня есть два возможных решения:

1.) это может быть потому что у вас есть точка с запятой после того, как вы закрываете фигурный скоб.

2.) Всякий раз, когда я использую MySQL_fetch_array, я индексирую переменную $ row.

нравится:

$query = "SELECT catID,cat_name,categoryColor FROM Categories"; 

               while ($row = mysqli_fetch_array($result)) { 

               $cat_id = $row['catID']; 
               $catName = $row['cat_name']; 
               $catColor = $row['categoryColor']; 

Мой пример

while ($row = mysqli_fetch_array($result)) { 

               $cat_id = $row[0]; 
               $catName = $row[1]; 
               $catColor = $row[2]; 
+0

Я удалил полуколову и не изменил. Что касается использования индекса вместо заголовка строки, они должны быть одинаковыми, не так ли? Я думаю, что если нет, тогда результат не будет выплюнуть.Как-то проблема связана с включением игроков. – FunnyGuy

+0

Есть несколько полуколоней после петель, вы удалили их все? Я думаю, что полу-двоеточие в файле include, подобном этому, может остановить его от запуска более одного раза? –

+0

Да, спасибо. Я удаляю три полуфина для трех циклов. Без изменений, хотя – FunnyGuy

0

Понял. Случилось то, что те же переменные $ использовались во всех трех циклах, $ query, $ row .... Таким образом, исходная переменная цикла while была сбрасывается на false, как только остальные два завершатся. Таким образом, ответ состоял в том, чтобы переименовать переменные $.

Смежные вопросы