Arrayってなんですか?

このQ&Aのポイント
  • Arrayについての質問です。PEARを使った抽出方法と整列方法について教えていただきたいです。
  • 質問者はシステム開発者に相談しましたが、うまくいかなかったようです。結果としてはArrayという文字が表示され、血圧が上がるほどイライラしています。
  • 現在のコードとしては、指定範囲内のnicnameとpointを抽出し、それを整列させる方法が分からないとのことです。
回答を見る
  • ベストアンサー

Arrayってなんですか?

自分は素人でPEARを使った抽出方法とその結果の整列方法を、システム開発者に聞きましたが、やってもまったくうまくいきません。 <? $test = $DB->getAll(&quot;SELECT nicname,point FROM &quot;.$k_user_table.&quot; order by point DESC LIMIT 0,3 &quot;); print_r($test); ?> 結局こちらで教えていただいた抽出部分の $test = $DB->getAll("SELECT nicname,point FROM ".$k_user_table." order by point DESC LIMIT 0,10 "); は出たのですが、改行もなくArray等と言う訳の分からない文字がやたら出て、かなり血圧が上がります。 $test = $DB->getAll("SELECT nicname,point FROM ".$k_user_table." order by point DESC LIMIT 0,10 "); で抽出した物を、 while($row =$test->FetchRow()) {  print $row[0]; print $row[1];  print &quot;<hr>&quot;; } の様な形で整列させるためにはどうしたらよいですか? 現在まで出来てるのは、 <? $test = $DB->getAll(&quot;SELECT nicname,point FROM &quot;.$k_user_table.&quot; order by point DESC LIMIT 0,3 &quot;); print_r($test); while($row =$test->FetchRow()) {  print $row[0]; print $row[1];  print &quot;<hr>&quot;; } ?> です。 と言うか、これで出るとシステム側から言われてますが、エラーばっかり出やがります。 パソコンの中に手を突っ込んでガリガリ揃えてやりたい気分ですね。 短気な私はそろそろやばいです。

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

「getAll」で配列に取得したのなら for( $a = 0; $a<count($row); $a++ ){   for( $b=0;$b<count($row[$a]);$b++ ){     print $row[$a][$b]." ";   }   print "<br>";   print "<hr>"; } ででませんか。 個人的には「getAll」よりは「query」を使って $rs=$db->query("SELECT nicname,point FROM ".$key_table." ORDER BY point DESC LIMIT 0,10"); ?> <table border="1">  <tr>   <th>名前</th><th>ポイント</th>  </tr>  <?php while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){ ?>   <tr>    <td><?php print($row['nickname']); ?></td>    <td><?php print($row['point']); ?></td>   </tr>  <?php } ?> </table> のほうがやりたいことに近いのではないかと思いますが。 (インデントのために全角スペース使ってます。コピペするときは注意してください)

iinnffoo
質問者

お礼

ちなみにエラーの文字はこちらになります。 Fatal error: Call to a mamber function query() on anon-object in/サイト名~ on line 147 と出ています。

iinnffoo
質問者

補足

ご教授頂き有り難う御座います! こんにちは! query等色々抽出方法あるんですね。。。 勉強になりました! したかったのはqueryの方法でした! 初心者の自分には合ってると思います! でもエラーが出てしまいます。。。 テーブル名とスペースを変えて見ましたけどダメでした。。。 原因は何でしょう。。。 <? $rs=$db->query("SELECT nicname,point FROM ".$k_user_table." ORDER BY point DESC LIMIT 0,10"); ?> <table border="1"> <tr> <th>名前</th><th>ポイント</th> </tr> <?php while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){ ?> <tr> <td><?php print($row['nickname']); ?></td> <td><?php print($row['point']); ?></td> </tr> <?php } ?> </table>

