2017-07-31 13 views
-1

PHPを使用することで非常に新しいですが、MySQLデータベースのデータをテーブルに取り込もうとしていますが、表示された結果はテーブルの上に点在しています。関連する列を表の上部に表示します。mysqlからphpテーブルへの返信が返信されない

私はデータが必要な場所のスクリーンショットが添付されています。

Screenshot

ここではコードです。

何か助けていただければ幸いです。 (それが問題に直接関係はないが、はい、PDOに置き換える必要があり、など)MySQLのクエリから

<?php 
$server = mysql_connect("xxxx", "xxxx", "xxxxx"); 
    $db = mysql_select_db("xxxxxx", $server); 
    $query = mysql_query("SELECT * FROM stores"); 

?> 


<html> 
<head> 
<title>Stores Tracker Dashboard</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<p align="center"><font face="Arial"><strong>Stores Tracker Dashboard</strong></font></p> 

<table align="center" border="1" width="90%"> 
<tr> 
    <td align="center"><font face="Arial"><strong>Not Started</strong></font></td> 
    <td align="center"><font face="Arial"><strong>In Transit</strong></font></td> 
    <td align="center"><font face="Arial"><strong>Awaiting Build</strong></font></td> 
    <td align="center"><font face="Arial"><strong>Being Built</strong></font></td> 
    <td align="center"><font face="Arial"><strong>On Return</strong></font></td> 
    <td align="center"><font face="Arial"><strong>Received Back</strong></font></td> 
</tr> 


<?php 

     while ($row = mysql_fetch_array($query)) {?> 

<tr> 
     <td align="center"><font face="Arial"><?php if ($row['status'] == "Not Started") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td> 
    <td align="center"><font face="Arial"><?php if ($row['status'] == "In Transit") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td> 
    <td align="center"><font face="Arial"><?php if ($row['status'] == "Awaiting Build") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td> 
    <td align="center"><font face="Arial"><?php if ($row['status'] == "Being Built") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td> 
    <td align="center"><font face="Arial"><?php if ($row['status'] == "On Return from CFC2") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td> 
    <td align="center"><font face="Arial"><?php if ($row['status'] == "Received") { echo $row['ticket'], '&nbsp; (', $row['site'], ')'; }?></font></td> 
</tr> 
<?php } ?> 
+1

私は、 'mysql_connect'ではなく、' PDO'接続/クエリを使ってこのことを知っておくことを強くお勧めします。 – NoReceipt4Panda

+0

PDO接続とは何ですか? – Coops

+1

http://php.net/manual/en/pdo.connections.php – NoReceipt4Panda

答えて

0

これはPDOを使用しています。 あなたの時間を取って、そこに起こっていることを学んでください!

<?php 
    $host = "set_hostname_here"; 
    $daba = "set_database_here"; 
    $user = "set_loginname_here"; 
    $pass = "set_password_here"; 

    $notstarted = array(); 
    $intransit = array(); 
    $awaiting = array(); 
    $built = array(); 
    $cfc2 = array(); 
    $received = array(); 

    try {  
    //open the PDO-connection to a MySQL-host 
    $DBH = new PDO("mysql:host=$host;dbname=$daba", $user, $pass); 

    //error mode set to EXCEPTION (ERRMODE_SILENT or ERRMODE_WARNING are also possible) 
    $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    //execute the query 
    $STH = $DBH->query('SELECT status, ticket, site FROM stores'); 

    //set default fetch mode to FETCH_ASSOC (if you want to try FETCH_OBJ) 
    $STH->setFetchMode(PDO::FETCH_ASSOC); 
    } 
    catch(PDOException $e) { 
    echo $e->getMessage(); 
    } 

    //go through all results and assign them to the related arrays 
    while($row = $STH->fetch()) { 
    $data = $row['ticket'] . '&nbsp; (' . $row['site'] . ')'; 
    if ($row['status'] == "Not Started") { $notstarted[] = $data; } 
    if ($row['status'] == "In Transit") { $intransit[] = $data; } 
    if ($row['status'] == "Awaiting Build") { $awaiting[] = $data; } 
    if ($row['status'] == "Being Built") { $built[] = $data; } 
    if ($row['status'] == "On Return from CFC2") { $cfc2[] = $data; } 
    if ($row['status'] == "Received") { $received[] = $data; } 
    } 

    //close the connection 
    $DBH = null; 
?> 

<html> 
    <head> 
    <title>Stores Tracker Dashboard</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 

    <body> 
    <p align="center"><font face="Arial"><strong>Stores Tracker Dashboard</strong></font></p> 

    <table align="center" border="1" width="90%"> 
     <tr> 
     <td align="center"><font face="Arial"><strong>Not Started</strong></font></td> 
     <td align="center"><font face="Arial"><strong>In Transit</strong></font></td> 
     <td align="center"><font face="Arial"><strong>Awaiting Build</strong></font></td> 
     <td align="center"><font face="Arial"><strong>Being Built</strong></font></td> 
     <td align="center"><font face="Arial"><strong>On Return</strong></font></td> 
     <td align="center"><font face="Arial"><strong>Received Back</strong></font></td> 
     </tr> 

     <?php 
     for ($i = 0; $i < max(count($notstarted),count($intransit),count($awaiting),count($built),count($cfc2),count($received)); $i++) { 
      echo "<tr>"; 
      echo "<td align=\"center\"><font face=\"Arial\">"; 
      if (count($notstarted) > $i) echo $notstarted[$i]; 
      echo "</font></td>"; 
      echo "<td align=\"center\"><font face=\"Arial\">"; 
      if (count($intransit) > $i) echo $intransit[$i]; 
      echo "</font></td>"; 
      echo "<td align=\"center\"><font face=\"Arial\">"; 
      if (count($awaiting) > $i) echo $awaiting[$i]; 
      echo "</font></td>"; 
      echo "<td align=\"center\"><font face=\"Arial\">"; 
      if (count($built) > $i) echo $built[$i]; 
      echo "</font></td>"; 
      echo "<td align=\"center\"><font face=\"Arial\">"; 
      if (count($cfc2) > $i) echo $cfc2[$i]; 
      echo "</font></td>"; 
      echo "<td align=\"center\"><font face=\"Arial\">"; 
      if (count($received) > $i) echo $received[$i]; 
      echo "</font></td>"; 
      echo "</tr>"; 
     } 
     ?> 
    </table 
    </body> 
</html> 

私はmanassehkatzの答えの例を使用しました。 PDO接続に関連するコードのほとんどは、tadmanによって与えられたリンクからほぼコピー/ペーストされています。

あなたのプロジェクトには幸運です。

0

各行は1つのstoresレコードの状態を報告します。この表は、各行で複数の値(各ステータスタイプの1つ)を報告するように設計されています。これを行うにはいくつかの方法があります。 1つの方法は、さまざまなステータスコードに対して一連の配列を設定し、完了したら配列をHTMLテーブルとして出力することです。このようなもの:

$notstarted = array(); 
$intransit = array(); 
$awaiting = array(); 
$built = array(); 
$cfc2 = array(); 
$received = array(); 

// Get all the data into the arrays 
while ($row = mysql_fetch_array($query)) { 
    $data = $row['ticket'] . '&nbsp; (' . $row['site'] . ')'; 
    if ($row['status'] == "Not Started") { $notstarted[] = $data; }; 
    if ($row['status'] == "In Transit") { $intransit[] = $data; }; 
    if ($row['status'] == "Awaiting Build") { $awaiting[] = $data; }; 
    if ($row['status'] == "Being Built") { $built[] = $data; }; 
    if ($row['status'] == "On Return from CFC2") { $cfc2[] = $data; }; 
    if ($row['status'] == "Received") { echo $received[] = $data; }; 
    }; 

// Loop through all the arrays at once. # of rows will be max of size of all arrays 
for ($i = 0; $i < max(count($notstarted),count($intransit),count($awaiting),count($built),count($cfc2),count($received)); $i++) { 
    print "<tr>"; 
    print "<td align="center"><font face="Arial">"; 
    if (count($notstarted) > $i) { print $notstarted[$i]; }; 
    print "</font></td>"; 
    print "<td align="center"><font face="Arial">"; 
    if (count($intransit) > $i) { print $intransit[$i]; }; 
    print "</font></td>"; 
    print "<td align="center"><font face="Arial">"; 
    if (count($awaiting) > $i) { print $awaiting[$i]; }; 
    print "</font></td>"; 
    print "<td align="center"><font face="Arial">"; 
    if (count($built) > $i) { print $built[$i]; }; 
    print "</font></td>"; 
    print "<td align="center"><font face="Arial">"; 
    if (count($cfc2) > $i) { print $cfc2[$i]; }; 
    print "</font></td>"; 
    print "<td align="center"><font face="Arial">"; 
    if (count($received) > $i) { print $received[$i]; }; 
    print "</font></td>"; 
    print "</tr>"; 
    }; 
+0

こんにちはmanassehkatz、私はまだこの作業を得ることができません。ページは空白で、コードはすべて見えます。何も表示されていない他の考え? – Coops