0

ユーザーがドロップダウン値を選択したときに、データベースからデータを表示しようとしています。すべての登録メンバーのドロップダウンがあります。管理者ユーザーがドロップダウンから登録済みのメンバー名を選択すると、そのメンバーのすべての詳細を入力する必要があります。

私の選択ボックスのコードはこのようなものです

if ($_SESSION['admin_privs'] == "yes" || $_SESSION['edit_all_listings'] == "yes") {
                    $display .= '<tr><td align="right"><strong>' . $lang['listing_editor_listing_agent'] . ':</strong></td>';
                    $display .= '<td align="left" class="row_main">';

                    $agent_select = array();                    
                    // find the name of the agent listed as ID in $edit_or_owner
                    $sql = "SELECT userdb_user_first_name, userdb_user_last_name FROM " . $config['table_prefix'] . "userdb WHERE (userdb_id = $_SESSION[userID])";
                    $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
                    $recordSet = $conn->Execute($sql);
                    if ($recordSet === false) {
                        $misc->log_error($sql);
                    }
                    // strip slashes so input appears correctly
                    $agent_first_name = $misc->make_db_unsafe($recordSet->fields['userdb_user_first_name']);
                    $agent_last_name = $misc->make_db_unsafe($recordSet->fields['userdb_user_last_name']);
                    if ($_SESSION['admin_privs'] != "yes")
                    {
                        $agent_select[$_SESSION['userID']] = $agent_last_name.','.$agent_first_name;
                    }
                    // fill list with names of all agents
                    $sql = "SELECT userdb_id, userdb_user_first_name, userdb_user_last_name FROM " . $config['table_prefix'] . "userdb where userdb_is_agent = 'yes' or userdb_is_admin = 'yes' ORDER BY userdb_user_last_name,userdb_user_first_name";
                    $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
                    $recordSet = $conn->Execute($sql);
                    if ($recordSet === false) {
                        $misc->log_error($sql);
                    }
                    while (!$recordSet->EOF) {
                        // strip slashes so input appears correctly
                        $agent_ID = $recordSet->fields['userdb_id'];
                        $agent_first_name = $misc->make_db_unsafe($recordSet->fields['userdb_user_first_name']);
                        $agent_last_name = $misc->make_db_unsafe($recordSet->fields['userdb_user_last_name']);
                        if ($agent_ID == $_SESSION['userID']) {
                            $agent_select[$agent_ID] = $agent_last_name.','.$agent_first_name;
                            $selected = $agent_ID;
                        }else {
                            $agent_select[$agent_ID] = $agent_last_name.','.$agent_first_name;
                        }
                        $recordSet->MoveNext();
                    }
                    $display .= $form->selectBox($agent_select, $selected, 'or_owner');
                    $display .= "</td>";
                    $display .= '</tr>';
                }

このように、フォームにはさまざまな機能があります

function selectBox($array, $selected='', $name='', $size=1, $multiple=false, $additional='') { 
    $res = ''; 
    static $count = 0; 
    if (is_array($array)) { 
        if ($name == '') { 
            $name = 'selectBox' . ++$count; 
        }

        $res .= "<select name=\"$name\" size=\"$size\"" . ($multiple==false ? '' : " multiple=\"multiple\"") . ($additional ? " $additional" : '') . ">\n"; 
        $i = 0; 
        foreach($array as $key => $value) { 
            $res .= "<option value=\"$key\"" . ($key == $selected ? " selected=\"selected\"" : '') . ">$value</option>\n"; 
        } 
        $res .="</select>\n"; 
    }


    return $res; 
} 


    function textField($value, $name='', $hidden=false, $size =-1, $length =-1, $additional='') { 
        $res = ''; 
        static $count = 0; 
        if ($name == '') { 
            $name = 'textField' . ++$count; 
        } 
        $res .= "<input name=\"$name\" type=\"" . ($hidden ? 'password' : 'text') . "\" value=\"$value\""; 
        $res .= ($size != -1 ? " size=\"$size\"" : ''); 
        $res .= ($length != -1 ? " maxlength=\"$length\"" : ''); 
        $res .=  ($additional ? " $additional" : '') . ">"; 
        return $res; 
    } 

今、データベースから選択したユーザーの詳細を表示したいのですが、どうすればこれを達成できるか教えてもらえますか:(ありがとう

4

2 に答える 2

0

これには、AJAX を使用するのが最適です。ajax の仕組みを説明するチュートリアルが w3schools.com にあります。彼らが提供するコードを変更するだけです。

基本的に、必要なものは次のとおりです。

<SELECT name='name' id='123' onchange='userhint(this.value)'><OPTION value='usercode'...

あなたの選択として。重要なのは、onchange 呼び出しを SELECT に入れることです。

フォームも必要です ここに行く

JS は次のようになります。

function userhint(str)
{

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("changingdiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","myphpfile.php?q="+str,true);
xmlhttp.send();
}

これにより、q の get 要求に応答して myphpfile.php が返すもので、'chingdiv' の内容が置き換えられます。あなたは明らかにそのファイルを自分で書くことができます。

やり方に応じて、php は新しい div の完全な HTML を作成するか、元の領域に入力するために使用できる json 文字列を返すことができます。初心者にとっては、最初のオプションが間違いなく最も簡単です (上記の非常に基本的な js で期待されています) が、json メソッドは使用する帯域幅がかなり少なく、同じファイルを再利用して複数のページをフィードするのが簡単になります。

于 2013-06-15T06:04:49.727 に答える