MYSQLから取得したデータを2列に表示する方法

このQ&Aのポイント
  • MYSQLからデータを取得し、2列に表示する方法がわかりません。
  • コードを実行すると1のデータが2列で表示されるが、HTMLのテーブルを入れると表示されなくなる。
  • 初心者でもわかりやすい方法で、MYSQLから取得したデータを2列に表示する方法を教えてほしい。
回答を見る
  • ベストアンサー

MYSQLから取得したデータを2列に表示する方法

取得したデータを2列に表示する方法がわかりません。 過去ロゴを参照しながら初心者なりに書いてみたのですが、うまく表示されません。もしご存知の方がいらしゃいましたらよろしくお願い致します。 <? $listQuery = "SELECT 1,2,3, FROM テーブル名"; $listResult = mysql_query($listQuery, $接続設定); $line=2; //改行列数 $i=0; while($listData = mysql_fetch_row($listResult)) { $i++; ?> ☆☆☆ <?print($listData[0]);?> <? if($i==$line) { echo"<br>"; $i=0; } } ?> このまま実行すると1のデータが2列で表示されるのですが☆☆☆の中にHTMLで書いたテーブルなどをいれると表示されなくなってしまいます。 色々調べてみたのですが全然わかりません。 もしよかったらご教授お願い致します。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

☆☆☆ のHTMLが正しい場合は正しい動作をすると思いますが。。。 って、☆☆☆はテーブルですか・・・ テーブルを入れると強制的に改行ができます。それでそうなってしまうのでしょう。 これが嫌な場合は、全体をテーブルで囲えばいいとおもいます。 例: print "<table><tr>"; while($listData = mysql_fetch_row($listResult)) { $i++; print <<<HTML ☆☆☆ HTML print($listData[0]); if($i==$line) { echo "</td></tr>"; echo "<tr><td>"; $i=0; } else { echo "</td><td>"; } } print "</tr></table>"; かなり強引なやり方ですが。

melchanchan
質問者

お礼

moon_night さん ありがとうございました。 教えていただいた様に追加したらできました。 本当にありがとうございました。

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

想定する出力表示 と 実際の出力表示 はどうなっているのでしょうか? それを示していただければ的確に回答できると思います。

melchanchan
質問者

お礼

moon_nightさん ありがとうございます。 実際の出力表示ですが ☆☆☆の中に HTMLのテーブルを入れると表示されるのは テーブル テーブル <BR> テーブル テーブル と表示されてしまいます。 想定する出力表示は テーブル テーブル <BR> テーブル テーブル です。 なぜ、HTMLを☆☆☆にいれるとこのような表示になってしまうのでしょうか? よろしくお願い致します。

