• ベストアンサー
  • 困ってます

mysql_fetch_arrayとテンプレートの使い方

データベースからランダムに取り出した3つのデータがあります。 取り出したデータにはそれぞれid、name、ageのデータが入っています。 $rs = mysql_query("select * FROM table order by Rand() LIMIT 0,3;",$con); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $tpl->assign(array( id => $rec[id], name => $rec['name'], age => $rec[age] )); } これだと1種類のデータが3つ連続して表示されてしまいました。 3種類のデータを全部表示するにはどのようにしたらよいのでしょうか? テンプレート(?)の使い方がよく分かっていないので検討違いのことをしている気がしますがよろしくお願いします。

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数1
  • 閲覧数356
  • ありがとう数7

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

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

>テンプレート(?)の使い方がよく分かっていない テンプレート次第なので回答のしようがありませんね。 while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ print $rec['id'].$rec['name'].$rec['age']; } できちんと拾えるかデバッグしてみてください。 拾えているならテンプレートのマニュアルをよく読んでください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

どうもありがとうございました。 テンプレートを勉強してみます。

関連するQ&A

  • 構文の省略について

    下記をもっと省略(短い構文で)して書きたいのですが、どのようなやり方があるでしょうか。 testというテーブルから指定したidのnameを取り出して並べたいだけなのですが、このような長々としたものしか思い浮かびませんでした。 <?php $n1 = 1; $n2 = 2; $n3 = 3; $rs1 = mysql_query("select * from test where id = '$n1';",$conn); $rec1 = mysql_fetch_array($rs1, MYSQL_ASSOC); echo $rec1['name']; echo <br>; $rs2 = mysql_query("select * from test where id = '$n2';"); $rec2 = mysql_fetch_array($rs2, MYSQL_ASSOC); echo $rec2['name']; echo <br>; $rs3 = mysql_query("select * from test where id = '$n3';"); $rec3 = mysql_fetch_array($rs3, MYSQL_ASSOC); echo $rec3['name']; mysql_free_result($rs1); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($conn); ?>

    • ベストアンサー
    • PHP
  • phpとmysqlでデータの一覧表示をしたいと思っています。

    phpとmysqlでデータの一覧表示をしたいと思っています。 ずらーっと並べるだけでなく、1ページに100件した場合には 10行毎に<hr>や<br>などのタグを挿入して間隔を空けたいのですが どのようにしたらいいのか悩んでいます。 現在は下記のようにLIMITで何度もqueryを発行しています。 できれば1回のqueryで処理したいのですが 他にどのような方法があるでしょうか。 $rs = mysql_query("select * from data order by id desc LIMIT 0,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 10,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 20,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • mysql_fetch_arrayでレコードが入っていないものも取得したい。

    こんにちは。mysql_fetch_array()でテーブルに入っていないレコードも取得したいのですが、どのようにすればよろしいでしょうか。 テーブルはこんな感じです。 仕事 NUM  1   1  2   1  4   1  5   1 その上で、PHPはこのようになっています。 //データの選択 $sql = "SELECT job, COUNT(*) as num FROM org GROUP BY job"; $res = db_query($sql, $conn); //データの出力 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $array = array( "job"=>$row["job"], "num"=>$row["num"] ); array_push($array, array( "job"=>$row["job"], "num"=>$row["num"] )); $tmp[] = $array; } return $tmp; このPHPのあと、Smartyに値を渡し、.tplで「A職(○件)」というようなことをやっています。 このときにフィールド「仕事」のレコード「3」は1つもデータが登録されていない状態です。そのためか、現状ではNULL値として扱われるようで、配列$rowに値を渡せず、.tplのほうではデータが表示されません。そこで、レコード「3」にデータを登録せずに、NULL値ではなく、例えば0などの値を渡したいと思います。 どのようなコードを書けば値を渡せるのでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • mysql_queryで取得したデータと外部のテキストファイルをマッチングしたい

    mysqlに次のようなテーブルがあります。 テーブル名 : meibo id | name 1 | 阿部 2 | 佐藤 3 | 橋本 そして次のようなテキストファイルがあります。 ファイル名 : blood.txt 1,A 2,B 3,O テーブルのidとテキストファイルの数字を共通項として連携したいのですが可能でしょうか? 具体的には、phpファイルでmysqlからデータを取り出し、blood.txtとマッチングさせて表示したいと思っています。 例えば、次のように記述箇所がある場合、どこでblood.txtとマッチングすることができるでしょうか? $rs = mysql_query("select * from meibo ;"$con); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ echo $rec['name']; //ここに血液型を表示させたい } それとも、そもそもこのようなことはできないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • mysql_fetch_array関数について

    お世話になります。 mysql_fetch_array(結果セット,受け取り配列タイプ) についてなのですが。 たとえばSQLの結果が複数件ある場合。 while($dtRec=mysql_fetch_array("select * from ***",MYSQL_ASSOC){ $result = $dtRec['aaaaa']; } 解説書には一件づつ受け取る結果の配列を 数値による配列で受け取るなら「MYSQL_NUM] フィールド名をキーとした配列で受け取るなら 「MYSQL_ASSOC」を指定、 両方なら「MYSQL_BOTH」を指定すると 書いてあるのですが、配列の意味が分かりません。 $resultにはEOFになるまで毎回、$dtRec['aaaaa'] の内容が格納されるのではないでしょうか? それとも、$resultにexplode関数のように 配列で件数分格納されるのでしょうか? 現在は、自分で配列に格納しようとしているので・・ (うまくいってません) いくら解説書を読んでも、MYSQL_NUM 、MYSQL_ASSOCの意味がよく理解 できません。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • mysql_fetch_array の関数について

    はじめまして、お世話になります。 php/SQL共に初心者レベルなのですが、ご指導ください。 mysql_fetch_array のSQLの結果が複数件ある場合なのですが、 参考書通り $sql = "select * from category where parent_id = '0' order by category_name"; $result = mysql_query( $sql ); while ( $category = mysql_fetch_array( $result ) ) echo "<a href=result.php?category_id=${category['category_id']}>${category['category_name']}</a> | "; とコーディングしたものの、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/アカウント名/public_html/アカウント名/topbar.php on line 26 とエラーが表示され困っています。 参考書にもエラーの詳細など記載れていませんし、他の媒体での色々と答えを探してはみたものの意味がわかりません。 解る方いらっしゃいましたら是非ご指導ください。 宜しくお願いします。

    • 締切済み
    • PHP
  • mysql_fetch_assocについて

    お世話になります。 MySQLからデータを取得してWEBで表示するために mysql_fetch_assoc関数を使っています。 SQL文を作って、mysql_query関数で実行させ、 結果をmysql_fetch_assocの引数にしているのですが 作成するSQL文に”DESC”を追加すると何も表示されなくなります。 (mysql_num_rowsでデータ数は取得できているのでSQL自体は有効の ようです) SQL文から”DESC"を取ると、mysql_fetch_assocの結果も正常に表示 されるのですが、どうしても降順に並べ替えて表示したいので 解決方法をご存知の方ご教授ください。よろしくお願いします。

    • 締切済み
    • PHP
  • mysql_fetch_objectの書き方を教えて下さい。

    PHP5.1.6を使用しています。 次のスクリプトを書きましたが、データが取得できません。 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT abcd,efgh from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); $xdata = array(); while($row = mysql_fetch_array($result)){  ← 11行目 array_push($ydata, $row->efgh);   ← 12行目 array_push($xdata, $row->abcd);   ← 13行目 } エラーログを見ると、 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 12 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 13 となっています。 var_dump($row) 句を入れ、ブラウザから見ると、当然ながら(?)bool(false) と表示されます。 11行目の mysql_fetch_array を mysql_fetch_object に入れ換えて while($row = mysql_fetch_object($result)){ としても結果は変わりません。 リファレンスマニュアルやサンプルを参照して種々手直ししましたが、今ひとつ正解に辿り着けません。 データを取得して配列に入れるには、どのように修正すれば良いか、教えて頂けませんでしょうか。

    • ベストアンサー
    • PHP
  • select構文について

    テーブルを結合して各カラムを出力したいのですが、両方のテーブルに同じカラム名があった場合どのように処理したら言いのでしょうか? 次のようにやってみたのですが、テーブル名をASで置き換えるとうまくいかないのでしょうか。 $rs = mysql_query("select u.name,a.name, from user AS u LEFT JOIN address AS a ON u.id=a.id ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $username = $rec['u.name']; $officename = $rec['a.name']; echo '$username'; echo '$officename';

    • ベストアンサー
    • MySQL
  • mysql_fetch_array取得結果を2行で

    mysql_fetch_arrayで取得した結果を、 2行で表示させるには、どうすればよいでしょうか? ※そのままだと横に長くなり過ぎるので、 複数行にして、テーブル横幅を抑えたい、です。 <現状> mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb"); $result = mysql_query("SELECT * FROM mytable"); $body .= "<table> <tr> <th>ID</th> <th>氏名</th> </tr>"; while ($row = mysql_fetch_array($result)) { $body .= "<tr> <td></td> <td>".$row[name]."</td> <td>".$row[preid]."</td>

    • ベストアンサー
    • PHP