PHPのエラー対処法を教えてください!

このQ&Aのポイント
  • PHPのエラー対処法についてお教えいただけませんか?添付のPHPファイルにエラーがあり、正しく動作しません。
  • 質問者はPHPファイルのエラーについてアドバイスを求めています。詳細なエラー内容は添付のコード内にあります。
  • 質問者はPHPファイルのエラーについて不明な点があります。添付のコード内の特定の箇所の修正方法やHTML4.01以外のタグの利用可否について知りたいと思っています。
回答を見る
  • ベストアンサー

PHPのエラー対処法を教えてください!

いつもお世話になっております。 添付のPHPにエラーがあり、正しく動作してくれません。 どなたかご教授いただけませんでしょうか。 --環境-- ドキュメントの型宣言:HTML4.01 Frameset セカンダリスキーマ:HTML4.01 Frameset --不明な点(修正したい箇所)-- (1)黄色に表示されているエラー(下記の「($this-)>」が黄色になっています) $xml = "<row id=> foreach ($customRowAttributes as $name = $field) $xml.= " {$name}='" . ($encodeCustomAttributes ? base64_encode($this->_getRowField($row, $field)) : $this->_getRowField($row, $field)) . "'"; $xml.= "\n"; (2)<table><metadata><values><row><column>の波線 ※「HTML4.01 Framesetでは、タグ<table>が親タグの中に含まれる必要があります。」 ※「HTML4.01 Framesetでは、<metadata>(<values><row><column>)タグは利用できません。」 ※添付が見えにくくてすいません。 上記(<metadata>など)はHTML4.01以外であれば使用できるのでしょうか?それとも他に書き方があるのでしょうか。 --XML側のコード-- <?xml version="1.0" encoding="utf-8"?> <table> <metadata> <column name="name" label="NAME" datatype="string" editable="true"/> <column name="firstname" label="FIRSTNAME" datatype="string" editable="true"/> <column name="age" label="AGE" datatype="integer" editable="true"/> <column name="height" label="HEIGHT" datatype="double(m, 2)" editable="true"/> <column name="continent" label="CONTINENT" datatype="string" editable="true"> <values> <value value="eu">Europe</value> (・・・略・・・) </values> </column> <column name="country" label="COUNTRY" datatype="string" editable="true"> <!-- These values will be ignored when using demo.js because in this file we declare a custom enumeration provider --> <values> <value value="be">Belgium</value> (・・・略・・・) </values> </column> <column name="email" label="EMAIL" datatype="email" editable="true"/> <!--column name="website" label="WEBSITE" datatype="url" editable="true"/--> <column name="freelance" label="FREELANCE" datatype="boolean" editable="true"/> <column name="lastvisit" label="LAST VISIT" datatype="date" editable="true"/> <column name="action" label="" datatype="html"/> </metadata> <data> <row id="1"> (・・・略・・・) </row> (・・・省略・・・)※テーブルの内容になります。 </data> </table> 以上

この投稿のマルチメディアは削除されているためご覧いただけません。
  • PHP
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • NARH
  • ベストアンサー率82% (88/107)
回答No.2

うぅ画像が見辛いですね。Goo さん(OK Waveさん?)もう少し工夫して欲しい。 > 添付のPHPにエラーがあり、正しく動作してくれません。 とのことですので、動くけど期待した振舞をしないということでしょうか? (1) ですが、コピペ失敗してませんか?記載の内容だとそもそも文法エラーになると思うので。 > (1)黄色に表示されているエラー(下記の「($this-)>」が黄色になっています) 「$this->」の部分ですよね? > > $xml = "<row id=> > foreach ($customRowAttributes as $name = $field) $xml.= " {$name}='" . > ($encodeCustomAttributes ? base64_encode($this->_getRowField($row, $field)) : $this->_getRowField($row, $field)) . "'"; > $xml.= "\n"; ・$xml = の値クォート閉じてないです。 ・foreachの括弧内 $name => $field かと で、肝心の $this->_getRowField ですが、使っているエディタが '->_' の解釈に失敗しているための warning とか、このクラスが別のPHPファイルに記載されたクラスを継承していて _getRowField メソッドを参照できないとか、そういう(エディタ都合の)warning だったりしませんか? #黄色ってなんだろう?注意?エラーは赤とかになるのかな? (2) ですが <metadata> 要素内をなにか別の処理によって <table> タグの要素に変換して使うんじゃないでしょうか? 最終的には |NAME|FIRSTNAME|AGE|HEIGHT|CONTINENT|COUNTRY|EMAIL|WEBSITE|FREELANCE|LAST VISIT|| こんな表ができるのかな? 印象的には、ちょっと大きめで画面に収まらなさそうなので、もっと見やすい形に整形されるのかもしれませんね。 <meta> はよく見ますけど、table 要素を表現する metadata タグって見たことがなかったので別の処理系に食わせるのかなって思いました。 #ほんのちょっとググってみたけど見当たらなかったので。 質問の雰囲気的に何か既存のアプリケーションに手をいれているとか、サードパーティ製のライブラリを使っているように感じられますが、別のソース内とか、リファレンスに使い方とか記述されていませんでしょうか?