関連するQ&A

  • mysql_fetch_objectにデータを取得させたいのですが、うまく行きません。

    データ型 name varchar(30), item1 char(8), item2 int(6) で、テーブルが下記のようなっています。 | name |item1 | item2 | | taro | abcd | 53 | | taro | efghk | 48 | | taro | lmnp | 02 | while文で array_push($ydata, $row->item1) として $row = mysql_fetch_object($result) にデータを取得させたいのですが(スクリプト下記)、 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT item1,item2 from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); while($row = mysql_fetch_object($result)){   ←10行目 // array_push($ydata, $row->item1);      //  ここに下記の13、14行目を追記 } var_dump($row);echo"<br />\n"; var_dump($result); print_r($row); echo"<br />\n"; これでブラウザから見ると bool(false) resource(3) of type (mysql result) としか出ません。(19行目の結果は表示されません。) そのため 13: echo "item1",$row['item1'],"<br>"; 14 echo "item2",$row['item2'],"<br>"; と追記してブラウザから見ると、単に [ item1 ]とだけ表示されます。 10 行目を while($row = mysql_fetch_arrayt($result)){ に変えてブラウザから見ると item1abcd item253 imem1efghk item250 item1lmnp item258 bool(false) resource(3) of type (mysql result)   となります。 $row = mysql_fetch_object($result) にデータを取得させるにはどのように修正すれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • MySQLのクエリ結果を繰り返し表示

    MySQLとPHPで困っています。 MySQLでクエリした結果をテーブルに繰り返し表示したいと思っています。 今まではただ横一列に並べるもしくは、縦一列に並べるしかやったことがありませんでした。 下記のような感じ while($row=mysql_fetch_array($rs)){ $a = $row["id"]; echo $id<br>; } しかし今回は、横4列に並べ、5以上ある場合は数に応じて改行を行いたいのです。 (横4列は例であり、何列でも改行<tr>が伴うようなものなら構いません) □■△▲ ▽▼×○ ◎● のように。 forを使いながらいろいろと試してみましたが、何度やってもうまくいきません。 MySQLからクエリされた行総数($sum)として、変数($a)を使い、 $a<$sum $a = 0; 処理($a%4 == 3)余りが3の場合改行などなど $a++; いろいろと試しているうちに無限ループ突入など困り果ててしまいました。 どなたか、ご教示くださいますようお願いいたします。

  • MySQLからデータを取得して表示したい

    PHP+MySQLでWeb検索を作成していますが、不明点があるので質問させていただきます。 入力フォームから文字列を入力し、データベースに文字列がある場合、そのフィールド(行)のデータを表示させるということがうまくできません。(ちなみにデータベース接続、文字取得といったところは問題なくできています。) 例えば、以下のようなテーブルがあったとします。 学校 名前 点数 就職先 A校 佐藤 100 A社 B校 鈴木 90 B社 C校 寺本 80 C社 ここで入力フォームから鈴木と入力させて$nameに引き渡し、 $result = mysql_query( "select * from {$tableName} where `名前` like {$name}") ; while( $row = mysql_fetch_row( $result)){ var_dump( $row); } B校 鈴木 90 B社 という内容を表示させたいのですが、何も表示されません。データベース上(実際操作したのはphpmyadmin上)でクエリを送信してみると、フィールドが表示されるので、問題あるとしたら$rowのあたりかと思うのですが、原因がつかめません。どのように取得・表示させればいいか、ご教授下さいませ。 $result = mysql_query( "SELECT * from {$tableName}"); while( $row = mysql_fetch_row( $result)){ var_dump( $row); } ちなみにこれだとテーブルの全要素が配列に入って、表示されるのですが・・・。違いがよくわかりません。 よろしくお願い致します。

    • 締切済み
    • PHP
  • MYSQLからデータを取り出して表示したい

    度々お世話になります。解説書を見ながらMySQLのデータを取り出して表示させようとしているのですが、理解に苦労しています。その本のやり方は以下の通りです。 *サーバ接続済み *データベース選択済み *使用するテーブル名:joke *使用するコラム:joketext $result = @mysql_query('SELECT joketext FROM joke'); if (!$result) { exit('<p>Error performing query: ' . mysql_error() . '</p>'); } while ($row = mysql_fetch_array($result)) { echo '<p>' . $row['joketext'] . '</p>'; } 1.$resultの中にはTURE/FALSE以外に何か入っているのでしょうか?多分データベースのデータがストックされていくのだと思うのですが、この変数には二種類のデータ(true/falseと実際のデータ)が入っているという解釈でよろしいでしょうか? 2.mysql_fetch_arrayですが、これが6行目でやっていることは、$resultからデータを取り出して行に配列していくということでよろしいでしょうか? 3.完全に解らないのは、$row['joketext']の部分で、いったいぜんたいこれは何をやっているんでしょうか?変数の後に[ ]が出てくるパターンはこの本では初めてなのですが、解説されていません。 4.echo '<p>' . $row['joketext'] . '</p>'; の部分で、このピリオドはどういった役割をしているのでしょうか?これも本では初めて出てくるのですが、解説されていなくて困っています。 たくさんの質問になりますが、ひとつでも解る方おられましたら、どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • 取得した列データを行に書き込むには

    取得した列のデータを出力する際に行に対して書き込みたいのですが、 どのように生成すればいいでしょうか。 $row[1]は1列分のデータが読み込まれています。 よろしくお願いします。 $filename = "dltest.csv"; $fp = fopen($filename, "w"); for($i=0;$i<$line;$i++) { $row = mysql_fetch_row($rs); $top=$row[1]; fputs($fp,split(',',$top));

    • 締切済み
    • PHP
  • MYSQL、PHPを使ってのデータとそのデータ数表示について

    よろしくお願いいたします。 このようなテーブルを組んでいます。  game        maker  マリオ      任天堂  カービィ     任天堂  FF        スクエニ   ドラクエ     スクエニ  ソニック     セガ このテーブルを使って、  任天堂(2)  スクエニ(3)  セガ(1) というように、メーカーが作ったゲームの数がカッコ内ででるように、makerを並べたいと思っています。 これはどのように組んだらよいのでしょうか? ちなみに、今はこのように組んで、(もちろんですが)失敗しています。。 ---------------------------------------------------------------- <?php mysql_connect('***','***','***'); mysql_select_db('***'); $sql = "select * from test"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo $row["maker"]; echo "<br />"; } } ?> ---------------------------------------------------------------- 初歩的な質問で大変恐縮ですが、よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • MySQLのテーブルのコラム名の取得方法

    MySQLのテーブルを一つのオブジェクトと考えるようなクラスを作ろうとしています。 このクラスの中で、テーブルの各コラム(またはフィールド名)を要素にした配列を作りたいのですが、やり方がわかりません。 自分がある程度調べてみたところでは、MySQLシェルの中では、次のように入力すると添付した画面のようにコラム名の一覧が表示がされるのですが これらのコラム名をPHPスクリプト内にある配列に格納出来ません。 mysql> SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="transaction"; まだ作成の途中ですが、自分のスクリプトは以下に掲載したようなものです // columnList initialize というブロックが該当部分です。ほかの部分はとりあえず働いてます。 どなたかお知恵を貸していただけないでしょうか。お願いいたします。 <?php class Table{ private $DBname; private $tableName; private $columnList=array(); private $dataArray=array(array()); private $totalRecords; //=================================================== public function __construct($database, $tablename) //=================================================== { $this->DBname=$database; $this->tableName=$tablename; $cxn=mysqli_connect("localhost","root","rsi2018","$database") or die("cannot connect to database"); // $columnList initialize $query="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\"$tablename\""; $result=mysqli_query($cxn, $query) or die("query failed :1"); $row=mysqli_fetch_array($result); foreach($row as $col){ $this->columnList[]=$col; } // $totalRecords initialize $query="select count(*) as count from $tablename"; $result=mysqli_query($cxn, $query) or die("query failed :3"); $row=mysqli_fetch_array($result); $this->totalRecords=$row["count"]; // $dataArray initialize for($i=0; $i < $this->totalRecords; $i++){ $query="select * from $tablename where id=($i+1)"; $result=mysqli_query($cxn, $query) or die("query failed :2"); $this->dataArray[$i]=mysqli_fetch_assoc($result); } }// end constructor //=================================================== public function showPart($id) //=================================================== { $data=$this->dataArray[$id - 1]; /* foreach($data as $key=>$value){ echo "$key = $value</br>"; } */ echo "ID: ".$data['id']."</br>"; echo "partNumber: ".$data['partNumber']."</br>"; echo "partName: ".$data['partName']."</br>"; echo "simpleName: ".$data['simpleName']."</br>"; echo "stock: ".$data['stock']."</br>"; echo "location: ".$data['location']."</br>"; }// end function //=================================================== public function getTotalRecords() //=================================================== { return $this->totalRecords; }// end function //=================================================== public function showColumnList() //=================================================== { foreach($this->columnList as $field){ echo "$field "; } echo "</br>"; }// end function }// end class ?>

    • ベストアンサー
    • PHP
  • MysqlデータをJpgraphで表示できません

    Mysqlからデータを取り出してphpにてjpgraph画像を作りたい思っているのですが、 どうもできません。 phpコードはこちらになります。-------------------- <?php // データベースに接続 if(!$con=mysql_connect("127.0.0.1","root","xxxxx")){ echo"接続失敗"; exit; } // データベースを選択 if(!mysql_select_db("stock",$con)){ echo"database select error"; exit; } // SELECT文を実行 $sql="SELECT * FROM `tstock`" ; if(!$res=mysql_query($sql)){ echo "SQL error cannot connect mysql table<BR>"; exit; } // 全人数を格納 $all_num=0; while($row=mysql_fetch_array($res)){ $all_num+=$row["KO"]; } // データ取得位置を先頭に戻す if (!mysql_data_seek ($res, 0)){ echo "データ取得位置の移動失敗<BR>"; exit; } //折れ線グラフの表示 ------------------------- require_once("jpGraph/jpgraph.php"); require_once("jpGraph/jpgraph_line.php"); require_once("jpGraph/jpgraph_canvas.php"); // データ $xdata = array(); while($row=mysql_fetch_array($res)){ $ydata = array($row['KO']); } //グラフ作成 $graph = new Graph(600,500,"auto"); $graph->img->SetImgFormat("png"); $graph->SetScale("textlin"); $graph->title->Set("Line Plot Example"); $graph->xaxis->SetTickLabels($xdata); $graph->xaxis->title->Set("Month"); $graph->yaxis->title->Set("y-title"); $lp1 = new LinePlot($ydata); $lp1->SetLegend("Temperature"); $graph->Add($lp1); $graph->Stroke(); // 結果セットの解放 mysql_free_result($res); // データベースから切断 mysql_close($con); ?> --------------------------------------------------- グラフ用データを手入力 $ydata1 = array(83,19,20,40,50); とするとグラフが描けるのですが、 以下からMYSQLデータを引っ張るとエラーがでてグラフを 作ることができません。 $xdata = array(); while($row=mysql_fetch_array($res)){ $ydata = array($row['KO']); } ------------------------------------------------------- mysql接続確認は別のファイルにて試したところ ちゃんとHTML上で接続と、mysqlのデータを表示 することができます。 どうすれば折れ線グラフを描くことができるのでしょうか?

    • ベストアンサー
    • PHP
  • PHP,MYSQLで特定例を表示する場合、

    PHP、MYSQLで特定例を表示する場合のsql文が分かりません。 データーベースmeibo no | name | sex | age | 1 | 一郎 | 男 | 20 | 2 | 一子 | 女 | 22 | 3 | 二郎 | 男 | 25 | 4 | 二子 | 女 | 27 | 女のみを表示したい場合を考え以下のようなコードを作りましたが上手くいきません。 <?php //データーベース接続 require_once('../require/dbcon.php'); //件数の表示 $recordSet = mysql_query('SELECT COUNT(sex) AS record_count FROM meibo WHERE sex(女)'); $data = mysql_fetch_assoc($recordSet); echo '<b>','※ 女性メンバー','</b> ('.$data['record_count'].' 人のデーターがあります。)<br /><br />'; //テーブルセット $recordSet = mysql_query('SELECT sex FROM meibo WHERE sex(女)'); while ($table = mysql_fetch_assoc($recordSet)) { echo $table['no']; echo $table['name']; echo $table['age']; } エラーでは $data = mysql_fetch_assoc($recordSet); と、 while ($table = mysql_fetch_assoc($recordSet)) のラインが出るのですが 何が悪いのか良く分かりません。 私の考えではsql文が悪いのではないかと思うのですが、どなたかお教えくださいませ。

    • ベストアンサー
    • PHP
  • MySQLでデータ表示

    MySQLでデータの表示を行っています 10件ずつ表示し、11件からは2ページ目に表示したいです サイトや本を見ながらデータ表示と次の10件のリンクは表示されるよう自力で頑張ったのですが 次の10件を押してもデータが変わらず1件目から10件目のままです どこが違うか教えてもらえますか。 どうコードを入力するか教えてくれたらありがたいです 一覧 ta2.phpです <html> <body> <form action = "ta2.php" method="GET"> <input type="hidden" name="page" value="0"> </form> <?php //データベースに接続 if (!$con = mysql_connect("localhost", "root", "admin")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("db_test", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select * from tbl_test" ; $sql.= " limit " . $page*10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> <th>操作</th> </tr>"; while($row = mysql_fetch_array($res)) { $ID = htmlspecialchars($row['番号']); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); echo "<tr> <td>$ID</td> <td>$NAME</td> <td>$ADDR</td> <td><a href='edit.php?番号=$ID'>修正</a> <a href='delete.php?番号=$ID'>削除</a></td></tr>"; header('content-type: text/html; charset="utf-8"'); if ($_GET) { // データがGETされていたら $page = isset($_GET['page']) ? $_GET['page'] : ''; // 取得 } } $sql = "select count(*) from tbl_test " ; if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } $row = mysql_fetch_array($res) ; $cnt = $row[0] ; //ページ表示 if(!$cnt > 10) echo ceil($cnt / 10), "ページの中の", $page + 1, "ページ目を表示<br>" ; //前の10件 if ($page != 0) { echo "<a href = ta2.php?page= $page>" ; echo "&lt 前の10件" ; } //次の10件 if (($page + 1)*10 < $cnt) { echo "<a href = ta2.php?page= $page>" ; echo " 次の10件 " ; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </table> </body> </html>

    • ベストアンサー
    • MySQL

専門家に質問してみよう