2011-01-31 8 views
0

私は、データベース値とコンボボックス選択に関連するテキストを表示するテキストフィールドがロードされたコンボボックスを持つ単純なアプリケーションを作った。 名ナンバー 数値1 1234 number2の2345 number2の5678 number3 2212php、htmlコンボボックスとテキストフィールド

ので、コンボボックスの値の数値1、数値2、number3を持つことになります。ユーザーがnumber1を選択すると、1234のテキストフィールド値をロードし、number2が選択されていれば2345,5678をロードする必要があります。

以下

データベースから取得し、私のコードです...しかし、問題は、値が私を押したときにのみロードされているキーを入力の代わりに、送信ボタンをクリックすると...

<head> 
    <title>Sample Numbers</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body > 
    <?php 
    $dbname = 'sample_db'; 
    $db_user = 'xxx'; 
    $db_pass = 'xxx'; 
    $host = 'localhost'; 
    $conn = mysql_connect($host, $db_user, $db_pass); 
    mysql_select_db($dbname); 
    $query = "select distinct Name from numbers"; 
    $result = mysql_query($query, $conn) or die(mysql_error()); 
    ?> 
    <center> 
     <form name=callsubm> 
      <table> 
       <?php 
       if ($result) { 
       ?> 
        <tr> 
         <td>Group Name:</td> 
         <td><select name="Name" id="Name" onchange="onComboChange();"> 
         <?php 
          while ($row = mysql_fetch_assoc($result)) { 
           echo '<option value="' . $row['Name'] . '">' . $row['Name'] . '</option>'; 
          } 
         } 
          ?> 
         </select> 
         <?php 
         if (isset($_GET['Name'])) { 
          $array = array(); 
          $query = "select Number from numbers where Name='" . $_GET['Name'] . "'"; 
          $result = mysql_query($query, $conn) or die(mysql_error()); 
          $i = 0; 
          if ($result) { 
           while ($row = mysql_fetch_assoc($result)) { 
            $array[] = $row['Number']; 
            $i++; 
           } 
          } 
          $total_numbers = implode(',', $array); 
         } 
         ?> 
         <script type="text/javascript"> 
          function showValues() { 
           var a=new Array(); 
      <?php 
            for ($i = 0; $i < count($array); $i++) { 
             echo "a[$i]='" . $array[$i] . "';\n"; 
            } 
    ?> 
            alert(a.join()); 
            document.getElementById("inTxt").value=a.join(); 
          } 
         </script> 
        </td> 
       </tr> 
       <tr> 
        <td>Numbers :</td> 
        <td ><input name=inTxt id=inTxt type="text" size="15"></td> 
        <td><input type="button" id="callBtn" name="callBtn" value="submit" onclick="showValues()" ></td> 
       </tr> 
      </table> 
     </form> 
    </center> 
    <script type="text/javascript"> 
     function onComboChange() { 
     groupName=document.getElementById("Name").value; 
     alert("Selected Group:" + groupName); 
    } 
    </script> 
</body> 

この問題を解決するには?事前に

おかげ

+0

回答がうまくいく場合は、ちょっとしたチェックボックスをクリックしてください。 – xil3

+0

生成されたhtmlソースコードも投稿してください。 –

答えて

0

変更はなく、タイプとしてボタンを使用するよりも、自分の送信ボタンに提出するタイプ:あなたが送信ボタンが必要な場合は

<input type="submit" id="callBtn" name="callBtn" value="submit" onclick="showValues()" > 
+0

しかし、php $ total_numbersは、私がenterを押したときにのみ生成され、javascriptに渡すと空の文字列だけが返されます。どこが間違っているのか分かりません – Maya

+0

あなたの質問を編集してこれをもっと詳しく説明できますか? Esp。あなたは "javascriptに渡す"という意味ですか? –

+0

Martinに感謝します。私はajaxを使ってこの問題を解決しました。私はリクエストとして別のPHPファイルにコンボ値を渡し、文字列レスポンスを返しました。 – Maya

1

が、それはする必要はありません。 buttonである場合は、<input type="submit">を使用してください。したがって

のために、HTMLを変更:ボタンを使用する場合は

<input type="submit" id="callBtn" name="callBtn" value="submit" onclick="showValues()" > 

(あなたがPHPでその値を照会していない場合は、value="submit"を省略することができます...)


あなたはボタンを使用して、送信ボタン上に表示されるテキストは、提出の値と異なるようにしたい場合:

<button type="submit" id="callBtn" name="callBtn" onclick="showValues()" 
    value="valueToBeSubmitted">textToBeDisplayed</button> 
関連する問題