解決済みの質問
お世話になっております。
長くなります。
最近はプログラムと言う敵に寿命を縮められております。
質問をさせて頂きます。
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になります。
投稿日時 - 2009-01-20 13:57:17
なんかあっちこっちで質問見かけてて気の毒だなーとか思ってました
(間口は広い方が返答くるかもしれませんが、半端にたくさん出して
おくとあんまり印象が良くないので、一つに絞った方がいいですよ)
私はPEARの使い方がほとんどわからないので、今回はぱっと見て
コレは違うと思ったところだけの指摘でした
私が言った環境っていうのは、変数の名称のことです
サンプルコードをコピペしても、iinnffooさんのファイルで
違う変数名を使っていたらエラーになるので、そこは自分の
使っている変数に合わせて修正が必要ですよってことです
通常言われる環境の提示というと今回のケースならPHPとMYSQLの
バージョンです バージョンによって使えない関数があるので
なるべくiinnffooさんの環境に合わせての返答が出来るように
皆さん確認をしてくれるので、出来れば先に書くと良いです
で、今回のiinnffooさんの場合は fetchRow を利用しての記述が
わかりやすくて良いと思うので、こちらに絞って調べたり
質問したりするのが良いと思いますよ
あ!今気づきましたが、ニックネームの添え字のところ間違ってます
nicnamになってますよ これが引っかかってるんじゃないですか??
一旦、まとめて修正したものを下に貼っておきますので
これで試してみて下さい
<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["nicname"]); ?></td>
<td><?php print_r($row["point"]); ?></td>
</tr>
<?php } ?>
</table>
ご自身も一生懸命 勉強しても出来なくてイライラしているんだろうとは
思うのですが、やっぱり基本がわからないと応用は出来ないので、
今回一息ついた後でも、またこういうことをする機会が今後もあるなら
これを機にしっかり勉強してみたらいいと思いますよ
これの前に出した質問に対して英文に例えた返答を下さった方への
レスがちょっと失礼だなーって私は思ったので、おこがましいですが
苦言です
初めはみんなわからないからこそ、基本を学んではどうか と
おっしゃったんだと思いますよ
私も独学なのでiinnffooさんの気持ちは十分わかりますけどね
参考URL:http://pear.plus-server.net/package.database.db.db-result.fetchrow.html
投稿日時 - 2009-01-20 20:56:26
お礼
出ました!!!
d(°-^*)⌒☆
色々教えてくださり感謝いたしております!
もうくたくたでした・・・
テーブルにしっかり入ってくれましたV(^_^v)(v^_^)v
ちょっと文字化け出てしまったのでこれは自力で頑張りたいと思います!
koke29さん初め様々ご教授くださいました方々へ熱く御礼を申し上げます!
nora1962さん
inu2さん
yambejpさん
masa6272さん
sakusaker7さん
皆様、有り難う御座いました!
そして大変申し訳御座いませんでした!
またなにかありましたらご教授の方宜しく御願致しますv(=∩.∩=)v
投稿日時 - 2009-01-20 21:43:19
3人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
getAllでやるなら
for( $a = 0; $a<count($row); $a++ ){
for( $b=1;$b<count($row[$a]);$b++ ){
print $row[$a][$b]." ";
ここの$rowは全て$testに変更
fetchRowの方ですが
$rs=$db->query("SELECT nicname,point FROM ".$k_user_table." ORDER BY point DESC LIMIT 0,10");
の$dbは$DBじゃないんでしょうか(getAllのコードと見比べると)
こちらで返答する内容は基本的に推測で書いたものがほとんどなので
変数などはキチンと自分の環境にあわせないとエラーになりますよー
投稿日時 - 2009-01-20 15:26:17
補足
ちなみにtestに変更をしてみて出たのがこれです!
Parse srror : syntax error unexpected $end in /サイト名~ on line 93
こちらになっております!
抽出方法はいろいろとあるみたいですけど・・・方法はなんでも出て欲しいんです!
投稿日時 - 2009-01-20 19:18:53
お礼
御回答有り難う御座います!
お世話になっております!!
環境に合わせてないからなんでしょうか(ノ_・)
またまたエラー出ました(T.T ) ( T.T)
こう言う質問の場合環境と言う物をどのように記載するべきですか!
ブラウザの種類やウィンドウズ2000などでしょうか!
ほんっとに嫌になって一つ一つ抽出する勉強をしてました。。。
これで四日目です。
この四日で三ヶ月くらいは寿命が縮まった気がします。
投稿日時 - 2009-01-20 19:14:20