0

PHP を使用して、MySQL クエリから生成されたテーブルを混合 HTML/PHP ファイルに挿入します<div>。は次のように<div>宣言されています。index.php<div id="searchdiv"></div>

のコンテンツは次の<div>ように生成されます。

(1) 検索ボックスを作成します。

<form id="searchform">
<td class="master">Codigo o nombre cliente: <input type="text" name="box" onkeypress="return noenter()" /><input id="srchsubmit" type="submit" value="Buscar" onclick="showUser(this.form['box'].value);return false;" /><br /></td></form>

(2) JavaScript を実行します。

function showUser(str){
    if (str==""){
        document.getElementById("searchdiv").innerHTML="";
        return;
        }
        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("searchdiv").innerHTML=xmlhttp.responseText;
                        }
                        }
                        xmlhttp.open("GET","search.php?q="+str,true);
                        xmlhttp.send();
                        }

(3) に挿入する結果を構築し<div>ます。

<?php

// Fetch the string from the search box

$q=$_GET["q"];

// Connection settings

$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "scorecard";

//Connect to MySQL Server

mysql_connect($dbhost, $dbuser, $dbpass);

//Select Database

mysql_select_db($dbname) or die(mysql_error());

// Fetch data

$sql="SELECT * FROM scoreboard WHERE codcliente = '".$q."' OR lower(nombre) LIKE '%".strtolower($q)."%'";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0){
  echo '<div align="center" style="background-color:#CCCCCC; font-weight:bold; color:#C0504D;">Record no existe.&nbsp;&nbsp;&nbsp;<input id="srchcreate" type="button" value="Crear" /></div>';
  return;
  }
//echo $result;

// Construct the table

echo "<table id='srchtable' class='srchtable'>";

// Construct the array

while($row = mysql_fetch_array($result)){
  echo "<tr>";
  echo "<td align='center'>" . $row['codcliente'] . "</td>";
  echo "<td align='left'>" . $row['nombre'] . "</td>";
//  echo "<td align='center'>" . $row['ejecutivo'] . "</td>";
//  echo "<td align='center'>" . $row['banca_as400'] . "</td>";
//  echo "<td align='center'>" . $row['banca_real'] . "</td>";
//  echo "<td align='right'>" . $row['ingresos'] . "</td>";
  echo "<td align='center'>" . $row['ciiu'] . "</td>";
//  echo "<td align='center'>" . $row['division'] . "</td>";
  echo "<td align='left'>" . $row['actividad'] . "</td>";
  echo "<td align='center' class='{$row['riesgo_industria']}'>" . $row['riesgo_industria'] . "</td>";
  echo "<td align='center' class='{$row['riesgo_cliente']}'>" . $row['riesgo_cliente'] . "</td>";
  echo "<td align='center'>" . $row['fecha'] . "</td>";
  echo "<td align='center'>" . $row['analista'] . "</td>";
  echo "<td align='center'>" . "<input id='edit' type='button' value='Editar' onclick='' />" . "</td>";
  echo "</tr>";
}
echo "</table>";

?>

結果は次のようになります。私の質問は、[編集] (編集) ボタンをクリックしたときにフィールドをインラインで編集可能にするにはどうすればよいですか? オプション入力を の前に置いて、<td>編集する行を選択することはできますか? 編集後、変更を MySQL に戻すにはどうすればよいですか? ありがとう!

4

1 に答える 1

1

最初の質問では、チェックボックスは必要ありません。jqueryを気にしない場合は、使用できます

$(this).closest('tr')

クリックされた編集ボタンがある行を取得します。次に、編集する各セルの内容を入力に置き換えることができます。テーブルをフォーム タグでラップし、ajax を使用して送信します。

始めるための何か...

$(document).ready(function(){
        $(".edit").click(function(){
            var tr = $(this).closest("tr");
            var submit = "<input type='submit' name='Submit' value='Submit' />";

            tr.find(".td").each(function(){
                var name = $(this).attr("title");
                var value = $(this).html();
                var input = "<input type='text' name='"+name+"' value='"+value+"' />";
                $(this).html(input);
            });

            tr.find(".button").html(submit);

        });
    });

テーブル/フォームが次のようになっていると仮定します。

<form id="form" name="form" action="#">
        <table>
            <tr class="row">
                <td class="td" title="first_name">John</td>
                <td class="td" title="last_name">Smith</td>
                <td class="button" title="button"><button class="edit">Edit</button></td>
            </tr>
            <tr class="row">
                <td class="td" title="first_name">Roger</td>
                <td class="td" title="last_name">Jones</td>
                <td class="button" title="button"><button class="edit">Edit</button></td>
            </tr>
        </table>
    </form>

次に、ajax送信を実行し、入力を削除してテキストに戻す必要があります。

于 2011-07-19T04:30:24.287 に答える