idera_2010
質問者

お礼

ご返信が遅くなり申し訳ございません。 ご回答ありがとうございました。 参考にさせていただきました。

その他の回答 (1)

回答No.1

エラーメッセージはなんと出てますか? PHPでEclipseは使ったこと無いのでどの様に出てくるのかわかりませんが・・・

idera_2010
質問者

補足

「不要な山かっこがあるため、このタグは無効としてマークされています。」です。 今は、MSのExpression Web4を使用しています。 よろしくお願いします。

関連するQ&A

  • XML初心者です。

    いつもお世話になっております。 下記のPHPを解析中なのですが、さっぱり分かりません。 「何をしているか(どんな動きをしているか)」をどなたか解説していただけませんでしょうか。 よろしくお願い致します。 ----------------------------------- <?php class EditableGrid { (略) public function addColumn(・・・(略)・・・) { $this->columns[$name] = array(・・・(略)・・・); } private function _getRowField($row, $field) { return is_array($row) ? (isset($row[$field]) ? $row[$field] : '') : (isset($row->$field) ? $row->$field : ''); } public function getXML((・・・(略)・・・)); { $xml = '<?xml version="1.0" encoding="'. $this->encoding . '" ?>'; $xml.= "<table><metadata>\n"; foreach ($this->columns as $name => $info) { $label = self::escapeXML($info['label']); $xml.= "<column name='$name' label='$label' datatype='{$info['type']}'". ($info['bar'] ? "" : " bar='false'") . " editable='". ($info['editable'] ? "true" : "false") . "'>\n"; if (is_array($info['values'])) { $xml.= "<values>\n"; foreach ($info['values'] as $key => $value) $xml.= "<value value='{$key}'><![CDATA[{$value}]]></value>\n"; $xml.= "</values>\n"; } $xml.= "</column>\n"; } $xml.= "</metadata><data>\n"; $fetchMethod = method_exists($rows, 'fetch') ? 'fetch' : (method_exists($rows, 'fetch_assoc') ? 'fetch_assoc' : NULL); if (!$fetchMethod) foreach ($rows as $row) $xml.= $this->getRowXML($row, $customRowAttributes, $encodeCustomAttributes); else while ($row = call_user_func(array($rows, $fetchMethod))) $xml.= $this->getRowXML($row, $customRowAttributes, $encodeCustomAttributes); $xml.= "</data></table>\n"; return $xml; } ----------以下まだ続くのですが省略します-------- private function getRowXML  ・  ・ (略)  ・  ・ public function renderXML  ・  ・ (略)  ・  ・ } 以上

    • ベストアンサー
    • PHP
  • C# Linq To XML について

    C#をつかって、XMLファイルを読み出し、値を検索しようとしていますが、ほしい情報をとることができません。もしわかる方がいましたら、ご回答よろしくおねがいします。 XMLは下記の形式で、このtableが4つ続いてあります。 <table> <row> <column name="Tests">Tests Textvalues</column> </row> <row> <column name="A">Id</column> <column name="B">Description</column> <column name="C">Value</column> </row> <row> <column name="A">1</column> <column name="B">no</column> <column name="C">34 25 E0</column> </row> <row> <column name="A">2</column> <column name="B">yes</column> <column name="C">34 25 E1</column> </row> </table> <table>.....つづく 下記のようなコードを書きました。 XElement xelement = XElement.Load(ファイルパス); IEnumerable<XElement> tables = xelement.Elements(); foreach (XElement table in tables) { var name = from nm in table.Elements("row") where (string)nm.Element("colmun").Attribute("B")== "no"              select nm; foreach (var a in name) { Console.WriteLine(a); } } 残念ながら、このコードでは、nameの中身がからっぽです。 目的は、Bの値からCの値を検索することです。 以上、よろしくお願いします。

  • <xsl:key>とtopreceding-siblingを使ったグループ化

    下記のxmlを <xml xmlns:s="uuid:#dummy#" xmlns:dt="#dummy#" xmlns:rs="#dummy#" xmlns:z="#RowsetSchema"> <s:Schema id="RowsetSchema"> <s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30"> <s:AttributeType name="COUNTRY" rs:number="1" rs:nullable="true" rs:writeunknown="true"> <s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="4" rs:fixedlength="true"/> </s:AttributeType> <s:AttributeType name="NAME" rs:number="2" rs:writeunknown="true"> <s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="9" rs:fixedlength="true" rs:maybenull="false"/> </s:AttributeType> </s:ElementType> </s:Schema> <rs:data> <z:row COUNTRY="JAPAN" NAME="TARO" AGE="12"/> <z:row COUNTRY="JAPAN" NAME="JIRO" AGE="23"/> <z:row COUNTRY="CHINA" NAME="SABURO" AGE="34"/> </rs:data> </xml> 下記のxslを使用してCOUNTRY毎にグルーピングして csv形式で出力したいですが以下のxslだとうまくいきません。 <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:key name="COUNTRY" match="//z:row" use="@COUNTRY" /> <xsl:template match="/"> <xsl:for-each select="//z:row[not(@COUNTRY = preceding-sibling:://z:row/@COUNTRY)]"> <xsl:value-of select="@COUNTRY" />,<xsl:value-of select="@NAME" />,<xsl:value-of select="@AGE" /> </xsl:for-each> </xsl:template> </xsl:stylesheet> [欲しい結果] JAPAN,TARO JAPAN,JIRO スペース CHINA,SABURO

    • ベストアンサー
    • XML
  • REPLACEクエリで条件文を使用するには?

    REPLACEクエリで条件文を使用するには? 以下で、bannedカラムがtrueの時だけfalseに変更しないようにするにはどうすればいいでしょうか? /*テーブルを作成*/ CREATE TABLE test (name CHAR(100) UNIQUE, banned BOOLEAN DEFAULT FALSE NOT NULL); /*bannedカラムにfalseを注入*/ REPLACE INTO test (name) VALUES('鈴木'); /*bannedカラムをfalseからtrueに変更*/ REPLACE INTO test (name,banned) VALUES('鈴木',true); /*このクエリを実行してもbannedカラムをtrueからfalseにしないようにするには*/ REPLACE INTO test (name) VALUES('鈴木');

    • ベストアンサー
    • MySQL
  • VB6でWEBのラジオボタンの操作方法がわかりません

    始めまして、VB初心者です。 VB6でWEBのラジオボタンの操作方法が解りません。 以下のようなHTMLのWEBページがあります。 ラジオボタンをVB6にて操作(チェック)したいのですがどうしても出来ません。 テキスト入力の項目には入力できました。 IE.Document.All("test").Value = "テスト" 上記にてテストと入力できました。 HTMLソース <table> <tr> <td>選択してください </td> <td colSpan="2"><!-- <select name="j_type"> <option value="10">A</option> <option value="11">B</option> <option value="20">C</option> <option value="30">D</option> <option value="40">E</option> <option value="50">F</option> <option value="99">G</option> </select> <label><input type="checkbox" value="10" name="jArr[]">A</label>&nbsp; <label><input type="checkbox" value="11" name="jArr[]">B</label>&nbsp; <label><input type="checkbox" value="20" name="jArr[]">C</label>&nbsp; <label><input type="checkbox" value="30" name="jArr[]">D</label>&nbsp; <label><input type="checkbox" value="40" name="jArr[]">E</label>&nbsp; <label><input type="checkbox" value="50" name="jArr[]">F</label>&nbsp; <label><input type="checkbox" value="99" name="jArr[]">G</label>&nbsp;<br> </td> </table> </table> <p> </p> <table> <tr> <td>選択しましたか?</td> <td><label><input type="radio" CHECKED value="0" name="c_exp">はい</label> <label><input type="radio" value="1" name="c_exp">いいえ</label></td> </table> 自分で作った(ホームページ作成ソフト)WEBにVBから操作したいと思ったのですが、単純にvalueにて数値を入れてもだめなのでしょうか? 宜しくお願いいたします。

  • Androidコンパイル時のエラーについて

    Androidの開発中に下記エラーが出ます。 対処の解る方がおりましたらば教えていただけますでしょう 宜しくお願いいたします。 詳細内容及びソース、XML エラー 2011-05-11 16:09:27 - BMICalculator2] res\layout\main.out.xml:0: Originally defined here. [2011-05-11 16:09:27 - BMICalculator2] C:\workspace\BMICalculator2\res\values\strings.out.xml:1: エラー: Error parsing XML: no element found [2011-05-11 16:09:27 - BMICalculator2] C:\workspace\BMICalculator2\res\layout\main.out.xml:1: エラー: Error parsing XML: no element found [2011-05-11 16:09:27 - BMICalculator2] C:\workspace\BMICalculator2\res\layout\main.xml:38: エラー: エラー: No resource found that matches the given name (at 'id' with value '@id+/button_calculate'). [2011-05-11 16:09:28 - BMICalculator2] res\layout\main.xml:0: エラー: Resource entry main is already defined. [2011-05-11 16:09:28 - BMICalculator2] res\layout\main.out.xml:0: Originally defined here. [2011-05-11 16:09:28 - BMICalculator2] C:\workspace\BMICalculator2\res\values\strings.out.xml:1: エラー: Error parsing XML: no element found [2011-05-11 16:09:28 - BMICalculator2] C:\workspace\BMICalculator2\res\layout\main.out.xml:1: エラー: Error parsing XML: no element found [2011-05-11 16:09:28 - BMICalculator2] C:\workspace\BMICalculator2\res\layout\main.xml:38: エラー: エラー: No resource found that matches the given name (at 'id' with value '@id+/button_calculate'). ソース package com.mamezou.android.bmi.alc; import android.app.Activity; import android.os.Bundle; public class BMICalculatorActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } string.XML <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello.Wopld.BMICalculatorActivity</string> <string name="app_name">BMI Calculator</string> <string name="label_description">BMIを計算します</string> <string name="label_height">身長(cm)</string> <string name="label_weight">体重(kg)</string> <string name="button_calculate">計算</string> </resources> main.XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/label_description" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/label_height" /> <EditText android:id="@+id/text_height" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:maxLength="3" android:text="160" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/label_weight" /> <EditText android:id="@+id/text_weight" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:maxLength="3" android:text="50" /> <Button android:id="@+id/button_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_calculate" /> </LinearLayout>

  • PHP SimpleXml unsetについて

    SimpleXMLにて特定のノードを検索し、検索結果を削除しようとしています。 まず、下記ソースコードの「削除1」を行っていたのですが、 $xmlから検索結果が削除されず「削除2」に修正したところ正常に削除されるようになりました。 「削除1」と「削除2」は検索結果をforeachで直接使用しているか、 一度変数にセットして利用するかの違いなのですが、 なぜ変数に検索結果をセットするとunsetで削除されなくなるのかわかりません。 PHP初心者でして、初歩的な質問かと思いますが、どなたか教えていただけないでしょうか? 宜しくお願い致します。 -------------------------------------------- $xml = new SimpleXMLElement($filepath, null, true); // 削除1 $items = $xml->xpath($name . '[' . $column . '="' . $value . '"]'); foreach( $items as $item ) { unset($item); $ret ++; } // 削除2 foreach( $xml->xpath($name . '[' . $column . '="' . $value . '"]') as $item ) { unset($item[0]); $ret ++; } file_put_contents($filepath, $xml->asXML());

    • ベストアンサー
    • PHP
  • チェックボックスの値取得後の加工について

    下記のJavaScriptをどうように修正をすれば良いか、 ご教授いただければと思い投稿させて頂きました。 どうぞよろしくお願い申し上げます。 出力ボタンをクリックすると現状では下記のようになります。 【現状】 ------------------------------------------------------ アンケート結果  →回答1  →回答2 希望としては取得した値を下記のように加工をして出力したいと思います。 【希望】 ------------------------------------------------------ アンケート結果  →回答1、回答2 【ソース】 ------------------------------------------------------ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN Frameset" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <script> function textoutput(formObj) { var checkbox01 = formObj.elements["C01"]; var text = 'アンケート結果' + '\n'; for ( var i = 0; i < checkbox01.length; i ++ ) { if ( checkbox01[i].checked === true ) { text += checkbox01[i].value; text += '\n'; } } formObj.elements["output"].value=text; } </script> </head> <body> <form name="form01"> <strong>・回答結果</strong><br> <table border="0"> <td colspan="2" valign="middle" width="560"> <input type="checkbox" name="C01" value=" →回答1" id="checkbox1-1"> <label for="checkbox1-1">回答1</label> <input type="checkbox" name="C01" value=" →回答2" id="checkbox1-2"> <label for="checkbox1-2">回答2</label> </td> <table> 結果出力<br> <input type="button" value="ログ出力" onClick="textoutput(this.form);"><br> <textarea name="output" id="output" cols="60" rows="10"></textarea><br> </form> </body> </html>

  • プルダウンとphp+mysqlに関して

    初心者です。教えてください。現在、mysqlのAというテーブルlから持ってきたデータをプルダウンで表示させて、選択したものをmysqlの別テーブルに入力するプログラムをphpで作成しています。ただ、mysqlでAというテーブルからデータは取れているようですが、うまく表示されません。教えていただけるでしょうか? 下記のソースになります。うまくいっていない部分にコメントしています。 <?php //設定 require_once('config.php'); require_once('function.php'); connectDb(); @mysql_query('SET NAMES utf8'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <body> <h1>作成</h1> <form action= "kakunin.php" METHOD="post"> <p>日時:<input type="datetime" name="nitizi"></p> <p>年:<input type="text" maxlength="4" name="toshi"></p> <p><label>項目:<textarea name="question" cols="100" ></textarea></label></p> -----------------ここからがうまくいっていません。--------------- <p><label>分類</label> <?php $rs = mysql_query("SELECT * FROM bunrui_table"); $row = mysql_fetch_array($rs); if(!$rs){ die('取得できませんでした'.mysql_error()); } print '<SELECT NAME="mb">'; while($row=mysql_fetch_array($rs)){ print('<p>'); print("<option value=".$row['b_id'].">"); print("</option>"); print('</p>'); } print '</SELECT>'; ?> ーーーーーーーーーーーーーーーーーーーーーーここまでーーーーーーーーーー </p> <p>A <input name="n_a" type="text" size="50"></p> <p>B <input name="n_b" type="text" size="50"></p> <p>C <input name="n_c" type="text" size="50"></p> <p>D <input name="n_d" type="text" size="50"></p> <p> <label for="s">hantei</label> <select name="s" > <option value="1">A</option> <option value="2" >B</option> <option value="3">C</option> <option value="4">D</option> </select> </p> <label>解説<textarea name="k" cols="100" ></textarea> <br></label> <br> <input type="submit" value = "入力"> <input type="reset" value="reset"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHP array関数の[ ]内の値の表示

    mySQLのデータベースでテーブルを作成、af1~af5のカラムには、に下記のように数値が入っているものと入っていないもの(NULL)があります。 af1 ='10' af2 ='15' af3 ='' af4 ='20' af5 ='' 【作りたいPHP】 数字が入っているカラムがあれば、そのカラム番号(af1なら1、af2なら2)のうちもっとも若い番号1つだけ抽出(上記のカラムであれば3)し、全てのカラムが埋まっていれば0を返すPHPを組みたいと考えています。 <?php $a2 = array( 1=>$row_friend_name['af1'], 2=>$row_friend_name['af2'], 3=>$row_friend_name['af3'], 4=>$row_friend_name['af4'], 5=>$row_friend_name['af5'], ); $empty = array_filter($a2, function($i){return !$i;}); var_dump($empty); ?> 上記のPHPを組んだところ、var_dumpの答えが array(2) [3]=>NULL [5]=>NULL となります。 これを流用し、$emptyの中に[1]や[2]などの記号が入っているかどうかを見極めさせ、そこから1,2,3の数字(空きカラム)を導きだそうと考えました。 "array(2) [3]=>NULL [5]=>NULL"であれば、[1]や[2]を順番に探していき、最初に出てきた[3]を見つけて、'3'を表示させることになります。 *[3]* というワイルドカードを使ったlike検索のような形にしてみましたが、残念ながら検知してくれません。「見つからなかった」という意味の「0」が答えになっています。 マニュアルを何度も読見返したのですが、どうしても[3]=>NULL の3を抽出、表示する方法が分かりません。 大変お手数ですが対応方法についてご教授頂きたくお願い致します。 (なんとか自分で対応しようとしたのですが、納期と他の仕事の関係で、これ以上長時間勉強する時間がとれません。何卒宜しくお願い致します) 当方が作って検知出来なかったPHP <?php $a2 = array( 1=>$row_friend_name['af1'], 2=>$row_friend_name['af2'], 3=>$row_friend_name['af3'], 4=>$row_friend_name['af4'], 5=>$row_friend_name['af5'], ); $empty = array_filter($a2, function($i){return !$i;}); if (in_array('*[1]*', $empty, true)) { echo "'1\n"; } elseif (in_array('*[2]*', $empty, true)) { echo "2\n"; } elseif (in_array('*[3]*', $empty, true)) { echo "3\n"; } elseif (in_array('*[4]*', $empty, true)) { echo "4\n"; } elseif (in_array('*[5]*', $empty, true)) { echo "5\n"; } else { echo "0\n"; } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう