2016-12-21 2 views
0

Я новичок в HTML5 и PHP, я пытаюсь вывести конкретное значение в табличных данных, если значение, полученное из базы данных, является условием.PHP if statement in html-table выводит ошибку

Мой код:

<table class="scroll"> 
    <thead style="background-color: #99E1D9; color: #705D56;"> 
     <tr> 
      <th>ID</th> 
      <th>Name Client</th> 
      <th>Last Update</th> 
      <th style="padding-left: 30%;">Status</th> 
     </tr> 
    </thead> 
     <tbody id="hoverTable"> 
       <?php 

        $connection = mysql_connect('localhost', 'root', ''); 

        mysql_select_db('patientdb'); 

        $query = "SELECT id, name, date FROM clients"; 

        $result = mysql_query($query); 

        //status waarden uit 
        $status = "SELECT status FROM clients"; 
        $status_ = mysql_query($status); 

        while($row = mysql_fetch_array($result)){ //Loop through results 
        echo "<tr> 

          <td>" . $row['id'] . "</td> 
          <td>" . $row['name'] . "</td> 
          <td>" . $row['date'] . "</td> 
          <td style='padding-left: 30%;'>" . 

           if ($status_ > 60){echo "red"; 
           } elseif ($status_ > 50){echo "yellow"; 
           } else{echo "green";} 

           . "</td> 

         </tr>"; 
        } 
        mysql_close(); 
       ?> 
</tbody> 
</table> 

Выход ошибки

Parse error: syntax error, unexpected T_IF in /test/composition/login/portal/portal.php on line 204

Что такое правильный способ решить эту проблему?

EDIT

мой текущий код:

<table class="scroll"> 
    <thead style="background-color: #99E1D9; color: #705D56;"> 
     <tr> 
      <th>Naam Client</th> 
      <th>Laatste Update</th> 
      <th style="margin-left: 40%; padding-left: 0%;">Status</th> 
     </tr> 
    </thead> 
    <tbody id="hoverTable" style="font-size: 11pt;"> 

<?php 


    $connection = mysql_connect('localhost', 'root', ''); 
    mysql_select_db('patientdb'); 

    $query = "SELECT id, naam, datum FROM clients"; 
    $result = mysql_query($query); 

    $query2 = "SELECT status FROM clients"; 
    $result2 = mysql_query($query2); 

    if (!empty ($result2)) { 
    while ($row2 = mysql_fetch_assoc($result2)) { 
    echo $row2['status'] . "<br />"; 
    } 
    } 

    while($row = mysql_fetch_array($result)){ //Loop through results 
    echo "<tr> 

      <td>" . $row['id'] . "</td> 
      <td>" . $row['naam'] . "</td> 
      <td>" . $row['datum'] . "</td> 
      <td style='padding-left: 30%;'>"; 

       if ($results2 > 60 && $results2 < 70) { 
        echo "red"; 
       } elseif ($results2 > 50 && $results2 < 60) { 
        echo "yellow"; 
       } else { 
        echo "green"; 
       } 

       echo "</td> 

     </tr>"; 
    } 
    mysql_close(); 
?> 

    </tbody> 
</table> 

Выходные правильные данные. но частично снаружи и частично внутри стола.

+3

