くだすれPHP(超初心者用)6

このエントリーをはてなブックマークに追加
952nobodyさん:2009/08/19(水) 18:21:07 ID:???
つーかあー

if(isset($_POST["sumbit"])) echo 〜
             ^^
953nobodyさん:2009/08/19(水) 18:26:01 ID:lH3P7pqc
>>952

ちょっと新しい眼鏡買ってくる

ありがとうございました
954nobodyさん:2009/08/19(水) 18:39:26 ID:???
>>951
余談だけど「PHP_SELF」はやめときなさい。
「SCRIPT_NAME」を使おうね。
955nobodyさん:2009/08/19(水) 18:48:15 ID:???
SELFだとGETリクエストを紛れ込ませられるんだっけ?
956nobodyさん:2009/08/19(水) 19:11:48 ID:???
>>953
おじさん、老眼かい?w
957nobodyさん:2009/08/19(水) 19:18:27 ID:???
> このスレッドは、他のスレッドでは書き込めない超低レベル、
> もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
958nobodyさん:2009/08/19(水) 21:42:56 ID:???
自分に送るなら空白が吉
959nobodyさん:2009/08/20(木) 09:24:44 ID:???
php,mysql に関する質問です。
引数でテーブル名を受け取って、そのままテーブル(行)内容を出力するのはどうすればいい?

function db_print($table) {
 // db接続部分は略

 $sql = "select * from $table";
 foreach ($dbh->query($sql) as $row) {
  // print ($row['name']); //列名を指定すれば出来る
 }
}
960nobodyさん:2009/08/20(木) 11:17:13 ID:???
http://jp.php.net/manual/ja/book.mysql.php
この関数群の中に答えがあるはず
961nobodyさん:2009/08/20(木) 12:01:41 ID:???
mysql_num_fields と mysql_field_name だぁね
962nobodyさん:2009/08/20(木) 12:16:45 ID:???
つーかPear::DBだろ、その書き方だと。
だったらこのあたり見れ。
http://pear.php.net/manual/ja/package.database.db.db-common.tableinfo.php

上のお二方は、pear じゃないDB接続ライブラリを使った場合の話。
db接続部分を略しているとマトモな回答がもらえないぞ。いろいろな
接続方法があるんだから。
963959:2009/08/20(木) 12:24:03 ID:???
>>960-961
ありがとう。試行錯誤してみる。
ただ、できれば PDO 関数群でやってみたかった。
現状だと print_r でとりあえず出力出来ると分かったけど、
これだと出力形式が固定される気がしたので、質問してみたんだ。

うーん、質問が悪い気がするので取り下げます。
初心者過ぎたな。悪い。
とか書いてたら、>>962ありがとう。
964nobodyさん:2009/08/20(木) 15:39:46 ID:???
拡張子を.htm、.htmlのままでphp動かせる?
965nobodyさん:2009/08/20(木) 15:41:14 ID:???
Apacheで設定汁
966nobodyさん:2009/08/20(木) 15:45:16 ID:???
JavaScriptで

document.write("<a href=http://www.xxxx.com/xxxxx.php></a>");

みたいに書くとか。
967nobodyさん:2009/08/20(木) 15:47:13 ID:???
リンク貼るだけかよw
968nobodyさん:2009/08/20(木) 18:08:33 ID:???
<script type="text/javascript" src="xxx.php"></script>
これで池。
969nobodyさん:2009/08/21(金) 14:52:20 ID:???
PHP入門書の中に条件式としてis_int($channel)とあったんですが、
これってどういう意味なんでしょうか・・・