関連するQ&A

  • 間違いを教えてください。

    エラーが出てしまいます。 <? $test = $DB->getAll(&quot;SELECT nicname,point FROM &quot;.$k_user_table.&quot; order by point DESC LIMIT 0,3 &quot;); while($row =$test->FetchRow()) {  print $row[0]; print $row[1];  print &quot;<hr>&quot;; } ?>

    • ベストアンサー
    • PHP
  • エラー箇所をお願いします。

    エラー箇所をお願いします。 <? $test = $DB->getAll(&quot;SELECT nicname,point FROM &quot;.$k_user_table.&quot; order by point DESC LIMIT 0,3 &quot;); print_r($test); while($row =$test->FetchRow()) {  print $row[0]; print $row[1];  print &quot;<hr>&quot;; } ?> 何百回やっても出来ません。 なぜ、結果表示をして整えたいだけなのにここまでプログラムは複雑にしたがるのか不思議です。 基本的な形の記載あるサイトすらありません なぜややこしくするんですかね・・・ 結局プログラムは優秀でも要領を得ていない仕様なら内容は良くても「優秀」といえませんよね(笑) プログラムの中に「;」「""」「<>」等無駄な文字を入力せずに起動するシステム作りが大切だと思いますがね・・・子プログラムと言いますか・・・

    • ベストアンサー
    • MySQL
  • DBkらの抽出した結果を整列されるためにはどうしたらよいですか。

    宜しく御願いたします。 現在のソースになります。 <?php $test = $DB->getAll("SELECT nicname,point FROM ".$k_user_table." order by point DESC LIMIT 0,3 "); print_r($test); ?> 上記の表示結果はこちらです。 Array([0]=>Array([0]=>田中さん[nicname]=>田中さん[1]=>100 [point]=>100 [1]=>Array([0]=>木村さん[1]=>124 [point]=>124 重複を無くして改行を付けたいと思っております。 理想はこちらです。↓ 田中さん 100PT所有 木村さん 124PT所有 の様な感じです。 宜しく御願いたします。

    • ベストアンサー
    • Perl
  • 大変困っております。PHP DBにお詳しい方宜しく御願致します。

    初歩的なことかもしれません。 御助言頂きたいと思いご質問させて頂きます。 ポイントサイトを構築している途中で会員さんのポイント獲得ランキングを昇降順にDBより抽出しようと試みましたが無理でした。 こちらのソースからの後の記述が分かりません。 SELECT * FROM $k_user_table order by point DESC 結局分からぬまま最終的に以下の様にすることが精一杯でした。 ---------------------- <?php $point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC"); print $point_count; ?> ---------------------- この形でもやはり1件の獲得ポイントのみが出たり或いは一桁のちょっと訳が分からない数字が出たりします。 ポイントの高い順に10位まで表示したいと思っております。 テーブル名はこちらSELECT * FROM $k_user_table order by point DESCで間違いないはずなんですけどDBへの接続等その後のWHERE・=・<・>・等の記述方法の(~の場合~にする)の様な定義付けが分かりません。 先輩方の御助言頂けますでしょうか。 宜しく御願致します。

    • ベストアンサー
    • PHP
  • sqglについて

    sqlのlimitとdescは一緒に使えますか? 例 select * from hp order by limit id 0,20 order by id desc; idを小さい順に1~20個表示したいです。

    • ベストアンサー
    • MySQL
  • MySQLで最小値

    次の様な連番が入ったseqというフィールドがあります。 => select seq from hoge order by seq desc; seq ----- 427 426 425 424 423 422 421 420 419 418 (10 rows) これにlimit 5とすると次の様にな結果になります。 => select seq from hoge order by seq desc limit 5; seq ----- 427 426 425 424 423 (5 rows) このlimit 5で表示された結果の最小値(423)を取得したいのですが 上手くいきません。(わかりません) min(seq)を試してみたのですが418が返ってきてしまいます。 => select min(seq) from hoge order by seq desc limit 5; min ----- 418 (1 rows) limitで表示された結果の最小値(423)を とる事はできるのでしょうか? どうぞ宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • 教えてください!

    お世話になっております。 長くなります。 最近はプログラムと言う敵に寿命を縮められております。 質問をさせて頂きます。 MYSQLへ接続し会員さんのポイントとニックネームを抽出しそれをランキングとして10件表示したいと思っております。 現在二通りのやり方を教えて頂きました。 片方は抽出自体は出来ていても Array[0]等と言う文字が出てきて改行も出来てない状態です。 そのソースはこちらです。 <? $test = $DB->getAll("SELECT point FROM ".$k_user_table." order by point DESC LIMIT 0,10 "); print_r($test); ?> 上記に改行などするための for( $a = 0; $a<count($row); $a++ ){ for( $b=1;$b<count($row[$a]);$b++ ){ print $row[$a][$b]." "; } print "<br>"; print "<hr>"; } を付けると接続エラーが出ます。 もう一つはqueryでの方法です。 <table border="1"> <tr> <th>名前</th><th>ポイント</th> </tr> <? $rs=$db->query("SELECT nicname,point FROM ".$k_user_table." ORDER BY point DESC LIMIT 0,10"); ?> <?php while($row=$rs->fetchRow(DB_FETCHMODE_ASSOC)){ ?> <tr> <td><?php print_r($row["nicnam"]); ?></td> <td><?php print_r($row["point"]); ?></td> </tr> <?php } ?> </table> こちらはすべてエラーが出てしまいます。。。 自分的にHTMLが使えるqueryでの抽出方法が合っているかと思います。 実は、今使っているページは <?php /*キャッシュクリア*/ header('Cache-control: no-cache'); header('Pragma: no-cache'); /*セッションスタート*/ session_start(); $SID = session_id(); if($_SESSION['sid']=="") { header("Location: login.php"); } $sid = $_SESSION['sid']; $nicname = $_SESSION['nicname']; $k_pageID = 0; if(isset($_GET['k_pageID'])) { //広告ページNO. $k_pageID=($_GET['k_pageID']-1)*10; } /*文字コード*/ ini_set('mbstring.internal_encoding','SJIS'); //データベース接続 require_once('./adodb/adodb.inc.php'); //Smartyモジュール include("./Smarty/libs/Smarty.class.php"); //SmartySJIS対策 include("./class/sjis.inc.php"); 等が入っている別なファイルをコピペしてその下に先程のソースを入れております。(もちろん<?php?>で新たに区切っています) よく見ると、//データベース接続がすでにされている状態なのかもしれません。 ただ、一番初めのソースでは抽出自体出来ているのでとりあえずは特にそのすぐ上のソースはDB抽出に影響はありませんよね。。。 こちらのエラーが出てるんですがまたこれはソースなどの間違いですよね。。。 Fatal error: Call to a mamber function query() on anon-object in/サイト名~ on line 147 環境はウィンドウズ2000です。 ライブラリはMYSQLになります。

    • ベストアンサー
    • MySQL
  • Select結果をSelect

    お世話になります。 以下のSQL文のイメージでselectの結果をさらにselectしたいのですが”subquery has too many columns”というエラーを吐かれます。 Postgreに合った書き方がお分かりでしたら教えてください。 よろしくお願いします。 select * from [DB名] where [パスワード] = 'test' IN ( select * from [DB名] where [ユーザID]='1111' order by [更新日] desc limit 3) [やりたいこと] テストDBからユーザIDが1111の行を更新日をキーに降順で並べ、先頭から3行分を取り出す。 その3行からパスワードが"test"のものをselectしたい。

  • order byで並び変えし最大値の項目の抽出方法ついて

    すみません。 order byで並び変えし最大値の項目のみ一意で抽出したいのですが 、 SELECT * from ta order by no,date1,date2; no | date1 | date2 ----+-------+------- 11 | 2008 | 0501 11 | 2008 | 0502 11 | 2008 | 0502 11 | 2008 | 0503 12 | 2008 | 0501 12 | 2008 | 0502 12 | 2008 | 0503 13 | 2008 | 0501 13 | 2008 | 0502 13 | 2008 | 0503 14 | 2008 | 0501 とあった場合、 no,date1,date2のorder by順番で並び変えし 11 | 2008 | 0503 12 | 2008 | 0503 13 | 2008 | 0503 14 | 2008 | 0501 とno項目に対し一つずつだけ出力したい場合どのようにしたらよいのでしょうか? LIMITとoffsetだと1項目分しか出力されず困っております。 SELECT * from ta where no in (select no from ta group by no limit 1 offset 0) order by no,date1 desc,date2 desc limit 1; 宜しくお願い致します。

  • 抽出結果にランク付けを・・・と思い・・・。

    初歩的なことですみません。 前回グループによる結果をランク付けの教えていただき出来ました。 大変感謝いたします! 他にも色々取ってみようと思いしていたんですけどできません。 アクセスポイントの多い方を順番にランク付けをするという単純な事なんですけど限界です。 $rs=$DB->execute("SELECT * FROM $k_user_table ORDER BY ac_point DESC"); $total=$result->RecordCount(); while($row =$result->FetchRow()) { $id[] = mb_convert_encoding($row['id'],'SJIS','EUC-JP'); } for($i=0; $i<10; $i++) { print("第".($i+1)."位:".$point[$i]."G"); } この様にとりました。 しかし何かが違うみたいです。 順番に並んでもポイントが取れてなかったり逆にポイントは順番に取れていてもランク付けできてなかったり・・・。 教えてください。まちがいはどこですか。

    • ベストアンサー
    • PHP