2014-12-15 4 views
0

Пожалуйста, старайтесь вводить очки для 8 команд с помощью только одной формы. Я хочу сравнить и получить самый высокий балл после того, как форма была отправлена. Я создал форму, но у меня небольшая проблема. Получается ошибка «Неопределенное смещение: 8». но баллы и имя команды показывают отлично. Вот мой HTML кодПримечание: Неопределенное смещение

<div class="container"> 
      <form method="post" action="../_libs/test.php"> 
      <?php 
      foreach($teams as $arr) 
      { 
       ?> 

        <div class="row team_result"> 

         <div class="col-md-8"> 

          <div class="row"> 
          <div class="col-md-3"> <img class="img img-thumbnail" src="../_images/<?php echo $arr['Team_Logo']; ?>" width="50" height="50"> </div> 

          <div class="col-md-3"> <label> <?php echo $arr['Team_Name']; ?> </label> </div> 

          <div class="col-md-3"> 
           <div class="input-group"> 
            <input type="text" class="form-control" name="points[]" placeholder="points"> 
           </div> 
          <input type="text" name="Name[]" id="" value="<?php echo $arr['Team_Name'] ?>" 
      style="display:none" > 
          </div> 


          </div> 

         </div> 




        </div> 

       <?php 
      } 

      ?> 
      <div class="col-lg-6 col-lg-offset-4"> <input type="submit" class="btn btn-primary" name="submit" value="Post"> </div> 
      </form> 
      </div> 

И код PHP

<?php 

//echo json_encode($_POST); 

if(!empty($_POST['Name'])){ 
     $team=$_POST['Name']; 
     $teams=count($team); 
      for($i=0; $i <= $teams; $i++) 
        { 
         echo $team[$i] .",". $_POST['points'][$i]."<br>"; 
        // echo $teams; 
        } 

} 


?> 
+1

На какой линии? –

+0

использовать функцию isset перед печатью 'if (isset ($ _ POST ['Name'])) {добавить код здесь}' – Sundar

ответ

0

В течение цикла вы должны использовать только <, а не <=

for ($i = 0; $i < $teams; $i++) 

В то время как вы используете <=, у вас есть 8 команд, но 9 итераций в цикле (для $i равных 0, 1 , 2, 3, 4, 5, 6, 7 и 8). Последний не определен.

+0

Большое спасибо @panther, это сработало. Как мне получить наивысшие баллы и имя соответствующей команды? – olakunle

+0

Лучший выбор - сделать это непосредственно в БД. Если у вас есть только этот код, установите перед for-loop var '$ maximum_points = 0; $ high_index = 0; ', чем in for-loop' if ($ _POST ['points'] [$ i]> $ maximum_points) {$ high_index = $ i; height_points = $ _POST ['points'] [$ i];} '. После всего цикла вы будете иметь индекс '$ high_index' команды с результатом Highet. Чем вы можете напечатать это, используя echo '$ _POST ['Name'] [$ high_index];'. Я написал, что здесь, надеюсь, нет опечаток. Это должно помочь вам. – panther

+0

Не получил последнюю часть. Но спасибо за помощь. – olakunle

0

Ваш цикл должен иметь условие $i < $teams. индекс вашего массива всегда индексируется 0, но счет массива всегда начинается с 1. Ваш цикл выходит за границы массива.

<?php 
    //echo json_encode($_POST); 

    if(!empty($_POST['Name'])){ 
     $team=$_POST['Name']; 
     $teams=count($team); 
     for($i=0; $i < $teams; $i++) 
     { 
      echo $team[$i] .",". $_POST['points'][$i]."<br>"; 
      // echo $teams; 
     } 
    } 

?> 
+0

Спасибо @Jerodev. Это сработало, пожалуйста, как мне получить команду с самыми высокими очками? – olakunle

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