• 締切済み

PHPアンケート集計のスプリクトエラーに困っています。

現在、PHPで下記のような集計して表示しようとしてます。値は、dataフォルダからカンマ区切りのテキストデータを読み込み集計されて表示はされるのですが・・・PHP4を使ってテストしたときはエラーは出なかったのですが、PHP5に変更してから走らせたところ下記のエラーが出てしまい困っています。どうやら値が未定義・初期値を与えないといけないらしいとこまでは、少し分かったのですが、そこからいろいろと試したのですがうまく動きません。スクリプトは「WebクリエイティブのためのPHPサンプルブック」を参考したもので、間違っているとは考えにくいのですが…。 エラーの内容 =================================================== Notice: Undefined variable: corner in/var/www/html/test/XXXXX.php on line 30 Notice: Undefined index: 3 in /var/www/html/test/XXXXX.php on line 30 Notice: Undefined index: 1 in /var/www/html/test/XXXXX.php on line 30 Notice: Undefined index: 2 in /var/www/html/test/XXXXX.php on line 30 スクリプトの内容 ============================================== $cnt=0; $i=0; $d = dir("data/"); //print_r($d); //検索対象ディレクトリ指定 while (($entry = $d->read())) { //ディレクトリ検索 if(eregi("2008",$entry)){ $l=file("data/$entry"); //該当ファイル読み込み $lines[$cnt]=$l[0]; //データベース$linesの各行に格納 $cnt++; } } $d->close(); function cmp ($a, $b) { if ($a == $b) return 0; return ($a > $b) ? -1 : 1; } foreach($lines as $l){ $op=explode(",",$l); $key=$op[4]; $corner[$key]++; } uasort($corner,"cmp"); $label=array("ほぼ毎日","週1~2回","月1~2回","半年に1~2回","今回がはじめて"); echo"<table width=600 border=1>"; echo"<tr><td colspan=2><b>問1.XXXXXXXXにどのくらいの頻度で訪問していますか。</b></td></tr>"; foreach($corner as $key => $value){ $ratio=$value/count($lines); $length=300*$ratio; echo"<tr><td>$label[$key]</td><td width=350>"; echo"<img src=\"./square.gif\" height=\"10\" width=\"$length\">"; echo" $value</td></tr>"; } echo"</table>"; 環境:Apache2 PHP5 MySQL5です。 よろしくお願いいたします。

みんなの回答

  • Shin417
  • ベストアンサー率64% (9/14)
回答No.1

30行目の $corner[$key]++; が警告の原因です。 お気付きの通り、初期化してあげれば問題解決です。 if (isset($corner[$key])) { // $corner[$key]が初期化済みなら $corner[$key]++; // +1 } else { $corner[$key] = 0; // 0で初期化 } 1行にまとめるなら $corner[$key] = isset($corner[$key]) ? $corner[$key]+1 : 0; ちなみに、警告が出るようになったのはPHPの設定の問題だと思われます。 PHP4のときは警告が表示されない設定だったのが、 PHP5では表示される設定になっているためです。 「error_reporting」で調べてみればわかると思います。

参考URL:
http://jp.php.net/manual/ja/function.error-reporting.php
ccgp
質問者

お礼

早速の書き込み、ありがとうございます。 試してみたところ問題なくエラーがなくなりました。 PHP5への変更にまだ慣れていないので、ほんとに たすかりました!!issetがポイントですね。 ありがとうありがとうございます!!

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

関連するQ&A

  • phpでのアンケート編集

    社員旅行のアンケート編集のphpです。 (???)のところがどうしてもわからなくて上手く動きません。 どなたか回答お願いします。 <?php session_start(); ?> <html> <head> <body> <font size=5><b>社員旅行アンケート集計</b></font><br><br> <?php $db = mysql_connect("localhost","",""); mysql_select_db("syain_db"); $query = "SELECT * FROM trvl_t"; $result = mysql_query($query); if(mysql_num_rows($result) == 0) print"<br>無し"; else{ for($i = 0;$i <4;$i++) $cnt[$i] = 0; while($row = mysql_fetch_array($result))(???) mysql_close($db); echo "<table border =1>"; echo "<tr><td>旅行先</td><td>希望者数</td></tr>"; for($i=0;$i<4;$i++){ echo "<tr align=center>"; if($i == 0) echo "<td>北海道</td>"; elseif($i == 1) echo"<td>沖縄</td>"; elseif($i == 2) echo"<td>韓国</td>"; elseif($i == 3) echo"<td>香港</td>"; echo "<td>".(???)."</td>"; echo"</tr>"; } echo "</table>"; } ?>

    • ベストアンサー
    • PHP
  • phpをhtml(.htmlファイル)にうまく埋め込めず困っています。

    phpをhtml(.htmlファイル)にうまく埋め込めず困っています。詳しい方にアドバイスいただけると ありがたいです。 現在、ごく簡単な掲示板の様な物をつくり、その内容をHTMLファイルに反映させたいと思っています。 ファイルは.thmlのままで、要はrssリスティングの埋め込み式の様なことをしたいです。 掲示板の内容はtxtファイルに入っており、そのファイルを読み込み、表示させたいのです。 表示させたい部分に、 <table> <?php //データファイル読み込み $date_file = 'naiyou.txt'; $ext = file_exists($date_file); $lines = $ext ? file($date_file) : array(); foreach($lines as $line) { $ln = explode(",", $line); echo "<tr><td>No.".$ln[0]."</td></tr>"; echo "<tr><td>".$ln[1]."</td>"; echo "<td>".$ln[2]."</td></tr>"; } ?> と書いてみましたが、反映されませんでした。 初心者なのでおそらく、根本的な埋め込み方がわかってないのが原因だと思うのですが... 色々と調べてみましたが、いまいち答えが見つけられません。 .htmlにphpを埋め込むにはどうすれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • javascriptの変数をPHPの変数で受ける

    下記のようなjavascript において、グローバル変数clicked の値を PHPの変数$clickedで受けたいのですが、どうすれば受け取れるでしょうか? var_dump()してみると、undefinedや、NULLと表示されます。 要は、カレンダーの<td>要素をクリックしたときの日にちの番号を PHPの変数で受けたいのです。 echo '<tr id="calheader" bgcolor="#ffffcc">'; for($i=1; $i<=7; $i++){ echo '<td valign="top" align="center" class="smallText" id="'.$i.'" onclick="pusharea(this);">'.$i.'</td>'; <script language="javascript"> <!-- var clicked; // グローバル変数 function pusharea(obj){ clicked = obj.id; } // --> </script> </head> ----------------------------------------------- <script language="javascript"> alert(clicked); // <?php echo $clicked;?>=clicked; </script> <?php var_dump($clicked); echo '<tr>'; for($i=1; $i<=7; $i++){ /*if($i===$clicked)*/ echo '<td valign="top" height="50" align="center" class="smallText">'.$user.'</td>'; //else echo '<td valign="top" class="smallText">&nbsp;</td>'; } echo '</tr>';

  • PHPでUndefined variableエラー

    PHPでUndefined variableエラーが発生します: <b>Notice</b>: Undefined variable: result in <b>/opt/lampp/htdocs/samples/chapter3/3-2/gen_defined_vars.php</b> on line <b>58</b><br /> どうやって直せばいいのか教えてください。 58行目がおかしいと出ていますが、$resultが未定義なので54行目のことだと思います。 ちなみに 9ー12行目は自分で直しました。お願いします。 1 <html> 2 <head> 3 <title>環境変数コード生成フォーム</title> 4 </head> 5 <body> 6 <?php 7 // 選択リストの値を取得 8 $name = "param"; 9 if ( isset($_POST[$name]) ) { 10 $selected_value = $_POST[$name]; 11 } 12 //$selected_value = isset($_POST[$name]) ? $_POST[$name] : ""; 13 14 // 定義済み変数を取得 15 $array = get_defined_vars(); 16 17 // 配列から選択リストを作成する関数 18 // パラメータ:配列/選択リスト名/選択値 19 function disp_list($array, $name, $selected_value = "") { 20 echo "<select name=\"" . $name . "\">"; 21 while (list($value, $text) = each($array)) { 22 echo "<option "; 23 if ($selected_value == $value) { 24 echo " selected "; 25 } 26 echo " value=\"".$value."\">" . $value . "</option>"; 27 } 28 echo "</select>"; 29 } 30 31 // 入力内容を処理する 32 $temp = "<?php echo \$_SERVER[\"%s\"] ?>"; 33 if (isset($_POST["param"])) { 34 $param = $_POST["param"]; 35 $result = sprintf($temp, $param); 36 } 37 else { 38 $param = ""; 39 } 40 41 ?> 42 <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> 43 <table cellpadding="10"> 44 <tr> 45 <td>環境変数を選択:<br /> 46 <?php echo disp_list($array["_SERVER"], $name, $selected_value); ?> 47 <input type="submit" value="作成" name="sub1"> 48 </td> 49 </tr> 50 <tr> 51 </tr> 52 <tr> 53 <td>作成されたコード:<br /> 54 <textarea name="ta1" rows="3" cols="40"><?php echo $result ?></textarea> 55 </td> 56 </tr> 57 </table> 58 </form> 59 </body> 60 </html>

    • ベストアンサー
    • PHP
  • クラスと文法とエラー。なぜこの出力

    <?php $chk = new nanikore(); class nanikore{ var $queryY; var $queryZ; function nanikore(){ $this->$queryY = array( "name" => "test1"); $this->$queryZ = array( "name"=> "test2" ); print_r( $this->$queryY ); } } ?>この実行結果が以下になるのはなぜですか?orz 特に以下の部分が理解できません Array ( [name] => test2 ) こうなるつもりなのですが・・・。Noticeエラーのせいなのでしょうか あとなぜノーティスエラーがでるのでしょうか。。よろしくお願いします Array ( [name] => test1 ) //////////////////////////////////////////////////////////// Content-type: text/html X-Powered-By: PHP/4.3.6 <br /> <b>Notice</b>: Undefined variable: queryY in <b>F:\nanikore.php</b> on line <b>8</b><br /> <br /> <b>Notice</b>: Undefined variable: queryZ in <b>F:\nanikore.php</b> on line <b>9</b><br /> <br /> <b>Notice</b>: Undefined variable: queryY in <b>F:\nanikore.php</b> on line <b>10</b><br /> Array ( [name] => test2 )

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

    PHPについて質問です。 <?php $lines0 = file('data.txt'); $lines = array_reverse($lines0); foreach ($lines as $line_num => $line) { echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n"; } ?> でファイルの内容は表示することができるようになったのですが、 次に、$linesをテキストエリアに表示させようとすると、Arrayと表示されます。 <textarea name="textarea" cols="50" rows="5" disabled="disabled">$lines</textarea> どうすれば解決できるでしょうか?

    • ベストアンサー
    • PHP
  • PHP 九九表

    PHPで九九の表を作っているのですが、 どうしてもここまでしか出来ませんでした。 <tr>,<td>を消してみると 数字が横に一列に表示されており、かけ算にはなっているのですが、 表にはどうしてもなりません。 なにかが違うのは分かっているのですが、ないが違うのか分かりません。 誰かお分かりになるかたがいましたらお伺いできませんでしょうか。 <?php echo '<table>'; echo '<tr>'; for ($i = 1; $i <= 9; $i++ ) { for ($j = 1; $j <= 9; $j++ ) echo '<td>' $i * $j'</td>'; echo '</tr>'; } echo '</table>'; ?>

    • ベストアンサー
    • PHP
  • phpの警告

    今こんな警告文に悩まされています。 Warning: Unexpected character in input: ' ' (ASCII=27) state=2 in /var/www/html/client.php on line 24 それでその問題の24行目がこちらです。 print("<table border=2><tr><td>最希望期</td><td>".$saiki."</td></tr> phpの中に記述してあるんですが、 どうしてもこの警告が消えません。 誰か詳しい方がいれば教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP かけ算

    PHPを使い下記の表を作ろうとしております。 ぱっと見た所あと少しで出来そうな気もするのですが、 なにかが間違っています。 誰かお分かりになるかたが今したらお伺いできますでしょうか。 | 1 2 3 4 5 6 7 8 9 -------------------------------- 1| * 2 * 4 * 6 * 8 * 2| 2 * 6 * 10 * 14 * 18 3| * 6 * 12 * 18 * 24 * 4| 4 * 12 * 20 * 28 * 36 5| * 10 * 20 * 30 * 40 * 6| 6 * 18 * 30 * 42 * 54 7| * 14 * 28 * 42 * 56 * 8| 8 * 24 * 40 * 56 * 72 9| * 18 * 36 * 54 * 72 * <table border ="1"> <?php for($i = 0; $i <=9; $i++){ echo'<tr>'; if($i == 0){ echo '<td>&nbsp;</td>'; } else { echo'<td>'.$i.'</td>'; } for($j = 1; $j<=9; $j++){ if($i == 0){ echo'<td>'.$j.'</td>'; continue; } if($i*$j % 2 == 0) { echo '<td>'. $i * $j.'</td>'; } else { echo '<td>*</td>'; } } echo '</tr>'; } ?> </table>

    • ベストアンサー
    • PHP
  • PHPでレコード一覧から詳細へのリンク方法

    MySQLでデータベースを構築し、PHPで表示しています。 レコードを一覧で並べるのはうまく行きましたが…一覧から詳細へリンクさせるのがうまく行きません。 detail.phpというファイルを作成してリンクさせようと思っていますが… (1)formタグを使って、GETでSUBMITする形にする場合はどうしたらいいでしょうか? (2)普通にaタグを使って、detail.php?id=xxxxx という形にする方法でもいいのですが、リンクを教えてdetail.phpに移った時点で"?"以下が消えてしまいます。 (1)の方法がやり易いかと思い、色々調べて自分なりにやってみましたが、"detail.php?id=%BE%DC%BA%D9&id=1&id=4&id=3&id=5&id=6&id=7&id=9&id=10&id=11" という形になり、なんでか全てのIDを並べている形になっています… 理想はdetail.php?id=xxxxxとなって欲しいのですが… ちなみにコードは以下の通りです。 <? php echo "<table>"; echo "<tr>"; echo "<th>ID</th>"; echo "<th>名前</th>"; echo "<th>所在地</th>"; echo "<th>詳細</th>"; echo "</tr>"; while( $row = mysql_fetch_array($result) ) { echo "<form method=\"GET\" action=\"detail.php?id=".$row["id"]."\">"; echo "<tr>"; echo "<td>".$row["id"]."</td>"; echo "<td>".$row["name"]."</td>"; echo "<td>".$row["addr"]."</td>"; echo "<td><input type=\"submit\" value=\"詳細\" name=\"id\"></td>"; echo "<input type=\"hidden\" value=\"".$row["id"]."\" name=\"id\">"; echo "</tr>"; } echo "</table>"; ?>

    • ベストアンサー
    • MySQL