// チャンネルを変える
public function channel($channel) {
if (is_int($channel)) {
$this->channel = (int)$channel;
echo "チャンネルを{$this->channel}に変えました\n";

こういった文です・・・
970nobodyさん:2009/08/21(金) 15:00:16 ID:???
971nobodyさん:2009/08/21(金) 15:29:41 ID:???
oopの入門コードだなw
972nobodyさん:2009/08/21(金) 15:30:18 ID:???
>>969
無駄の多い書き方だね
intをわざわざintにキャストしてるとこも謎だね
PHPは型が曖昧だから引数に違う型いれられても
自分で判定ロジック書かないといけないってことじゃないかな?
OOPで書いといてなぜException使わないのかと問い詰めたいけど
まぁその入門者は破り捨てていいよ
973nobodyさん:2009/08/21(金) 15:40:47 ID:???
たしかにw
intであるのを確認した後でintにキャストってのがなんとも…
974nobodyさん:2009/08/21(金) 15:46:44 ID:???
アホな本が多すぎるのが、PHPの困ったところだ。
975nobodyさん:2009/08/21(金) 15:49:23 ID:???
あとは検索上位のサイトが平気で嘘を書くのも。
976969:2009/08/21(金) 16:08:24 ID:???
入門書に対する書き込み多くてかなり焦っております。
信頼できる本やサイトがあればご教授願いたいところです・・・
977nobodyさん:2009/08/21(金) 16:14:52 ID:???
大丈夫
どんなクソ入門書からはじめても場数ふめばまともなの書けるようになるから
最初のうちはその入門書のクセがついちゃうけど
だんだんわかってくればかわってくるから平気
PHPスレとか眺めてるだけでも結構勉強になるはずだ
PHP関連スレではPHPマニュアルで勉強しろっていわれるだけだとおもう
http://jp.php.net/manual/ja/index.php
978nobodyさん:2009/08/21(金) 16:18:54 ID:???
>>977に同意。
979nobodyさん:2009/08/21(金) 18:49:34 ID:???
関数内の配列をGlobalにしたいんですがどうすればできますか?
変数と同じ方法じゃできませんでした。
980nobodyさん:2009/08/21(金) 18:54:32 ID:???
まずは試してみたソースを曝すべし
981nobodyさん:2009/08/21(金) 18:59:02 ID:???

function MONSTERREAD() {
while(${no}<9){
${no}++;
$fp = fopen("nightwish/".$_SESSION{'id'}."".${no}.".dat", 'r');
$hensu="unit";
$hensu.="${no}";
while (!feof($fp)) {
print $hensu;
global ${$hensu};
${$hensu}['$i'] = fgets($fp);
$i++;
}
}
}
$_SESSION{'id'}=dada;
MONSTERREAD();
$i++;
print $unit1[1];


これを実行するとunit1が行数文出力されてunit2unit3unit4…と続いてunit9で終わってunit1[1]の分が出力されません
982nobodyさん:2009/08/21(金) 19:10:57 ID:???
変数は初期化しろ。
ファイルはクローズしろ。
983nobodyさん:2009/08/21(金) 19:15:03 ID:???
なんかVBを思い出した
984nobodyさん:2009/08/22(土) 01:13:07 ID:???
<?php
function MONSTERREAD($id) {
 $return = array();
 for($no=1;$no<9;$no++){
  $fp = fopen("nightwish/".$id.$no.".dat", 'r');
  $hensu = "unit" . $no;
  $lines = array();
  while (!feof($fp)) {
   $lines[] = rtrim(fgets($fp));
  }
  fclose($fp);
  $return[$hensu] = $lines;
 }
 return $return;
}
$var = MONSTERREAD("dada");
extract($var);

var_dump($unit1);
var_dump($unit2);
985984:2009/08/22(土) 01:20:11 ID:???
その糞コードのどこが間違ってるかは調べるだけ時間の無駄なので調べていない。

・関数は「値を受け取り、値を返すもの」だ。
 関数内で使う変数は、全て引数として渡せ。
 外で使う値は、常に返り値として返せ。一度で返しきれないなら関数を分けろ。
・変数名に数字を持たせるな。
 1-8までの数字を変数名に持つ、という事は、そいつは論理的には配列として扱うべき変数だ。
・変数名を文字列として扱うな。
 吐き気を催しつつ書いたが、extractはせず$varのまま使うほうが百万倍正しい。
 unit1...unit8となっている配列キーは、1...8の数値になるのが正しい。
・てめぇにオリジナルのプログラムは無理だ。出直せ。
986nobodyさん:2009/08/22(土) 02:50:22 ID:???
$hensuの時点で萎える
987nobodyさん:2009/08/22(土) 15:00:18 ID:???
$lineindex[$disptree]

こう言う風に書かれた変数はどういう意味になるのでしょうか?
988nobodyさん:2009/08/22(土) 15:01:30 ID:???
配列$lineindexのキーが$disptreeのところ
989nobodyさん:2009/08/22(土) 15:06:58 ID:???
$lineindex[0]こう言う風に書くと配列の最初の内容を表しますが
0という入れ物の名前が$disptreeに変わっただけなのですね。
990nobodyさん:2009/08/22(土) 15:15:21 ID:???
PHPを使用して指定したWEBページの全てを取得し、保存するにはどうすればよいでしょか?

例: http://google.co.jp とtextbox項目に入力し、保存ボタンをクリックすると
   そのページで使用している画像等も全て

 data/googleIndex.html として保存したいです。
 

また、画像を保存する・しないも切り替えられる様にしたいのですが
どうすればよいでしょか?

ヒントをお願い致します。
991nobodyさん:2009/08/22(土) 15:27:20 ID:???
PHPで携帯サイトを作っています。
例えばindex.phpが30KBあり、includeするPHPファイルが100KBあるとします。
PHPから吐き出されるHTMLが10KBの場合、携帯で発生するパケットを10KBと考えていいのでしょうか?
992nobodyさん:2009/08/22(土) 15:27:51 ID:???
>>990
file_get_contents( $url ) でhtmlファイルを取得したのち、
htmlを解析して、インクルードしてる各種ファイルを取得、CSSファイルがあればさらにそれも解析して使ってる画像を取得、
イメージタグから画像のパスを取得して画像ファイルを取得。
インラインのスタイルを使っているかもしれないからそれも何とかして解析して画像へのパスを取得。
flashもあるかもしれない。javascriptの解析から、使ってるファイルとか画像を取得するのが面倒だな。

ちゃんとしたの作ってくれれば喜ぶ人がいると思うよ。頑張ってね。
993nobodyさん:2009/08/22(土) 15:29:11 ID:???
>>991
実際のパケット量見てみれば分かることじゃない。
994nobodyさん:2009/08/22(土) 16:32:20 ID:???
>>990
HTMLを全てトレースしてimg srcを見つけたら保存でいいじゃん。
それをON/OFFすりゃいいだろ。
995nobodyさん:2009/08/22(土) 18:26:30 ID:???
>>992
>>993
何とかやりたい事が出来そうです。
どうもありがとうございました。
996nobodyさん:2009/08/22(土) 18:27:10 ID:???
>>993



>>994
の間違いでした。
997nobodyさん:2009/08/22(土) 19:19:18 ID:???
言われたとおりにしたらできましたありがとうございました
998nobodyさん:2009/08/23(日) 13:48:59 ID:???
998
999nobodyさん:2009/08/23(日) 13:49:44 ID:???
999
1000nobodyさん:2009/08/23(日) 13:50:38 ID:???
このスレは1000の風になりました
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。