【PHP】下らねぇ質問はここに書き込みやがれpart20
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/28(金) 04:12:33ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
過去スレは>>2-3あたり
0155nobodyさん
2006/05/01(月) 23:48:06ID:???0157nobodyさん
2006/05/02(火) 07:22:20ID:???0158157
2006/05/02(火) 07:23:29ID:???エラーが発生した時点でスクリプトを強制終了して、空白のHTMLや
CGI/Perlみたいに 500 Internet Server Error を返したいんです。
※1
ini_set("error_reporting", E_ALL | E_STRICT)
0159152
2006/05/02(火) 07:41:22ID:???preg_matchでマッチした部分を取り出すのが目的なので...
^とか$使って紛らわしくしてましたね
でもctype_xdigit知らなかったのでサンクス
0160152
2006/05/02(火) 07:51:13ID:???ttp://jp.php.net/manual/ja/function.set-error-handler.php
まだ詳しく読んでないけどこれ無理かな?
0162nobodyさん
2006/05/02(火) 14:25:42ID:???.php .cgi .html
の3つだとそれぞれ違いがあるのでしょうか?
0163nobodyさん
2006/05/02(火) 14:37:56ID:???全部同じように処理しようと思えばできるし、.htmlをPHP、.phpをCGI、.cgiをHTML出力にすることもできる。
0166nobodyさん
2006/05/02(火) 18:36:18ID:???返すのはどうしたらよいですか?
0167166
2006/05/02(火) 18:49:20ID:???return $return_array;
ありがとうございました。
0168nobodyさん
2006/05/02(火) 19:56:21ID:???0169nobodyさん
2006/05/02(火) 23:39:23ID:rocsvmuHうざいよ
0170nobodyさん
2006/05/02(火) 23:45:46ID:???0171nobodyさん
2006/05/02(火) 23:48:27ID:???0172nobodyさん
2006/05/03(水) 01:18:16ID:???0173nobodyさん
2006/05/03(水) 01:27:38ID:???それより、死んで。
0174nobodyさん
2006/05/03(水) 02:20:40ID:Zf4m7aAt0175nobodyさん
2006/05/03(水) 03:52:15ID:???○ ← ラジオボタン
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
こんな感じでループさせたいんですけど・・・。
今の状態では、
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
というようにqst,opt1,opt2,opt3を行ごとにループさせて表示することは出来ています。
ラジオボタンを表示するには、qstとoptを別に取り出してoptの前にラジオボタンを表示するタグをくっつけてループさせるしかないんでしょうか?
説明下手ですいません;;
0176nobodyさん
2006/05/03(水) 03:55:33ID:???0177nobodyさん
2006/05/03(水) 03:59:34ID:???普通にまとめて取り出して、表示するときにラジオボタンのタグをくっつけて表示するだけ。
ぶっちゃけ「めちゃめちゃ当たり前」のことでしかないので、話だけ聞いてると
どこで困ってるのか想像もできない。何故そんなので困る??
まず、今はどういうプログラムで取り出しと表示をやってるのか具体的に書け。話はそれからだ。
0178175
2006/05/03(水) 04:15:58ID:???--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
0179175
2006/05/03(水) 04:16:56ID:???--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
0180175
2006/05/03(水) 04:18:21ID:???<?php
class DataTableView {
private $table;
private $tid = null;
private $tcls = null;
public function __construct($datatable) {
$this->table = $datatable;
}
public function setId($id) { $this->tid = $id; }
public function setClass($cls) { $this->tcls = $cls; }
public function render() {
$html = "<table " ;
if (isset($this->tid))
{
$html .= "id=\"$this->tid\" ";
}
if (isset($this->tcls))
{
$html .= "class=\"$this->tcls\" ";
}
$html .= ">\n";
続きます
0181175
2006/05/03(水) 04:18:52ID:???if ($this->table->numRows() > 0 )
{
// now render table contents
// get table iterator
$html .= "<tbody>\n";
$iterator = $this->table->getIterator();
while($iterator->valid()) {
$html .= $this->renderRow($iterator->current());
$iterator->next();
}
$html .= "</tbody>\n";
}
// now render table end
$html .= "</table>\n";
return $html;
}
private function renderRow($row){
$rowhtml ="";
if (count($row) > 0 )
{
$rowhtml .= "<tr>";
foreach($row as $item)
{
$rowhtml .= "<td>$item</td>";
}
$rowhtml .= "</tr>\n";
}
return $rowhtml;
} }
?>
0182175
2006/05/03(水) 04:22:07ID:???とりあえず今こんな感じです。
授業中にもらったサンプルスクリプトを元に作ってみました。
2カラム目から4カラム目(ans1,ans2,ans3)までだけにラジオボタンのタグをくっつけるというのがよく分からないです。
0183nobodyさん
2006/05/03(水) 04:29:05ID:???0184nobodyさん
2006/05/03(水) 04:39:25ID:???function render()を改造するかextendして、ラジオボタンつきのrender()を作ればいいだけかと。
個人的にはデザインをメソッドで組み立てるこの設計は気に入らないけどな >class DataDetailView
デザインの出力が分かりにくいしいじりにくいしデザイナーと分業できねーし。
0185175
2006/05/03(水) 04:50:53ID:???私がちゃんと理解できてないだけだと思います。
最初から勉強し直してきます。
スレ汚しすいませんでした。
>>184
レスどうもありがとうございます。
1度スクリプトを見直し理解してから184さんがおっしゃった方法を考えてみます。
そうですね。でも私にはこれでいっぱいいっぱいの状態なので、もっとPHPを勉強してからデザインのほうも考えてみることにします。
早朝にどうもありがとうございましたm(_ _)m
0186nobodyさん
2006/05/03(水) 04:56:27ID:???凝ったデザインをするならクラスでなんてやらんと思うぞ。
汎用性を持たせて拡張しようと思うといたずらに複雑になるし、その割に使えないし。
(たまにいるけどな。無駄に巨大で複雑なクラス作って何でもできるぜ!とか息巻いてるやつ)
0187nobodyさん
2006/05/03(水) 04:57:38ID:???0188nobodyさん
2006/05/03(水) 04:59:54ID:???0189175
2006/05/03(水) 05:06:38ID:???あ、確かに授業のときに先生は、とりあえずテーブルをHTML化させるためのスクリプトとしてこのクラスを紹介してました。
あとはテンプレートとCSSを使うように言ってました。
>>187
はい。私自身全く基礎が分かってないと実感しています。
なのにこの課題クラスを使わないと点が貰えないみたいなんでかなり焦っていますorz
とりあえず提出までにあと数日あるので基礎とか見直しつつなんとかやってみたいと思います。
アドバイスどうもありがとうございます^^
0190175
2006/05/03(水) 05:09:43ID:???え、既存のテンプレート・・・?
PHPのこと全く分かってない・・・orz
やっぱり基礎からやり直してきます。
PHPがどういう物か分かってきたら次のステップとして188さんのおっしゃったものを勉強してみます。
0191nobodyさん
2006/05/03(水) 05:56:55ID:???これをアンインストールしたいと考えております。
make install 時に表示された情報(下記)に載っているパスのファイルは消すだけで良いと聞いたことがあるのですが、
コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
その情報はどうやって削除すれば良いのでしょうか?
教えて下さい。
0192191
2006/05/03(水) 05:57:56ID:???/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp5.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp5.la /usr/local/apache2/modules/
cp .libs/libphp5.so /usr/local/apache2/modules/libphp5.so
cp .libs/libphp5.lai /usr/local/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /root/tmp/php-5.1.2/libs'
chmod 755 /usr/local/apache2/modules/libphp5.so
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/lib/php/
[PEAR] Archive_Tar - already installed: 1.3.1
[PEAR] Console_Getopt - already installed: 1.2
[PEAR] PEAR - already installed: 1.4.6
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/include/php/ext/pdo/
0193nobodyさん
2006/05/03(水) 07:11:27ID:???> コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
意味が分からん。PHPを消せばそんなの表示されなくなるだろう。
0194191
2006/05/03(水) 07:32:07ID:???ありがとうございます。
php を消してから、php -i を実際にやったわけではありません。
何処のディレクトリがカレントディレクトリであっても、php -i が使えるということは、
OSのシステムに php というコマンドがインストールされているか、環境変数に設定されているということですよね?
(たぶん後者)
例えば、 php が /user/local/lib/php_hoge (これは例です) に関連付けられてたとして、
削除したら php -i はできなくなると思いますが、それでも環境変数の定義のごみが残ると思うので
それも消したいのです
0195nobodyさん
2006/05/03(水) 07:40:13ID:???UNIXのお約束で、コマンドラインで呼び出すプログラムはどれも
/usr/local/bin等、パスを通してあるディレクトリに置かれることになってる。
だから環境変数は特に定義されていない。該当ファイルを消せば終了。
0196191
2006/05/03(水) 07:45:11ID:???そうなんですか。
Windowsの感覚でいたので何処かで定義されていると思っていました。
おかげさまで解決しました。
ありがとうございました。
0197nobodyさん
2006/05/03(水) 07:45:55ID:???ようにする方法はあるのでしょうか?
0200nobodyさん
2006/05/03(水) 11:53:34ID:???0201nobodyさん
2006/05/03(水) 13:51:52ID:???どうしたらいいんでしょう・・・
0202201
2006/05/03(水) 13:52:54ID:Zf4m7aAtp2参考にしようとしたけどfsockopenで叩いてるんで意味不明でした
0203nobodyさん
2006/05/03(水) 15:43:09ID:???0204nobodyさん
2006/05/03(水) 18:02:05ID:???$no = array('1','2','3','4','5','6'); こんな感じにいれたいのですが、手動でいれるのはさすがに大変なので、
ループ処理かなんかでうまくいれられないかと試行錯誤してみたのですが、よくわかりません。
教えてください。
0205nobodyさん
2006/05/03(水) 18:16:17ID:???$i = 0;
while($i < 45){
$no[] = $i;
$i++:
}
print_r($no);
0206nobodyさん
2006/05/03(水) 18:16:54ID:???http://jp.php.net/manual/ja/function.range.php
0207nobodyさん
2006/05/03(水) 18:19:02ID:???$i = 1;
while($i <= 45){
$no[] = $i;
$i++;
}
print_r($no);
0210nobodyさん
2006/05/03(水) 18:30:18ID:???0211nobodyさん
2006/05/03(水) 18:35:13ID:???0213nobodyさん
2006/05/03(水) 18:46:54ID:???掲示板をつくっていて、たとえば名前が入力されないで投稿ボタンがおされたら
名前が入力されていません。とだけ表示するようにしたいのです(そのほかは何も表示されない)
そのような場合はどうすればいいのでしょうか?
0214nobodyさん
2006/05/03(水) 18:57:24ID:???if(名前が入力されているか調べる){
通常の処理
}else{
名前が入力されていません、と表示
}
0215nobodyさん
2006/05/03(水) 19:10:19ID:???ファイル書き込み
}else{
名前が入力されていません、と表示 ここがつまっています。
}
0216nobodyさん
2006/05/03(水) 19:10:34ID:???インクリメント逆のほうが速いらしいよ
for( $i=1; $i<=45; ++$i ){
$no[] = $i;
}
0217nobodyさん
2006/05/03(水) 19:18:48ID:???if ($name === "") {
...処理...
} else {
echo "名前が入力されていますん";
}
0218nobodyさん
2006/05/03(水) 19:20:47ID:???if ($name != "") {
...処理...
} else {
echo "名前が入力されていますん";
}
0219nobodyさん
2006/05/03(水) 19:22:14ID:jSHHm/CAそれだけではフォームなども表示されたままになってしまいませんか?
ページにその文字だけ表示したいのですが、不可能なんでしょうか?
0220nobodyさん
2006/05/03(水) 19:29:21ID:???mb_internal_encoding('EUC-JP');
$numbers = array();
for ($i = 1; $i <= 45; $i++) $numbers[] = mb_convert_kana($i, 'N');
var_dump($numbers);
0222nobodyさん
2006/05/03(水) 19:47:04ID:???if(名前が入力されている){
通常の処理
}else{
名前が入力されていません
}
}else{
フォームの表示
}
0225nobodyさん
2006/05/03(水) 21:26:09ID:???0226nobodyさん
2006/05/03(水) 22:16:46ID:???0227nobodyさん
2006/05/03(水) 23:15:39ID:igkulSN30228nobodyさん
2006/05/04(木) 00:04:04ID:???0229nobodyさん
2006/05/04(木) 00:10:04ID:rpOcOacz0230nobodyさん
2006/05/04(木) 00:18:10ID:???0234nobodyさん
2006/05/04(木) 00:32:41ID:???0236nobodyさん
2006/05/04(木) 01:37:59ID:???>>1 >>200
ここは下らねぇ質問に答えるスレだ
マニュアルも読んでない「下らねぇ質問にも値しない」質問には答える必要が無い
0237nobodyさん
2006/05/04(木) 02:04:15ID:???0238nobodyさん
2006/05/04(木) 06:27:36ID:wXjTBXc2PEAR::DBを勉強していてプレスフォルダなるものを知ったのですが、これだけでSQLインジェクションは防げると思っていいのでしょうか。
0239nobodyさん
2006/05/04(木) 13:52:57ID:???このエラー文ってなに?
0240nobodyさん
2006/05/04(木) 14:11:27ID:???で、マニュアル(Perl互換の正規表現関数のページ)をみると、
> 式は、デリミタ、例えばスラッシュ (/) で囲まれる必要があります。
> 英数字またはバックスラッシュ(\)以外の全ての文字をデリミタと して使用可能です。
とある。
まぁよくやっちゃうのは、デリミタを使わずにいきなりパターンを書いちゃうってやつだな。
0241nobodyさん
2006/05/04(木) 14:36:02ID:???PHPのオブジェクト指向に特化して解説しているサイト(もしご存じの方がいられましたら教えてください)が見つからなかったので質問させてください。
例えば
class Hoge{
var $moge;
function test($string)
{
$this->moge = $string;
}
}
とは$mogeが継承というものに当たるのでしょうか?
また、継承されたもの($this->moge)をクラス外から参照することは出来るのでしょうか?
よろしくお願いします。
0242nobodyさん
2006/05/04(木) 15:08:11ID:???> オブジェクト指向プログラミング(とりあえずPHP4で)とやらを始めたいのですが、
phpでやるなら、php5にした方が良いと思う。
今持っている環境がphp4だからだと思うけど、近道のつもりが、奇妙な遠回りに
なりそうな気がする。
xampp使えば、windowsでも手軽にphp5入れられるし。
> PHPのオブジェクト指向に特化して解説しているサイト
php oopでぐぐれば色々と当たるけど、言語に特化せず、oopについて勉強した
方が良いと思う。書籍では、
http://www.amazon.co.jp/exec/obidos/ASIN/4822281957/qid=1146721919/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/503-3901566-8967151
http://www.amazon.co.jp/exec/obidos/ASIN/4886478158/qid%3D1146722209/503-3901566-8967151
あたりから入るのが近道かと思う。
参考までに、下記も挙げておきます。
http://www.doyouphp.jp/
> とは$mogeが継承というものに当たるのでしょうか?
継承には当たらない。
> また、継承されたもの($this->moge)をクラス外から参照することは出来るのでしょうか?
継承に当たらないので、設問自体が不適切。
0243nobodyさん
2006/05/04(木) 17:43:52ID:???0245nobodyさん
2006/05/04(木) 18:21:58ID:HFt+K4sbできました。ありがとうございます。
0246nobodyさん
2006/05/04(木) 19:40:38ID:???<input type="hidden" name="key" value="0000000000">
<input type="hidden" name="time" value="1111111111">
<input type="hidden" name="host" value="ex11.2ch.net">
<input type="hidden" name="ttitle_en" value="g4qDe4OTgsyLUo5tgsyDYINQg2KDZ5SDgqiCpILGjnaCpILxgr6Cr4LH">
<input type="hidden" name="csrfid" value="8d17ffb713ec7ccfbe05e75acf98c6ae">
この文字列の中から全てのvalue="(?)"の値を変数の中にいれるにはどういう記述をすればいいでしょうか?
0247nobodyさん
2006/05/04(木) 19:46:42ID:???0248nobodyさん
2006/05/04(木) 19:47:52ID:???0249nobodyさん
2006/05/04(木) 21:05:31ID:ItR85wzN下の記述だとできないっす。
実際、このようなことが出来るのでしょうか?
できるなら方法を教えてください。
function readhoge(){
var temp;
<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
?>
temp = $line;
document.hogeform.hogeelement.value = temp
<?php
}
?>
}
*readhoge()はjavascriptの関数。
htmlフォームのボタンを押した時などに
呼び出したい関数です。
0250nobodyさん
2006/05/04(木) 21:15:39ID:???ブラウザは受け取ったHTMLの中にJavaScriptが書かれているのを見つけるとその処理をする。
OK?
0252nobodyさん
2006/05/04(木) 22:17:14ID:zmM8hBMeそれとも、exitでエラー出力すれば良いのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています