1

タイトルに記載されている問題について教えてください。

コードセクションは次のとおりです。

<?php
// framework related things in this file.

// vsf = Very Simple Framework

$vsf = new stdClass;

// default app_layout file
$vsf->app_layout = 'app_layout.php';

// define the 'index' file, where we should link back to.
// Need to include the path, otherwise S.E. friendly URLS get messed up.
$vsf->self = '/mapcal/index.php';

// to support search engine friendly URLS, grab data from PATH_INFO
if (isset($_SERVER["PATH_INFO"]) ) {
$tmp_array = explode("/",$_SERVER["PATH_INFO"]);

for ($index = 0; $index < count($tmp_array); $index++) {
// only want the odd elements, they are the parameters.  The even ones are the values
if ( $index % 2 == 0 ) { continue; }
$_REQUEST[$tmp_array[$index]] = $tmp_array[$index+1];
}
}

// these functions are for form error handling
$errorfields = array();

$errormsgs = array();

$errorwasthrown = FALSE;

function adderrmsg($field = '', $msg = '') {
global $errorfields;
global $errormsgs;
global $errorwasthrown;

if ($field) {
$errorfields[] = $field;
}
if ($msg) {
$errormsgs[] = $msg;
}
$errorwasthrown = TRUE;
}

function displayformerrors($errhdr = 'The following errors occured:') {
global $errorfields;
global $errormsgs;

if ( empty($errorfields) and empty($errormsgs) ) {return;}

if (! empty($errormsgs) ) {
print "<p style='color: red;'>$errhdr<br>\n";

foreach ($errormsgs as $msg) {
  print "&#8226; $msg<br>\n";
  }
print "</p>\n\n";
}
}

function displayformlabel ($field = '', $label = '') {
global $errorfields;
if ( in_array($field,$errorfields) ) {
print "<span style='color: red;'>$label</span>";
}
else {
print $label;
}
}

function reuseform($formaction = 'new',$field_list = '',$query = '') {
if ($formaction == "new") {
foreach (split(",",$field_list) as $field) {
  global ${$field};
  ${$field} = '';
  }
}
elseif ($formaction == 'form') {
foreach (split(",",$field_list) as $field) {
  global ${$field};
  ${$field} = $_REQUEST[$field];
  }
}

elseif ($formaction == 'query') {
foreach (split(",",$field_list) as $field) {
  global ${$field};
  ${$field} = $query[$field];
  }
}

}  // close function reuseform

?>

90行目は次のとおりです。${$field} = $ query [$ field];

フォームには12個のフィールドがあるため、通知は12回表示されますが、なぜこれが表示され、編集目的でフォームフィールドのデータを表示できないのですか。この問題について私を助けてください。

4

3 に答える 3

0

$_REQUEST が変数を保持していることを確認してください。

また、reuseform はデフォルトで $query を Array() ではなく '' に設定しているようです... $query は適切に設定されていますか? このエラーは、そうでないことを示しています。

于 2012-04-12T21:15:29.507 に答える
0

このクイックフィックスを使用できますisset

if(isset($GLOBALS[${$field}]))
{
    ${$field} = $query [$field];
}
于 2012-04-12T21:28:10.073 に答える
0

明らか${$field}に評価され"0"$query["0"]定義されていません。

于 2012-04-12T21:24:47.123 に答える