• ベストアンサー

データ受け取り

チェックボックスよりデータを送信し、次ページで受け取りたいのですが、データは送信されているようですが、データを受け取って表示することができません。 <プログラム(一部省略)> <?php if ($handle = opendir('.')) {     while (($file = readdir($handle))!=false) {         if ($file != "." && $file != "..") {             print "<tr><td><input type=checkbox name=fp[$i] value=$file></td>";             <<省略>>             $i++;        }     } } ?> ↓次ページ(一部省略)↓ <?php for($i=0;$i<$n;$i++){ $fp[$i]=$_GET{"fp[$i]"}; print "$fp[$i]<br>"; } ?>

noname#13767
noname#13767
  • PHP
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
回答No.2

$fp[$i] = $_GET["fp"][$i]; あと$nに適切な値が入ってないと駄目だわな。

noname#13767
質問者

お礼

ありがとうございます。 値を渡せました。因みに$nの値は省略部分で渡しています。

その他の回答 (2)

  • BENGAL
  • ベストアンサー率73% (22/30)
回答No.3

フォーム文の宣言でPOSTとしていませんか?? 例:<form method='post'> その場合は、$_POSTで取得します。 あとは、#2さんと同じで、 $fp[$i]=$_GET["fp"][$i]; と書くとうまくいくかと思います。 参考になれば幸いです。

noname#13767
質問者

お礼

回答ありがとうございました。 メッソドはGETで送信しています。 $fp[$i]=$_GET["fp"][$i]; でうまくいきました。

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

Web屋です。OkWebの様なページの設計, 開発を仕事としています。 基本的にPerl屋でして、PHPは文法が分る。と言うレベルなのですが。。。 > $fp[$i]=$_GET{"fp[$i]"}; ここ、おかしく無いですか? $fp[$i]=$_GET{"$fp[$i]"}; じゃ無いかな。。。もっとも、配列fpにチャント内容が入っているかどうか、分りませんけど。。。 それから。。。 > $fp[$i]=$_GET{"$fp[$i]"}; 関数の入力側と出力側が同じ変数と言うのはどうでしょう。。。 どこにバグがあるのか分らなくなる様な。。

noname#13767
質問者

お礼

私もperl文法で考えていたようです。 #2さんのようにするとうまくいきました。 考えてくださってありがとうございました。

