初心者でもわかるphpのwhile文の使い方

このQ&Aのポイント
  • phpでのwhile文の使用方法について初心者向けに解説します。while文を使ってデータベースからの情報を表示する方法を説明します。
  • phpのwhile文を使用してデータベースから情報を取得し、表示する方法を詳しく解説します。初心者の方でもわかりやすく説明しています。
  • この記事では、初心者向けにphpのwhile文の使い方を解説します。データベースからの情報を取得し、表示するためのコードを紹介します。
回答を見る
  • ベストアンサー

whileがいまいちわからなくて?

以下のphpの while($mydb = mysql_fetch_array($rst)){ $arr = array( array( "no" => $mydb["no"] , "title" => $mydb["title"] )); } とこで、表示はされるのですが。 phpには初心者でコレでうまく表示されるのかわからなく質問して見ました。 <?php require_once("mydb_ini.php"); require_once "JSON.php"; $con_mydb = mysql_connect($MYDBSERVER, $MYDBUSER, $MYDBPASSWARD); $selectmydb = mysql_select_db($MYDBNAME, $con_mydb); $mydbsql = "select * from newsline"; $rst = mysql_query($mydbsql, $con_mydb); while($mydb = mysql_fetch_array($rst)){ $arr = array( array( "no" => $mydb["no"] , "title" => $mydb["title"] )); } $json = new Services_JSON; $encode = $json->encode($arr); header("Content-Type: text/javascript; charset=utf-8"); echo $encode; mysql_free_result($rst); $con_mydb = mysql_close($con_mydb); ?>

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

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>whileで、データはいくつか入っているのですが、表示が一個しか表示されなく。 whileの中で毎回(違うデータを取得しても)$arrを上書きしていますから、最後に$arrに代入したものしか残っていませんよね。whileのループでは「配列」に代入しておいて $array = array(); while($mydb = mysql_fetch_array($rst)){ $array[] = array( array( "no" => $mydb["no"] , "title" => $mydb["title"] )); } あとで取り出しながら使う foreach ($array as $arr) { // この中で$arrを処理する } もしくはwhileの中で一気にやってしまうことになります。 while($mydb = mysql_fetch_array($rst)){ $arr = array( array( "no" => $mydb["no"] , "title" => $mydb["title"] )); // ここで$arrを処理する } もちろん、headerなどは事前に出力しておかないといけません。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>phpには初心者でコレでうまく表示されるのかわからなく質問して見ました。 何を聞きたいのかわかりませんが、表示されるかされないかわからないという 意図であれば、実際にやってみればわかるのでは? ちなみに、 >$encode = $json->encode($arr); していますが、配列をエンコードして文字列にできるライブラリなのでしょうか? 戻り値についてはライブラリのマニュアルをよく読んでみてください

owo0223
質問者

補足

すみません!急いでたもので確認せずに投稿してしまったので。 whileで、データはいくつか入っているのですが、表示が一個しか表示されなく。 今回は、エンコードとかの質問ではなく、whileがどうしてもできないのです。 大変申し訳ございませんがよろしくお願い致します。

関連するQ&A

  • select文

    こんばんは。PHPでデータベースからレコードとフィールドを表として取り出そうとしてますが、うまく行きません。 MySQLへの接続はうまくいってると思うので、while文が間違ってるのでしょうか?PHPのバージョンはPHP Version 4.4.2です。 よろしくお願いしますm(__)m <?php require_once("dbini.php"); $con = mysql_connect($server, $user, $pass); $select = mysql_select_db($dbname, $con); $sql = "select * from book"; $rst = mysql_query($sql, $con); $body = "<table border='0' cellpadding='5' cellspacing='5' width='500'><tr><td>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<b><font size='+2'>".$col["title"]."</font></b>" $body .= "</td></tr>"; $body .= "<tr><td colspan='2'>".$col["article"]."</td></tr></table>"; } mysql_free_result($rst); $con = mysql_close($con); ?> <html> <body> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP
  • MySQL→PHP→JSONをしたいのですが…

    現在、MySQLから取得したID一覧をJSON形式で出力したいのですが、うまくいきません。どうしたらよいでしょうか?よろしくお願いします。 なお、PHPでは以下のような処理をおこなっています。 ///////////////////////////////////////////////////////////////////// ・ ・ ・ //SQLを発行して結果セットを取得します $rst = mysql_query($sql); while ($col = mysql_fetch_array($rst)) { $return[] = $col; } function get_id($f) { return $f["dataid"]; } $return = array_map( "get_id", $return ); // JSON形式にして返す if( $return ) print Jsphon::encode( $return ); ・ ・ ・//////////////////////////////////////////////////////////////////// このようなかんじです。 この出力結果は『 ["18","19","20"] 』このようになるのでJSONでうまく処理できていないようです。 JSON形式なら『 {"dataid":"18","dataid":"19","dataid":"20"} 』 になるはずなのですが…何故でしょうか?教ええてください。お願いします。

    • ベストアンサー
    • PHP
  • 一行目のレコードを2度表示させたい。

    レコードを読み込むのとは別に、最終書き込み者(ソートした最初のレコード)を表示させたいのですが、mysql_fetch_array($rst)を読み込ませると1位行目が消え、次ぎにmysql_fetch_array($rst)が読み込む時には2行目からになります。 ------------------------- 最終書き込み者 一太郎さん「一番目のタイトル」 -レコードの一覧- □一太郎 一番目タイトル □次郎  2番目のタイトル □佐武郎 三番目のタイトル ------------------------- としたいのですが。 SQLを2度実行すればできるのですが、無駄な処理な気もします。 別のテーブルやこの情報だけtextに保存するのも無駄な気もするし。 //一番目をゲット $sql = "select * from siritori order by db_no desc limit 1;"; $rst = mysql_query($sql,$con); //$rst2 = $rst; $col = mysql_fetch_array($rst); print "最終書き込み者".$col["name"]."さん".$col["title"]."<hr>"; //一覧を表示 $sql = "select * from siritori order by db_no desc limit 10;"; $rst = mysql_query($sql,$con); //SQL配列読み込み(select文) while($col = mysql_fetch_array($rst)){ print $col["name"]."さん".$col["title"]."<br>".$col["kome"]."<hr>";} //$rst2 = $rst; 配列をコピーできないかなー?とかもやったのですができない。 なんとか巧い解決方法はないでしょうか? 連想配置や、MySQLには詳しくないのでお教えください。

    • ベストアンサー
    • MySQL
  • functionを使ってmysqlの指定を分けたい

    functionを使ってmysqlの指定を分けって、 分けたいのですが、どうしても $rst = mysql_query($mydbsql, $con_mydb); とこで、エラーが呼び出されてしまいどうしたらいいのかわかりません。 function my_sql_ini(){ require_once("mydb_ini.php"); $con_mydb = mysql_connect($MYDBSERVER, $MYDBUSER, $MYDBPASSWARD); $selectmydb = mysql_select_db($MYDBNAME, $con_mydb); $num = 0; $mydbsql = "select * from schedule_user"; $rst = mysql_query($mydbsql, $con_mydb); $num = mysql_affected_rows(); } function my_sql_user(){ my_sql_ini(); if($con_mydb){ print "ok"; } else { print "ng"; } } function user_display(){ my_sql_ini();   $mydbsql = "select * from schedule_user order by user_id"; if($con_mydb){ print "ok"; } else { print "ng"; } }

    • 締切済み
    • PHP
  • while文から抜け出せません。。。

    現在、以下↓のようなプログラムで、MySQLからIDの一覧を拾いたいと考えています。しかし、一覧の中に空欄(登録する際はこんな感じです→(''))を代入したところ、while文から抜け出せません。どうしたらいいでしょうか?while文をやめる方法でもいいので、お願いします。 while ($col = mysql_fetch_array($rst)) { $return[] = $col[dataid]; }

    • 締切済み
    • PHP
  • スーパーグローバル変数・POSTとGETを同時に受け取るページについて

    すみません。初歩的な質問かもしれませんが、宜しくお願い致します。 PHP+MySQLを利用して、都道府県名で検索するプログラムを利用しています。 そして、サーバー移行にともない、PHPのバージョンが変わりました。 これまでは、単に「$変数」としていたのですが、 $_POST['変数']または、$_GET[変数']としなければいけないようです。 よって、従来のPHPファイル内で、 $ken_name = $_POST['ken_name']; として、置き換えるようにしました。 これで、うまくいったと思ったのですが、このPHPファイルは、GETでも、利用できるようしたいのです。 実は、その方法がわかりません。 (例) POSTで受け取る場合は、正常に動くのですが、GETでも受け取るようにするには、どうすればいいのでしょうか?1つのファイルで、POSTとGETの両方を受ける方法はありますでしょうか? <?php require_once("./***.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $ken_name = $_POST['ken_name']; $sql = "select * from YTABLE Where ken = '$ken_name'"; $rst = mysql_query($sql, $con); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title></title> </head> <body> <?php while ($row = mysql_fetch_array($rst)) { print $row["ken"].'-'.$row["name"].'<br>' ; } mysql_free_result($rst); $con = mysql_close($con); ?> </body> </html>

    • ベストアンサー
    • 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
  • MYSQLからのarrayデータをjpgraphに表示

    いつもお世話になっています。 MYSQLからデータをarrayで受け取りjpgraphに表示したいのですが SQL、PHP、jpgraphの設定は大丈夫で、 以下抜粋 <?php require_once 'jpgraph.php'; require_once 'jpgraph_bar.php'; $xdata = array('Jan','Feb','Mar','Apr','May'); $graph = new Graph(200,150,'auto'); $graph->SetScale('textlin'); $graph->xaxis->SetTickLabels($xdata); $ydata1 = array(13,9,17,8,13);←ここの部分で の配列を手入力だと問題ないのですが、 <?php mysql_connect('localhost','root','xxxx'); mysql_select_db('xxxxx'); $sql = "SELECT * FROM kaiin WHERE shimei LIKE '%あ%'"; $result = mysql_query($sql); $sp_arr = array(); while($row = mysql_fetch_array($result)){ $sp_arr[] = $row["renban"]; } このSQLからのデータ配列を折れ線グラフにしなくてはならないのですがどうにも動かず、arrayをSESSONでやりとりする予定でいますが、print_rでも中身は見えませんので見当もつかず困っています。 別ページでも扱えるようにセッション変数でのやりとりも含めて 教えていただきたいのですが、どなたかご教授いただけないでしょうか?

    • ベストアンサー
    • PHP
  • PHP+MYSQLでレコードの表示させ方

    いつも初心者の質問でスミマセン。 PHP MYSQL で 会員制ページを作っています。 このような時にはどういう風にしたらいいか教えてください。 1件のレコードに 名前 出身県 性別 がある時に 下記のようにその個人のページにリンクしたいのですが ひとつの県だけなら出来るのですが、 このように条件を色々と設定するにはどうしたらいいか ヒントだけでもお願いいたします。 沖縄県出身者 男 A B C 女 D E F 東京出身者 男 G H I 女 J K L このようにしていました。 <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from mem where seibetu = 1 and area = 1 " ; $rst = mysql_query($sql, $con); $body1 .= ""; while($col = mysql_fetch_array($rst)) { $body1 .= "⇒" . "<A href='" . $col["id"] . "j.html'>" . $col["name"] . "</A>"; $body1 .= "<br>\n"; } mysql_free_result($rst); $con = mysql_close($con); ?> これでボディに<?= $body1 ?> を張っていました。 これを<?= $body2 ?> と繰り返したらいいのかと思い色々していましたが どうしてもうまくいきません。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • SELECT文で取り出したデータを文字列を別のtableのひとつのフィールドへ

    宜しくお願いいたします。 PHP5 Mysql5 で運用しています。 $sql = "SELECT * FROM member WHERE ****** $rst = mysql_query($sql, $con); で取り出して while($col = mysql_fetch_array($rst)) { print $col['mail']; } これで表示はさせられるのですが、 この出てきたデータを [ , ] で区切って全部一まとめにして。 次の画面で、別のテーブルの一つのフィールドに 全部入れたいのですが判りません。。 表示はさせられるのだから、それを一まとめにしては 出来るつもりでしたが。どうしても判りません。 どのようにしたらよろしいでしょうか? アドバイスなど、宜しくお願いいたします。

    • ベストアンサー
    • PHP