Возможный дубликат [PHP Анализировать/синтаксических ошибок; и как их решить?] (http://stackoverflow.com/questions/18050071/php-parse-syntax-errors-and-how-to-solve-them) –

+0

http://stackoverflow.com/questions/10860371/how-to-fix-syntax-error-unexpected-t-if-error-in-php –

+1

** ПРЕДУПРЕЖДЕНИЕ **: Если вы просто изучаете PHP, пожалуйста, не изучайте устаревшие ['mysql_query'] (http://php.net/manual/en/function.mysql-query.php). Это ужасно и было удалено в PHP 7. Замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo- for-database-access /) и руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), помогает объяснить лучшие практики. Сделайте ** конечно ** ваши пользовательские параметры [правильно экранированы] (http://bobby-tables.com/php), или вы получите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). – tadman

ответ

1

Вам придется удалить, если заявление от эха, чтобы избавиться от ошибки Попробуйте это:

<table class="scroll"> 
    <thead style="background-color: #99E1D9; color: #705D56;"> 
     <tr> 
      <th>ID</th> 
      <th>Name Client</th> 
      <th>Last Update</th> 
      <th style="padding-left: 30%;">Status</th> 
     </tr> 
    </thead> 
     <tbody id="hoverTable"> 
       <?php 

        $connection = mysql_connect('localhost', 'root', ''); 

        mysql_select_db('patientdb'); 

        $query = "SELECT id, name, date FROM clients"; 

        $result = mysql_query($query); 

        //status waarden uit 
        $status = "SELECT status FROM clients"; 
        $status_ = mysql_query($status); 

        while($row = mysql_fetch_array($result)){ //Loop through results 
        echo "<tr> 

          <td>" . $row['id'] . "</td> 
          <td>" . $row['name'] . "</td> 
          <td>" . $row['date'] . "</td> 
          <td style='padding-left: 30%;'>"; 

           if ($status_ > 60) { 
            echo "red"; 
           } elseif ($status_ > 50) { 
            echo "yellow"; 
           } else { 
            echo "green"; 
           } 

           echo "</td> 

         </tr>"; 
        } 
        mysql_close(); 
       ?> 
</tbody> 
</table> 
+0

@ user7186749 вы можете проверить мой ответ –

+0

Эй, очень хороший человек. Я изменил часть php, которая получает мой код базы данных. Поскольку мой php не выводил мои данные базы данных правильно. Ваш код понятен. Хотя я получаю свой результат не внутри, а за пределами моего стола. Зачем? Не могли бы вы посмотреть мой EDIT. – user7186746

+0

какая у вас версия php? –

0

Try:

$status = "green"; 
if ($status > 50) 
{ 
    $status="yellow"; 
} 
elseif($status>60) 
{ 
    $status="red"; 
} 
echo "<tr> 
<td>" . $row['id'] . "</td> 
<td>" . $row['name'] . "</td> 
<td>" . $row['date'] . "</td> 
<td style='padding-left: 30%;'>" .$status. "</td> 
</tr>"; 

Вы не можете добавить к строке условного оператора, присвоить переменной первой, например (как я отправил)

+0

Не могли бы вы посмотреть мой EDIT. Вы можете работать очень хорошо.Я просто понял, что вывод моих данных, полученных из mysql, не является тем, чем он должен быть. он должен выводиться как отдельные целые числа. – user7186746

0

Эта часть не в нужном месте :

if ($status_ > 60){echo "red"; 
          } elseif ($status_ > 50){echo "yellow"; 
          } else{echo "green";} 

должно быть:

echo "<tr> 
     <td>" . $row['id'] . "</td> 
     <td>" . $row['name'] . "</td> 
     <td>" . $row['date'] . "</td> 
     <td style='padding-left: 30%;'>"; 
if ($status_ > 60){ 
    echo "red"; 
} elseif ($status_ > 50){ 
    echo "yellow"; 
} else{ 
    echo "green"; 
} 
echo "</td></tr>"; 
+0

Не могли бы вы посмотреть мой EDIT. Вы можете работать очень хорошо. Я просто понял, что вывод моих данных, полученных из mysql, не является тем, чем он должен быть. он должен выводиться как отдельные целые числа. – user7186746

-1

Несомненно, status_ не вернется с номером, а массивом.

$status_ = mysql_query($status); 

Не зная, какие данные вернутся, трудно помочь.

mysql_query

+0

возвращает целые числа, такие как 40, 45, 50, 55, 60 – user7186746

+0

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

+0

Зачем это вызывает синтаксическую ошибку PHP? – Barmar

1

Вы не можете иметь if заявление (или любое другое заявление, по этому вопросу) в середине другого заявления, как echo. Если вы хотите объединить разные строки в зависимости от переменной, вы можете использовать условный (AKA «тройной») оператор.

   echo "<tr> 

         <td>" . $row['id'] . "</td> 
         <td>" . $row['name'] . "</td> 
         <td>" . $row['date'] . "</td> 
         <td style='padding-left: 30%;'>" . 
          $status_ > 60 ? "red" : ($status_ > 50 ? "yellow" : "green") 
          . "</td> 

        </tr>";