• 締切済み

phpについて

ボタンをクリックするとform.htmlが呼び出され 一定数、クリックするとlast.htmlが表示されます。 この設定をform01~form09.htmlまで順次に表示させ るにはどうしたら良いのでしょうか? (最後にlast.htmlを表示) ================================== if ($_CONF_RANDOM == 1) { mt_srand(microtime()*100000); $r = mt_rand(0, 9); $i = 0; // ファイルが見つかるまで繰り返し while(!file_exists("./form" . $r . ".html")) { $r = mt_rand(0, 29); // 永久機関になるとまずいので・・・ $i++; if ($i > 9999) break; } if (file_exists("./form" . $r . ".html")) require "./form" . $r . ".html"; } else { if ($_num < $_CONF_MAX_CLAP) require "./form.html"; else require "./last.html"; } ================================== if ($_num < $_CONF_MAX_CLAP)    require "./form.html"; else    require "./last.html"; をいじれば良いのは分かっているのですが 文の書き方が分からず困っています。 皆様方からのアドバイスを頂けないでしょうか?

みんなの回答

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

いまいち何をやりたいのかわからないのですが。 >ボタンをクリックするとform.htmlが呼び出され >一定数、クリックするとlast.htmlが表示されます。 ボタンで別のページをよみだすならPHPの範疇ではないのでは? javascriptなどでなさるとよろしいかと。 (もちろんブラウザの環境に依存しますので絶対ではないですが) とくに今回の質問は拡張子htmlを前提にしていますので、一般的な 設定ではPHPを実行する状況にはありません

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • スロット プルグラムについて

    今、スロットをC++で作っています。 しかし、確実に実行されません。 分かるかた、教えていただけないでしょうか? プログラムがめちゃくちゃなのは承知の上です。 優しい回答お願いします。 #include <stdio.h> #include <stdlib.h> #include <time.h> void r_dsp(int rel[3][3]); int r_han(int rel[3][3],int tc); main() { int co=100, r, i, j, kc,num ,rel[3][3]; srand(time(NULL)); while( co > 2 ){ printf("何枚コインを入れますか?(1~3):"); scanf("%d",&kc); if( kc == 99 ) break; if( kc < 1 || kc > 3 ){ continue; } co -= kc; for( i = 0 ; i < 3 ; i++ ){ for( j = 0 ; j < 3 ; j++ ){ r = (double)rand() / RAND_MAX * 10; rel[i][j] = r; } } r_dsp(rel); co += r_han(rel, kc); printf("残りコイン=%d枚\n", co); } } void r_dsp(int rel[3][3]) { char num[][3]={"0","1","2","3","4","5","6","7","8","9"}; int i, j; for( i = 0 ; i < 3 ; i++ ){ for( j = 0 ; j < 3 ; j++ ){ printf("%s ", num[rel[i][j]]); } printf("\n"); } } int r_han(int rel[3][3], int tc) { int i, hk=0; for( i = 0 ; i < 3 ; i++ ){ if( i == 1 || tc != 1 ) if( rel[i][0] == 7 ) if( rel[i][1] == 7 ) if( rel[i][2] == 7 ) hk += 100; else hk += 10; else hk += 2; } if( tc == 3 ){ if( rel[0][0] == 7 ){ if( rel[1][1] == 7 ) if( rel[2][2] == 7 ) hk += 100; else hk += 10; else hk += 2; } if( rel[2][0] == 7 ){ if( rel[1][1] == 7 ) if( rel[0][2] == 7 ) hk += 100; else hk += 10; else hk += 2; } } printf("払出し枚数=%d\n", hk); return hk; }

  • ループが無駄に複雑な気が…

    以下は私が作成したプログラムで、 1.form[4][4][4]の三次元配列に0~32のランダムな正の整数を入れる 2.このランダムな数値の同じものは2つまで 3.form[i][j][0]~form[i][j][3]には同じ数値が入ってはいけない という条件を考えて作成したのですが、無駄に複雑になった気がします。 このプログラムはform[i][j][0]~form[i][j][3]が入らないように、数値が被ったら最初からやり直しにしています。 この作り方だと、これ入れないと最後の1個が被ってしまうものだったら無限ループが起きてしまうので…。 この無駄に複雑になってしまった気がするプログラムを、もっとシンプルに出来ないでしょうか? import java.util.Random; public class Loop { public static void main(String[] args){ int num; int[] check=new int [32]; int[][][] form=new int[4][4][4]; Random rand=new Random(); int i=0,j=0,k=0; for(i=0;i<32;i++) check[i]=0; i=-1; while(true){ while(true){ while(i<3){ num=rand.nextInt(32); if(check[num]!=2){ i++; form[i][j][k]=num; System.out.println(i+" "+j+" "+k+" "+form[i][j][k]); check[num]++; if(0<k){ for(int l=0;l<k;l++){ if(form[i][j][k]==form[i][j][l]){//同じだったらループのやり直し for(int m=0;m<32;m++) check[m]=0; i=-1; j=0; k=0; } } } } } if(j==3) break; num=rand.nextInt(32); if(check[num]!=2){ i=0; j++; form[i][j][k]=num; System.out.println(i+" "+j+" "+k+" "+form[i][j][k]); check[num]++; } } if(k==3) break; num=rand.nextInt(32); if(check[num]!=2){ i=0; j=0; k++; form[i][j][k]=num; System.out.println(i+" "+j+" "+k+" "+form[i][j][k]); check[num]++; } } for(i=0;i<4;i++){ for(j=0;j<4;j++){ for(k=0;k<4;k++){ System.out.println(k+" "+j+" "+i+" "+form[k][j][i]); } } } System.out.println("end"); System.exit(0); } }

    • ベストアンサー
    • Java
  • コマンドライン引数で正規表現を指定したい

    Perlでgrep -Aのようなことがしたいです。 ---------------grep.pl------------------------------- use strict; use warnings; #コマンドライン引数の確認 if(@ARGV != 3){ die "USAGE: \0 [num] [regex] [file]"; } #数字の読み込み my $num = $ARGV[0]; #正規表現の読み込み my $regex = qr/$ARGV[1]/; #ファイル名の読み込み my $file = $ARGV[2]; #該当行を保存する配列 my @lines = (); open my $fh, '<', "$file" or die "$!"; my @file = <$fh>; close $fh; for(my $i=0; $i<@file; $i++){ if($file[$i] =~ /$regex/){ push @lines, $file[$i]; for(my $j=1; $j<=$num; $j++){ if($i+$j < @file){ if($file[$i+$j] !~ /$regex/){ push @lines, $file[$i+$j]; }else{ last; } }else{ last; } } } } foreach my $item (@lines){ print $item; } ------------------------------------------------- ところが、正規表現がうまく読み込めません。 perl grep.pl 2 \d{4}\/\d{2}\d{2} test.txt などとしても、\d{4}\/\d{2}\d{2}の部分が機能しません。 コマンドライン引数から正規表現を指定するにはどうしたらよいでしょうか。

    • ベストアンサー
    • Perl
  • PHPコード読解お願いいたします

    PHP初心者で独学で学んでいるものです。 クラスの概念まで一通り勉強、納得したうえ、簡単なプログラムを見て勉強している段階。 下記コードにて疑問点ありますのでご教授ください。 疑問の部分に●をうっています。 開発環境: XAMPP1.7.0(最新)にて一括ダウンロード /* 自動で倒したピンを求めるロジック */ //ボーリングの得点結果を格納する配列 $result = array();● $pin = 10; $flag = 0; //1ゲームから10ゲームまで繰り返す for ($i = 1; $i <= 10; $i++) { $end_flg = 0; ●● for ($j = 1; $j <= 3; $j++) { if ($j == 1) { $nowpin = $pin; } if ($i == 10) { $pin_out = rand(0,$nowpin); $result[$i][$j] = $pin_out; $nowpin = $nowpin - $pin_out; if ($nowpin == 0) { $nowpin = $pin; $flag = 1; } if($j == 2 && $flag == 0) { break; } } else { if ($j == 3) { break; } $pin_out = rand(0,$nowpin); $result[$i][$j] = $pin_out; $nowpin = $nowpin - $pin_out; if ($nowpin == 0) { break; } } } } print "<pre>"; print_r($result); for文によりフレーム、回数が繰り返される。 1フレームの1投目に変数pinの値(10)が変数nowpinに格納される。 elseブロックへ入り、rand関数により変数pin_outに1~10までの数値が入る。 配列 result「1」「1」にrand関数により得られた数値が入る。 print_r($result)により出力。 変数nowpinに残りのピンの数が入る。 仮に変数nowpinに格納される数値が0ならば、ブレイクによりfor($j、$j<=3、$j++)の繰り返しから抜け、2フレーム目へ。 (字数の関連でその後省略) ●配列で数値を格納するには$resultを=でarray()で結びつけなければいけないのでしょうか ●●この変数の意味。この場所におく必然性。   * if文に関してコード内にelse含め、いくつもありますが、いずれかのifを実行したあと、elseを実行することなどありえるのでしょうか。 例えば、$i=1 $j=1(1フレーム、1投目)の場合、まず1つ目のif($j==1)と合致するので、その中の命令文を読み込み、またelse文内のrand関数も読み込んでいっています。 そもそもifの条件に合致しない場合にelseがあるのであって、ifもelseも読み込むのは感覚的な疑問が残ります。 コンピュータは単に上から下に逐次処理していっているからifもelseも読み込んでいくという理解でよろしいのでしょうか。 以上よろしくお願いいたします

    • ベストアンサー
    • PHP
  • PHPについて質問です。

    PHP超初心者です。 初めて変数の変更プログラムを作ってみたのですが、 Warningエラーが出て、一部の機能が有効になりません。 henkou.php ↓↓↓↓ <?php $oldpass = $_POST["oldpass"]; $newpass = $_POST["newpass"]; $newpass2 = $_POST["newpass2"]; ?> <html> <head> <title>変数変更テスト</title> <meta name="robots" content="noindex,nofollow"> </head> <body> <form method="post" action="/henkou.php"> 古いパスワード:<input type="password" name="oldpass"><br> 新しいパスワード:<input type="password" name="newpass"><br> 新しいパスワード:<input type="password" name="newpass2"><br> <input type="submit" value="送信"> </form> <?php require "/conf/config.php"; if ("$oldpass != $password") { echo "パスワードが一致しません"; } else { echo "パスワード変更が完了しました。"; $password_file = file("/conf/config.php"); $password_file = str_reprace ("\"$password\" = \"$newpass\""); SaveFile("/conf/config.php"); } ?> </body> </html> config.php ↓↓↓ <?php $password = ""; // 設定前なので空白です ?> エラーは、 Fatal error: require() [function.require]: Failed opening required '/conf/config.php' (include_path='.:/usr/local/lib/php') in /home/***.net/henkou.php on line 21 と、 Warning: require(/conf/config.php) [function.require]: failed to open stream: No such file or directory in /home/***.net/henkou.php on line 21 ここからが本題ですが、 上のプログラムが正しいかどうか、確認していただきたいのです。 また、間違えている部分があったら、ご指導いただければと思います。 どなたか、手助けをお願いします!

    • ベストアンサー
    • PHP
  • 下記プログラミングについて

    下のプログラミングの解説ができる方がいましたら教えてください! どう頑張っても理解できなくて困っています;; もしかしたら間違っているところがあるかもしれませんが、よろしくお願いします。 ---------------------------------------------------------------- #include<stdio.h> #include<math.h> main() { int A,B,C,t,h,i,j,k; int sum_column,sum_row,diagonal1,diagonal2; int conf,diag,seed,max; int U[101][101],V[101][101]; int rand(); A=1,B=1,C=1; printf("Please define the pueen problem size(5-100).\n"); scanf("%d", &max); printf("Please input a seed(0-999).\n"); scanf("%d", &seed); for(i=1; i<=seed; i++){ U[1][1]=rand(); }; for(i=1; i<=max; i++){ for(j=1; j<=max; j++){ U[i][j] = -(abs(rand() % 8)); V[i][j]=0; }; };   /* Main program */ t=0; diag=1; while((diag>0)&&(t<500)){ diag=0; for(i=1; i<=max; i++){ for(j=1; j<=max; j++){ sum_column=0; sum_row=0; for(k=1; k<=max; k++){ sum_row=sum_row+V[i][k]; sum_column=sum_column+V[k][j]; } diagonal1=0; k=1; while(((j+k)<=max)&&((i-k)>=1)){ diagonal1=diagonal1+V[i-k][j+k]; k++; } k=1; while(((j-k)>=1)&&((i+k)<=max)){ diagonal1=diagonal1+V[i+k][j-k]; k++; } k=1; while(((j+k)<=max)&&((i+k)<=max)){ diagonal2=diagonal2+V[i+k][j+k]; k++; } k=1; while(((j-k)>=1)&&((i-k)>=1)){ diagonal2=diagonal2+V[i-k][j-k]; k++; } k=1; h=0; conf=1; if(sum_column == 0) h=1; if(sum_row == 0) h++; if((sum_column+sum_row==2) && (diagonal1<2) && (diagonal2<2)) conf=0; U[i][j]=U[i][j]-A*(sum_row+sum_column-2)-B*(diagonal1+diagonal2)+C*h; if(U[i][j]>8) U[i][j]=8; if(U[i][j]<-8) U[i][j]=-8; if(U[i][j]>0) V[i][j]=1; else V[i][j]=0; diag=diag+conf; }; }; t++; printf("t=%d\n", t); if((t % 15) < 5) C=4; else C=1; }; printf("the number of iteretion steps=%d\n", t); printf("\n"); for(i=1; i<=max; i++){ for(j=1; j<=max; j++){ if(j==max){ if(V[i][j]==1) printf("*\n"); else printf("-\n"); } else{ if(V[i][j]==1) printf("* "); else printf("- "); } } } }

  • ファイル名を

    あるフォルダ内に、実行ファイルと入力ファイルがあり、プログラムを実行すると、 1. 実行ファイルと同じフォルダ内にあるファイル名を文字型配列に格納する。 2. さらに拡張子が.txtのファイルをさがし、一覧を表示する。 3. 一覧から入力するファイルを選択する。 という動作をするプログラムを作成していますが、上記「1」の方法が分かりません。 下のソースは、既にファイル名を文字型配列に格納した後(「2」と「3」の動作)のものです。 「1」はどのようなソースコードにすればできるのでしょうか。 大変お手数ですが、ご存知の方教えてください。よろしくお願いします。 OS: Windows2000, コンパイラ: Borland C++ 5.5.1 for Win32 #include <stdio.h> #include <stdlib.h> #define num_files 4 #define max_words 10 int main(void){ int i,j,k,check[num_files],num_candidate,select_no; char file_name[num_files][max_words]={"aaa.txt","bbbb.csv","ccc.txt","ddd.txt"}; char candidate[num_files][max_words],txt[]="txt",infile[max_words]; printf("フォルダ内のファイル一覧\n"); for(i=0;i<num_files;i++){ printf("%s\n",file_name[i]); } printf("\n"); printf("拡張子 *.txt のファイル一覧\n"); for(i=0;i<num_files;i++){ check[i]=0; for(j=0;j<max_words;j++){ if(file_name[i][j]=='.'){ if(file_name[i][j+1]==txt[0] && file_name[i][j+2]==txt[1] && file_name[i][j+3]==txt[2] && file_name[i][j+4]=='\0'){ check[i]++; } } } } num_candidate=0; for(i=0;i<num_files;i++){ if(check[i] != 0){ for(j=0;j<max_words;j++){ candidate[num_candidate][j]=file_name[i][j]; if(file_name[i][j] == '\0'){ break; } } num_candidate++; } } for(i=0;i<num_candidate;i++){ printf("%2d. %s\n",i+1,candidate[i]); } printf("\n"); printf("入力ファイルの番号を選択してください: "); scanf("%d",&select_no); if(select_no<1 || select_no>num_candidate){ printf("入力した数字が不適合です。\n"); exit(1); } for(i=0;i<max_words;i++){ infile[i]=candidate[select_no-1][i]; if(candidate[select_no-1][i] == '\0') { break; } } printf("%s を選択しました。\n",infile); return 0; }

  • 一致する文字としない文字があるのですが

    会員のログイン等で、氏名(漢字)と生年月日でログインするように してあるのですが、「眞」や「はしご高」などの文字が、 フォームで渡ってきた場合に、 データと一致しなくエラーとなってしまいます。 if (!open(IN,"$file")) { &error('データベースエラー','.'); } @BASE = <IN>; $all = @BASE; close(IN); if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; } $TO = $FF + $page - 1; if ($TO > $#BASE) { $TO = $#BASE; } $hit = 0; $next_num = ''; foreach $num ($FF .. $#BASE) { $data = $data2 = $BASE[$num]; &jcode'convert(*data,'euc'); ($d,$NO,$REM,$DATE,$NAME,$EMAIL,$PMAIL,$AGE,$SEX,$PREF) = split(/\,/,$data); # 名前(一致) if ($NAME5 ne 'dadada') { if ($NAME eq $FORM{'NAME'} ) { ; } else { next; } } # 生年月日(一致) if ($AGE5 ne 'kakak') { if ($AGE eq $FORM{'AGE'} ) { ; } else { next; } } # 検索終了処理 if ($hit == $page) { $next_num = $num; last; } else { push(@NEW,$data2); $hit++; } } と検索の部分はなっております。 エラーが出る漢字は少ないのですが、 ログインできないお客様がいて困っています。 なにか対処方法はございますでしょうか? 何卒、宜しくお願い致します。

    • 締切済み
    • CGI
  • PHPの記述内容

    以下の記述内容と意味が分からず困っています。初心者にも分かりやすく教えていただけないでしょうか。 <?php // 読み込み $file = 'side.html'; if(file_exists($file)){ $content = file_get_contents($file); $content = preg_replace(array("/\r\n|\n\r|\n|\r/", "/'/"),array("", "\'") , $content); echo 'document.write(\'' . $content . '\');'; } ?>

  • PHPでファイルアップロードがうまくいきません

    PHP初心者なんで宜しくお願い致します。 ファイルアップロードのシステムを作っているんですが どうもうまくいきません。 <form action="<? $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> 写真:<input type="file" name="file" size="40" /> <input type="submit" name="new_write" value=" 登録 "> </form> <? if(isset($_POST['new_write'])){ $filename = $_FILES['file']['name']; $updir = "./image/".$filename; if(move_uploaded_file($_FILES['file']['tmp_name'], $updir)){ print "OK"; }else{ print "NG"; } } ?> 上記の記述をしています。 そしてphpinfo()で情報を確認しても file_uploadsはONになっています。 そしてPHPのバージョンは4.4.2です。 単純なことかもしれませんが、宜しくお願い致します。

    • ベストアンサー
    • PHP