2013-11-08 3 views
-1

У меня есть данные в таблице, которая хранится таким образом:вывода данных с помощью PHP, организованной по уровням

level | name 
    1 | Name 1 
    1 | Name 2 
    1 | Name 3 
    2 | Name 4 
    2 | Name 5 
    5 | Name 6 
    5 | Name 7 
    10 | Name 8 

я выбираю данные с помощью PHP с помощью простого выбора, что выбрать это все данные.

Из данных, которые я выбираю, как я могу, используя PHP, организовывать и выводить данные, как показано ниже?

Я пытаюсь отобразить его сгруппированным по уровням.

Так вот level 1 и level 2 являются premium уровни, level 5 являются midlevel и level 10 являются budget. Как это сделать, используя php?

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

Желаемые результаты:

Premium //All level 1,2 
------- 
Name 1 
Name 2 
Name 3 
Name 4 
Name 5 

Mid //All level 5 
------- 
Name 6 
Name 7 

Budget //All level 10s 
-------- 
Name 8 
+0

Вы используете MySQL для таблицы? – david

+0

@david Да, я – Norman

+0

И нужный результат сохраняется в таблице? – david

ответ

2
$premium = array(); 
$mid = array(); 
$budget = array(); 
$sql = mysql_query("SELECT * FROM table1 ORDER BY level") 
while ($row = mysql_fetch_assoc($sql)){ 
    if ($row['level'] == 1 || $row['level'] == 2){ 
     $premium[] = $row['name']; 
    } 
    else if ($row['level'] == 5){ 
     $mid[] = $row['name']; 
    } 
    else if ($row['level'] == 10){ 
     $budget[] = $row['name']; 
    } 
} 
echo 'Premium<br/>'; 
foreach ($premium as $val) 
    echo $val.'<br/>'; 
echo 'Mid<br/>'; 
foreach ($mid as $val) 
    echo $val.'<br/>'; 
echo 'Budget<br/>'; 
foreach ($budget as $val) 
    echo $val.'<br/>'; 
0

Использование массива. Попробуйте это:

$premium = ""; 
    $midlevel = ""; 
    $budget = ""; 
    $query = "SELECT * FROM table_name"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_array($result)) 
    { 
     if($row['level'] == 1 || $row['level'] == 2) 
      $premium .= $row['name']; 
     else if($row['level'] == 5) 
      $midlevel .= $row['name']; 
     else if($row['level'] == 10) 
      $budget .= $row['name']; 
    } 

    echo "Premium : <br />".$premium; 

Печать переменных, как вам требуется.

+0

Вы печатаете только как строку, а не массив – david

+0

@david im предлагает использовать массив, если строка не работает так, как вам нужно – Sandesh

+0

Вы сказали, что используете массив для этого кода. Но я вижу только строку – david

-1

PHP 5.4+ ТРЕБУЕТСЯ Если вы не используете PHP 5.4+, вам нужно будет изменить [] для правильного array().

Предполагая, что вы используете переменную $rows, которая содержит массив всех ваших строк, вы можете сделать что-то вроде этого.

<?php 

foreach ($rows as $row) 
{ 
    switch ($row['level']) { 
     case 1: 
      $premium[] = $row['name']; 
      break; 
     case 2: 
      $premium[] = $row['name']; 
      break; 
     case 5: 
      $midlevel[] = $row['name']; 
      break; 
     case 10: 
      $budget[] = $row['name']; 
      break; 
    } 
} 

После этого foreach работает, вы будете в конечном итоге с тремя массивами с именами, как вы хотите. $premium, $midlevel, и $budget.

EDIT

Использование время цикла, вы могли бы сделать это, как это. Хотя, я предпочитаю переключатель/корпус выше.

<?php 

$query = "SELECT * FROM table_name"; 
$result = mysql_query($query); 
while($row = mysqli_fetch_array($result)) 
{ 
    switch ($row['level']) { 
     case 1: 
      $premium[] = $row['name']; 
      break; 
     case 2: 
      $premium[] = $row['name']; 
      break; 
     case 5: 
      $midlevel[] = $row['name']; 
      break; 
     case 10: 
      $budget[] = $row['name']; 
      break; 
    } 
} 
+0

?? Почему это требует PHP 5.4. Это должно работать с любой версией PHP, включая PHP 4. – jcsanyi

+1

Я потерян. Где вы использовали что-то, что требует PHP 5.4? Единственное, что я вижу, это то, что вы все еще предлагаете использовать 'mysql_ *' вместо 'mysqli_ *' – speccode

+0

Новый синтаксис массива в PHP 5.4 позволяет мне создавать и добавлять массивы, используя только '[]' вместо того, чтобы do 'array()'. Это было введено в PHP 5.4 –

1

Вы можете использовать следующий код для группы из трех частей, предполагая, что вы можете подключить с myqsli базой данных и PHP

<?php 
    $mid=0; 
    $premium=0; 
    $budjet=0; 
    $sql= "select * from table order by level"; 
    if ($result = $mysqli->query($sql)) { 
     while ($row = $result->fetch_assoc()) { 
      if (($row['level']==1)&&($row['level']==2)) 
      { 
       if($premium==0){ 
        echo "Premium"; 
        $premium=1; 
       } 
      } 
      if (($row['level']==5) 
      { 
       if($mid==0){ 
        echo "MID"; 
        $mid=1; 
       } 
      } 
      if (($row['level']==10) 
      { 
       if($budjet==0){ 
        echo "Budjet"; 
        $budjet=1; 
       } 
      } 
      echo $row['name']."<br>"; 
     } 
    } 
+0

+1 только для кого-то ** наконец ** предоставление ответа, который использует поддерживаемую библиотеку mysql. – jcsanyi

+0

Вы просто подключаетесь к mysql и используете его .if Вам нужна строка подключения tell me –

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