2014-01-30 5 views
0

У меня нет проблем с генерацией вывода, Но я не собираюсь генерировать строки из столбцов.От строки до столбца

Простой код и вывод, который я поставил здесь.

Спасибо.

$con = mysql_connect('localhost', 'root', 'xxx') 
if (!$con) { die('Could not connect: ' . mysql_error()) } 
mysql_select_db("kasy", $con) 
$sql="SELECT * from exam where intake='$b'" 


echo "<table border='1'> 
<th>name</th> 
<th>subject</th> 
<th>grade</th> 
</tr>"; 

$row= mysql_query($sql) 
    { 
    echo "<td>" . $row['name'] . "</td>"; 
    echo "<td>" . $row['subject'] . "</td>"; 
    echo "<td>" . $row['grade'] . "</td>"; 
    } 

Выход:

Name | Subject | Grade 
Jose | History | A 
Jose | Language | A 
Jose | Account | B 
Brian | History | B 
Sarah | Math  | C 

, но я хочу что-то вроде этого, и я понятия не имею,

|Name | History | Language | Account | Math | 
|Jose | A  | A  | B  | NULL | 
|Brian | B  | NULL | NULL | NULL | 
|Sarah | NULL | NULL | NULL | C | 

потребление = '$ Ь' = от формы, я выкладываю данные.

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

ответ

1

Необходимо изменить данные. Вы можете сделать это с aggregatino:

select name, 
     max(case when subject = 'History' then grade end) as History, 
     max(case when subject = 'Language' then grade end) as Language, 
     max(case when subject = 'Account' then grade end) as Account, 
     max(case when subject = 'Math' then grade end) as Math 
from exam 
group by name; 

Я не знаю, что where intake='$b' для, потому что вы не имеете intake столбец данных. Кроме того, интерфейс mysql_ устарел, поэтому вы должны использовать что-то более современное - и с параметрами для предотвращения атак SQL-инъекций.

+0

потребление = «$ Ь» от формы, я отправляю данные. Я уже выполнил этот запрос, и для генерации потребуется время, поэтому любой код не запрашивает делать что-то вроде этого, например foreach. – user2431391

+0

на этом выходе, я уже показываю, сколько предметов, как насчет того, если я не знаю, сколько предметов, – user2431391

+0

@ user2431391. , , Тогда вам нужен динамический стержень. Найдите ответы на StackOverflow, которые объясняют, как это сделать. Для этого есть определенные образцы кода. –

0

Вы должны использовать MySQLi или даже лучше, PDO, как MySQL была устаревшей, но попробовать этот

$con = mysql_connect('localhost', 'root', 'xxx') 
if (!$con) { die('Could not connect: ' . mysql_error()) } 
mysql_select_db("kasy", $con) 

    echo"<table border='1'> 
     <tr> 
      <td>Name</td> 
      <td>History</td> 
      <td>Language</td> 
      <td>Account</td> 
      <td>Math</td> 
     </tr>"; 

    $result = mysql_query(SELECT * from exam where intake='$b'"); 

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
     { 

      echo" 

     <tr> 
      <td>".$row['Name']."</td> 
      <td>".$row['History']."</td> 
      <td>".$row['Language']."</td> 
      <td>".$row['Account']."</td> 
      <td>".$row['Math']."</td> 
     </tr> 


      "; 

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