関連するQ&A

  • php単体では表示されるが他のページから呼ぶと文字化けをします。

    /img/のフォルダーの中から画像を取得し他のページで表示させようと思ったのですがphp単体では画像が表示されるのですが、require、include もしくは直接そのソースを貼って表示させると画像が文字化けし表示されません。 書いたソース define("TEST_READDIR", "./img/"); $handle = opendir(TEST_READDIR); rewinddir($handle); while (($entry = readdir($handle))) { $file = TEST_READDIR . $entry; if(is_file($file)) { $key = filemtime($file); $keys[] = $key; $data[$key] = $file; } } closedir($handle); if ( isset($keys) ) { rsort($keys); $fp = fopen($data[$keys[0]], "rb") or die(); print fread($fp, filesize($data[$keys[0]])); fclose($fp); } exit(0); なぜ他から呼び出すと表示されないのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 配列データの受け取り

    下記配列を受け取ることが出来ません。 エラーになります。 受け取り側にARRAY[0],ARRAY[1]と 表示されます。 実際は送信側のinputboxに入力した値を 受け取り側で表示させたいのですが・・・ おかしい箇所ご指摘いただけないでしょうか? それとも、PHPでは出来ないことなのでしょうか? //送信側 <html> <head><title>session.html</title></head> <body> 請求書 <form action="teke.php" method="post"> <table border="1"> <tr align="center"> <td>月</td> <td>日</td> <td>明細</td> <td>単価</td> <td>数量</td> <td>金額</td> </tr> <?php for($q=0;$q<10;$q++){ print"<tr>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($i=1; $i<13; $i++){ print"<option value=$i>$i</option>\n"; } print"</select>"; print"</td>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($j=1; $j<32; $j++){ print"<option value=$j>$j</option>\n"; } print"</select>"; print"</td>"; for($o=0;$o<4;$o++){ print"<td><input type='text'name='".$data[$q][$o]."'></td>"; } print"</tr>"; } ?> </table> <input type="submit" value="登録"> </body> </html> //受け取り側 <html> <head><title>session.html</title></head> <body> 請求書 <table border="1"> <tr align="center"> <td>月</td> <td>日</td> <td>明細</td> <td>単価</td> <td>数量</td> <td>金額</td> </tr> <?php for($q=0;$q<10;$q++){ print"<tr>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($i=1; $i<13; $i++){ print"<option value=$i>$i</option>\n"; } print"</select>"; print"</td>"; print"<td>"; print"<select name=kosu>\n"; print"<option value=''></option>\n"; for ($j=1; $j<32; $j++){ print"<option value=$j>$j</option>\n"; } print"</select>"; print"</td>"; for($o=0;$o<4;$o++){ $data[$q][$o]=$_POST["$data[q][o]"]; $_SESSION["$data[q][o]"].=$_POST["data[$q][$o]"]; print"<td>$data[$q][$o]</td>"; } print"</tr>"; } ?> </table> <input type="submit" value="登録"> </body> </html>

    • 締切済み
    • PHP
  • 初歩的な質問だと思います。IFの条件文

    よろしくお願いします。 PHPリファレンスに,以下のように書いてありました。 <?php if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo "$file\n"; } } closedir($handle); } ?> 2行目のifの条件文なのですが,=は代入することを表すから, ()の部分は条件文にならないと思ったのですが,どう解釈すれば良いのでしょうか。

    • ベストアンサー
    • PHP
  • txtに入っているデータの全件テーブル表示をする場合

    下記のdata.txt内のデータをphpでtable表示で全件を表示させたいのですが、最初の一件を表示することはできたのですが、あとのデータを同じように表示させる事を試みましたが、できませんでした。 一件目から縦に全件を表示させるにはどうしたらいいのでしょうか? よろしくお願いします。 data.txt------------ 12345,54321,田中,010,1234,5678,青森,2134,6854,山本,020,3210,5439,長崎,57404,74748,清水,030,5673,2865,岡山 ---------------------------------------------- <?php //ファイルオープン $fp = fopen('data.txt','r'); //データの読み込み $data=fgets($fp); //ファイルクローズ fclose($fp); //分割処理 $hairetu = split(',',$data); //出力処理 print("<table BORDER='1'>\n"); print("<tr><td>ID</td><td>パスワード</td><td>名前</td><td>TEL</td><td>住所</td></tr>\n"); print("<tr>\n"); print("<td>".$hairetu[0]."</td>\n"); print("<td>".$hairetu[1]."</td>\n"); print("<td>".$hairetu[2]."</td>\n"); print("<td>".$hairetu[3]."-".$hairetu[4]."-".$hairetu[5]."</td>\n"); print("<td>".$hairetu[6]."</td>\n"); print("<tr>\n"); print("</table>\n"); ?>

    • ベストアンサー
    • PHP
  • フォルダ内のファイル名取得の仕方が分かりません

    Apache2.0.47、PHP4.3.2で使用しています。 フォルダ内のファイル名の取得を以下のように書いています。 (scandirは使えませんでした) <?php $dir = "test_dir"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } sort($files); print_r($files); ?> "."と".."も取得されるので、以下のように変更したのですが同じ結果でした。 <?php $dir = "test_dir"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { if(filename!=". "){ if(filename!=".. "){ $file[] = $filename; } } } sort($files); print_r($files); ?> "."と".."をはぶいたファイル名だけを取得したい場合にはどうすればよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • テーブルデータ表示後、再表示の方法

    初めて質問させて頂きます。うまく言葉に出来てないかもしれませんがよろしくお願い致します。 現在スケジュール管理をPHPとSqliteで作成しています。 yotei.phpでDBのデータを表示(HTMLのTABLE)し、予定の追加・更新をする場合は該当の日付をクリックするとrequire_onceでtoroku.phpを読込ます。toroku.phpでは更新処理か新規登録かを確認し、<form action="add.php?id='.$id.'&ymd='.$ymd.'" method="POST">にて登録・削除・リセットの各ボタンにあわせてのDB処理を行っています。 <?php session_start(); $link = sqlite_open('yotei.db', 0666, $sqliteerror); ?> ~一部省略~ <TABLE BORDER=1 WIDTH="100%" CELLPADDING="2" CELLSPACING="0"> <TBODY><TR> <TD>日付</TD> <TD>曜日</TD> <TD>予定時間</TD> <TD>作業内容</TD></TR> <?php //データ表示 $ymd = date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)); $i = 0; while ($ymd <= $to_date) { $sql = "SELECT * FROM timetbl where (id=$sid and ymd=$ymd)"; $result = sqlite_query($link, $sql, SQLITE_BOTH); if ($rows = sqlite_fetch_array($result)) { print('<TR>'); print('<TD WIDTH="5%" ALIGN="center" NOWRAP><A href="yotei.php?ymd='.date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)).'">'.date('m/d', mktime(0, 0, 0, $mm, $dd, $yy)).'</A></TD>'); print('<TD WIDTH="5%" ALIGN="center" NOWRAP bgcolor="'.$chk['color'].'">'.$chk['youbi_m'].'</TD>'); ~一部省略~ } else { print('<TR>');    print('<TD WIDTH="5%" ALIGN="center" NOWRAP><A href="yotei.php?ymd='.date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)).'">'.date('m/d', mktime(0, 0, 0, $mm, $dd, $yy)).'</A></TD>'); print('<TD WIDTH="5%" ALIGN="center" NOWRAP bgcolor="'.$chk['color'].'">'.$chk['youbi_m'].'</TD>'); ~一部省略~ print('</TR>'); } $dd = $dd + 1; $ymd = date('Ymd', mktime(0, 0, 0, $mm, $dd, $yy)); $i = $i + 1; if ($i > 30) { break; } } ('<TD WIDTH="5%" ALIGN="center"> </TD>'); ~一部省略~ ?> </TBODY></TABLE></DIV> <?php sqlite_close($link); if (!isset($_GET['ymd'])){   PRINT('</BODY>'); PRINT('</HTML>'); exit; } ?> <?php require_once("toroku.php"); ?> </tbody></table></div> toroku.phpでは、該当の日付のDBのデータを読み退避させてyotei.phpと同じ様に1か月分を再表示させてますが、yotei.phpの表示とtoroku.php再表示の表が重なって表示されてしまいます。 申し訳ありませんが、ご教示頂けませんでしょうか?

    • ベストアンサー
    • PHP
  • 指定のフォルダに指定のファイルがあったら画像を表示、なければ飛ばすいい方法(CGI)

    指定のフォルダに指定のファイルがあったら画像を表示、なければ飛ばすというようにしたいのです。 opendir (FOLDER,"img"); @FOLDERS = readdir (FOLDER); closedir(FOLDER); my ($cnt) = 0; foreach(@FOLDERS) { if ($_ =~ /.+\..+/) { $cnt++; } } $tate = $cnt/10; print "<TABLE CELLSPACING=0 CELLPADDING=2>\n"; print "<TR>\n"; for($i=1;$i<11;){ for($n=2;$n<$cnt;$n++){ $F = $FOLDERS[$n]; if("$i.jpg" eq "$F"){ print "<TD CLASS=TD1><IMG SRC='img/$i.jpg' HEIGHT=65 WIDTH=50><BR>$i</TD>\n"; $i=$i+1; } #if } #for $n } #for $i というようにしてみたのですが時間がかかりすぎてしまいます。 何かいい方法はないでしょうか?

    • 締切済み
    • CGI
  • readdirでのファイル名取得

    readdir()にて、textファイルのみ取り出すにはどのようにすれば良いのでしょうか? 現状は、後処理で、/txt|TXT/でマッチさせています。 opendir(DIR,"./DATA/"); @file=readdir(DIR); closedir(DIR); foreach $myfilename(@file){ if($myfilename=~/txt|TXT/){ print "$myfilename\n"; #確認用 } } よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • データ

    データが送れているのかをプリントで確かめたのですが、$xの値しか表示されません。 セレクトボタンで選択した値が代入できません。 データが送られていないのでしょうか? どこが間違っているのか教えてください。 #!c:/perl/bin/perl <<省略>> print "<table border=1>"; print "<tr><td>商品番号</td><td>商品名</td><td>価格</td>"; print "<td>残り個数</td><td>注文数</td></tr>"; open(RF,"<butu.dat"); while(<RF>){ @data=split; print "<tr><td>$data[0]</td><td>$data[1]</td><td>$data[2]円</td>"; print "<td>$data[3]個</td><td><select name='ko[$n]'>"; for($i=1;$i<=$data[3];$i++){ print "<option value=$i>$i</option>"; } print "</select></td></tr>"; $n++; } close(RF); print "</table><br><br><input type='hidden' value='$n' name='gyo'>"; <<省略>> exit; ↓↓↓ #!c:/perl/bin/perl print "Content-type: text/html\n\n"; require 'cgi-lib.pl'; &ReadParse(\%in); $x=$in{'gyo'}; for($n=0;$n<$x;$n++){ $d[$n]=$in{'ko[$n]'}; } <<省略>> exit;

    • ベストアンサー
    • Perl
  • 指定したファイルがあるかどうかの確認

    指定したファイルがフォルダ内にあるかどうかを調べるために以下のようにしました。 #フォルダ内の確認 opendir (FOLDER,"img"); @FOLDERS = readdir (FOLDER); closedir(FOLDER); my ($cnt) = 0; foreach(@FOLDERS) { if ($_ =~ /.+\..+/) { $cnt++; } } #指定したファイルがあるかどうかの確認 for($i=1;$i<3;$i++){ for($n=2;$n<$cnt;$n++){ $F = $FOLDERS[$n]; if('$i.jpg' eq '$F'){ print "<TD CLASS=TD1><IMG SRC='img/$i.jpg' HEIGHT=65 WIDTH=50></TD>\n"; print "<FONT COLOR=RED>★</FONT><BR>\n"; #$i=$i+1; } elsif('$i.jpg' ne '$F'){ print "$i.jpg $F<BR>\n"; }#if } #for $n } #for $i ですがすべて「違う」となってしまいます。 どこがダメなのでしょうか? ※perlです。

    • ベストアンサー
    • CGI

専門家に質問してみよう