0

ユーザーはゾーンのタイプを確認し、変更のタイプを選択します。このスクリプトは、変更の説明の詳細をデータベースから html のテキストエリア フィールドに読み込みます。

次に、私が次に起こりたいことは次のとおりです。

説明テキストは、html 説明テキスト領域内で変更が行われるさまざまなゾーンに追加されます。データベースの説明データにゾーンを追加したくありません。問題は、説明フィールドへの異なるゾーンの追加が機能していないことです..

テキストを追加するためにjavascriptを使用しています。コードを修正する必要がある理由を教えてもらえますか?

 <html>

<head>
<script language="JavaScript" type="text/javascript">
    // who says we found anything? Maybe this id does not even exist.
    function getData(combobox){
             var value = combobox.options[combobox.selectedIndex].value
             // TODO: check whether the textarea content has been modified.
             // if so, warn the user that continuing will lose those changes and
             // reload a new page, and abort function if so instructed.
             document.location.href = '?change_type='+value;

             data_center = [],
             data_centers = "";
             inputs = document.getElementsByTagName('input');

            for (var x = 0, len = inputs.length; x < len; x++) {
                {
                     if (inputs[x].type == "checkbox" && inputs[x].name == 'data_center[]') {
                         if (inputs[x].checked === true) {
                             data_center.push(inputs[x].value);
                         }
                     }
                }
                data_centers = (data_center.length > 0 ? ': ' + data_center.join(', ') : '') + '.';

                document.getElementById('description').value += data_centers;
                document.getElementById('impact').value += data_centers;

           }
    }
   </script>

   </head>


   <?php

   require_once("db_handler.php");

   // $_REQUEST is both _GET and _POST
   if (isset($_REQUEST['change_type'])) {
          $change_type = mysql_real_escape_string($_REQUEST['change_type']);
  } else {
          $change_type = False;
 }

 $query = "SELECT `changeID` , `changeName` FROM `change`;";
 $exec  = mysql_query($query); // You need to be already connected to a DB

 if (!$exec) {
          trigger_error("Cannot fetch data from change table: " . mysql_error(), E_USER_ERROR);
           }

       if (0 == mysql_num_rows($exec)) {
                     trigger_error("There are no changes in the 'change' table. Cannot continue: it would not work. Insert some changeids and retry.", E_USER_ERROR);
                                }

    $options = '';

            while($row = mysql_fetch_array($exec))
    {
                  // if the current pageid matches the one requested, we set SELECTED
                  if ($row['changeID'] === $change_type)
                            // who says we found anything? Maybe this id does not even exist.
                                    $sel = 'selected="selected"';
                              else
                                            {
                                                              // If there is no selection, we use the first combo value as default
                                                              if (False === $change_type)
                                                                                    $change_type = $row['changeID'];
                                                                              $sel = '';
                                                                                          }
                                          $options .= "<option value=\"{$row['changeID']}\" $sel>{$row['changeName']}</option>";
                                                  }
    mysql_free_result($exec);
    if (isset($_POST['description']))
{
 $change_data = mysql_real_escape_string($_POST['description']);
  $query = "INSERT INTO change ( changeID, description ) VALUE '{$change_type}', '{$change_data}' ) ON DUPLICATE KEY UPDATE description=VALUES(description);";
       if (!mysql_query($query))
                 trigger_error("An error occurred: " . mysql_error(), E_USER_ERROR);
  }

  $query = "SELECT `changeID` , `changeName` FROM `change`;";
  $exec  = mysql_query($query); // You need to be already connected to a DB

  // abbreviated unchanged code.

 $query = "SELECT `description`, `impact` FROM `change` WHERE `changeID`='{$change_type}';";
 $exec  = mysql_query($query);

 if (mysql_num_rows($exec) > 0)
 {
         // if it does, we're inside a textarea and we directly output the text
   $row = mysql_fetch_array($exec);
        $textareaDescription = $row['description'];
        $textareaImpact = $row['impact'];
  } else {
   $textareaDescription = '';
   $textareaImpact = '';
  }
  mysql_free_result($exec);
 ?>
  <body bgcolor="white">

 <form name="changeform" method="post" action="email_form.php">
 <table>

 <tr valign="top">
 <td><b>Data Center</b></td>
 <td><input name="data_center[]" type="checkbox" value="[Zone10]"/>[Zone10]
     <input name="data_center[]" type="checkbox" value="[Zone11]"/>[Zone11]
 </td>
 </tr>
 <tr valign="top">
 <td><b>Change Type</b></td>
 <td><select id="change_type" name="change_type" onChange="getData(this)""><?php print $options; ?></select></td>
 </tr>
 <tr valign="top">
 <td><b>Description</b></td>
 <td><textarea name="description" id="description" cols="50" rows="10"><?php print $textareaDescription; ?></textarea></td>
 </tr>
 <tr valign="top">
 <td><b>Service Impact</b></td>
 <td><textarea name="impact" id="impact" cols="50" rows="10"><?php print $textareaImpact; ?></textarea></td>
 </tr>
 <tr valign="top">
 <td align="center" colspan="2"><input type="submit" value="submit change" /></td>

 </tr>
 </table>
 </form>
 </body>

 </html>
4

1 に答える 1

0

次の行は、何か問題があるように見えます。

    for (var x = 0, len = inputs.length; x < len; x++) 
    {
        {

それが私がよく知らない構文でない限り。

実行中の実際のコードを表示する方法はありますか? このようなものを見ると、実際にそれを見ることができずに消化するのは少し難しい.

于 2013-07-19T00:33:08.633 に答える