2017-12-31 57 views
1

私は、経験レベルに基づいてゲーム内の10文字をリストアップし、それぞれの文字に関連付けられた画像とともに表示するWebページを作成しています。私のコードはうまくいきますが、出力が列に並んでいれば、それは一列に並びます。私は非常に似た何かがここで尋ねられたところを見ました:MySQL data from database align horizontallyと私はその例に従おうとしましたが、エラーで終わるか、または顔が現れませんでした。私は愛人です、私はちょうど友人のためにこれをやっているので、私の知識はかなり基本的です。MySQLの結果を水平に表示しようとしています

関連するコード:

<table border="3" width="90%"> 
<tr> 
<th width="25%">XP</th> 
<td> 
<?php 
$resultgood = mysqli_query($con,"SELECT * FROM Life WHERE goodxp > 0 ORDER BY goodxp DESC LIMIT 10"); 
    while($row = mysqli_fetch_array($resultgood)) 
    { 
    $face = mysqli_query($con,"SELECT face FROM Description WHERE charname='$row[charname]'"); 
    $row = mysqli_fetch_row($face); 
    $face = $row[0]; 
    $name = mysqli_query($con,"SELECT charname FROM Life WHERE charname='$row[charname]'"); 
    $row = mysqli_fetch_row($name); 
    $name = $row[0]; 
    echo "<left>"; 
    echo "<table border='1'>"; 
    echo "<tr><td>"; 
    echo "<img src='pictures/$face' alt='$name' border='2'>"; 
    echo "</td></tr>"; 
    echo "</table>"; 
    echo "<br>"; 
    } 
?> 
</td> 
</tr> 
</table> 

誰もが何か提案を得ましたか。ありがとう!


以下のBombelmanの提案に従って、私はそれを動作させました。

<tr> 
<th width="25%">Goody Two Shoes</th> 
<td><?php 
echo "<table border='1'><tr>"; 
echo "<left>"; 
$resultgood = mysqli_query($con,"SELECT * FROM Life WHERE goodxp > 0 ORDER BY goodxp DESC LIMIT 10"); 
    while($row = mysqli_fetch_array($resultgood)) 
    { 
    $face = mysqli_query($con,"SELECT face FROM Description WHERE charname='$row[charname]'"); 
    $row = mysqli_fetch_row($face); 
    $face = $row[0]; 
    $name = mysqli_query($con,"SELECT charname FROM Life WHERE charname='$row[charname]'"); 
    $row = mysqli_fetch_row($name); 
    $name = $row[0]; 
    echo "<td>"; 
    echo "<img src='pictures/$face' alt='$name' border='2'>"; 
    echo "</td>"; 
    } 
    echo "</tr>"; 
    echo "</table>"; 
?></td> 
</tr> 
+0

ため

$fields=array(); array_walk($res->fetch_fields(),function($item, $key, $fields){ $fields[]=$item->name; },&$fields); 

を変更するには、おそらくここに参加していないネストされたクエリを行うことができます。 – rtfm

+2

状況は本当に2つの独立した問題です。 1. PHPを使用してMySQLからデータを取得する。 2.希望のフォーマットでデータを表示する。私はこれらの両方への回答をかなり簡単に得ることができると確信しています。 – rushi

+0

はい。 JOINについて読んでください。余計なコードがたくさんあります – Strawberry

答えて

0

場所のループのうち、「表」と「行」タグ、および「TD」タグ間での結果は、唯一のループしている:場合、誰がこの問題に遭遇し、ここでの作業コードがあります。

スクリプトを見ると、いくつかのテーブルがあります。

td>タグと</td>タグのみがwhileループ内にあることを確認してください。 出力は私の例に似ています。

希望すると助かります! SQLクエリを見てみると

<table style="width:100%"> 
 

 
    <tr> 
 
    <td>Character 1</td> 
 
    <td>Character 2</td> 
 
    <td>Character 3</td> 
 
    <td>Character 4</td> 
 
    <td>Character 5</td> 
 
    </tr> 
 

 
</table>

+1

これは完全に機能しました!どうもありがとうございます! – Pomegranate

+0

あなたは大歓迎です...幸運。 – Bombelman

0

私はあなたが基本的なむしろループ内でネストされたクエリを持つよりも、二つのテーブル時に参加を行うことができるべきだと思います。 htmlテーブルの生成はかなり簡単に行う必要があります。テーブルの行のレコードセット結果を繰り返し、テーブル行内の個々のセルのクエリによって返されたフィールドを反復処理します。

$sql='select l.*, d.face from `life` l 
    join `description` d on d.`charname`=l.`charname` 
    where l.`goodxp` > 0 
    order by l.`goodxp` desc 
    limit 10'; 

$res=$con->query($sql); 

/* fetch the column names into an array */ 
$fields=array(); 
array_walk($res->fetch_fields(),function($item, $key, $fields){ 
    $fields[]=$item->name; 
},&$fields); 


$html=array(); 

$html[]='<table>'; 
/* add field names as column headers */ 
$html[]='<tr>'; 
foreach($fields as $field)$html[]='<th>'.$field.'</th>'; 
$html[]='</tr>'; 

/* 
    iterate through recordset, 
    add new row for every record 
    but table cell for every 
    field in record 
*/ 
while($rs=$res->fetch_object()){ 
    $html[]='<tr>'; 

    foreach($fields as $field){/* show image or text */ 
     $data = $field=='face' ? "<img src='pictures/{$rs->$field}' />" : $rs->$field; 
     $html[]='<td>'.$data.'</td>'; 
    } 

    $html[]='</tr>'; 
} 
$html[]='</table>'; 

/* render table */ 
echo implode(PHP_EOL, $html); 

は、PHPのバージョンによっては、あなたがarray_walk機能を使用して参照することにより、第三引数を渡すときにnaggedことがあります。その場合は、その後

$fields=array(); 
array_walk($res->fetch_fields(),function($item, $key){ 
    global $fields; 
    $fields[]=$item->name; 
}); 
関連する問題