2

さて、私はMySQLとPHPにひどく慣れていませんが、ここでいくつかのヘルプを使用できます。

壮大なビジョン:MySQLデータベースの同じ行の異なるフィールドに値を格納する編集可能なフィールド(私はJeditable、インプレース編集jqueryプラグインを使用しています)でいっぱいの大きなページ。

ただし、MySQLデータベースのさまざまなフィールドに値を適切に投稿する方法については完全に迷っています。私が持っているものは以下の通りです。これは、Jeditableが提供する例から派生しています。フィールドにデータを入力することはできますが、データではなくフィールドのIDが保存され、正しい1つの列ではなく、データベースの複数の列に追加されます。

つまり、ここに表示されているものをMySQLデータベースのさまざまな場所にどのようにマッピングしますか(例:顧客名の値、サイズの値、初期販売額のMRRなどの1つのラインアイテム/レコード)

これが私のHTMLです-

<!-- JQuery to extract form data... -->
  <script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
      $('#paragraph_1').editable('save.php');
    });

    $(document).ready(function() {
      $('#custsize').editable('save.php');
    });

    $(document).ready(function() {
      $('#mrratsale').editable('save.php');
    });
  </script>

<!-- my form fields... -->
<h2 id="paragraph_1" name="paragraph_1"></h2>
<h3 id="custsize" name="custsize"></h3>
<h3 id="mrratsale" name="mrratsale"></h3>

...そしてこれが私のsave.phpファイルです...

   <?php
      require_once 'config.php';
      $query=sprintf("INSERT INTO customerdata (ListItemID, CustName, CustSize, MrrAtSale)
        VALUES (%d, '%s', '%s', '%s')",
         $id, $_POST['id'], $_POST['id'], $_POST['id'], stripslashes($_POST['value']));

      $dbh->exec($query);
       /* What is echoed back will be shown in webpage after editing.*/
         print $_POST['value']; 
     ?>

どんな助けでも大いに、大いに、大いに感謝されるでしょう(そして笑わないようにしてください!)

4

2 に答える 2

5

あなたがしなければならないことは、それぞれの編集可能なデータベース書き込みをそれ自身の関数にターゲットにすることです-それであなたは個々のフィールドをターゲットにすることができます。

したがって、htmlファイルは次のようになります(JSもクリーンアップしました)。

<!-- JQuery to extract form data... -->
<script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
    $('.paragraph_1').editable('save.php?type=paragraph');
    $('.custsize').editable('save.php?type=custsize');
    $('.mrratsale').editable('save.php?type=mrratsale');
  });
</script>

<!-- my form fields... -->
<h2 id="1" class="paragraph_1"></h2>
<h3 id="1" class="custsize"></h3>
<h3 id="1" class="mrratsale"></h3>

save.phpファイルにクエリ文字列を追加した方法に注目してください。また、正しいレコードを更新できるように、要素のIDをレコード内のフィールドに変更する必要があります。

phpファイル:

<?php
  require_once 'config.php';

  $type = (isset($_GET['type'])) ? $_GET['type'] : "";
  $value = (isset($_POST['value'])) ? $_POST['value'] : ""; //value posted
  $id = (isset($_POST['id'])) ? $_POST['id'] : ""; //id of the element

  if($type == "paragraph") {
    mysql_query("UPDATE customerdata SET paragraph='$value' WHERE id='$id'");
  } elseif ($type == "custsize") {
    mysql_query("UPDATE customerdata SET CustSize='$value' WHERE id='$id'");
  } elseif ($type == "mrratsale") {
    mysql_query("UPDATE customerdata SET MrRatSale='$value' WHERE id='$id'");
  };

   print $value; 
?>

データベースに配置する前に、検証を追加してデータをクリーンアップする必要がありますが、これによりjEditableが機能するはずです。

updateおそらくレコードを作成するのではなく、レコードを作成する必要があることに注意してください。insertそうしないと、データが編集されるたびに新しいレコードが作成されます。

IDが正しいレコードを更新するために使用されていることがわかります。

私は最近jEditableを実際に使用していませんが、これで始めることができます。

于 2012-04-12T05:00:19.903 に答える
0

さて、私は少し混乱しています。特定のフィールドをターゲットにしようとしているのに、それができないという問題がありますか?その場合は、主キーとして指定されたフィールドがあることを確認し、それを使用して、フィールドを更新する行を指定します。照合する正確な値を含む特定の行をターゲットにしない場合、テーブルに複数のレコードがある場合に、正しいレコードをどのように変更するかがわかりません。

次に、これらすべてのフィールドをどのように処理していますか?フォームコードが保存されるたびに、その場で生成されるだけではないことを願っています。これは、命名規則が非常に適切に設定されていない限り、後でそのテーブルに保存されているデータを整理するのは悪夢になるためです。つまり、フィールド(user_name、user_emailなど。field01、field02などではない)に明確なラベルを付けるのに時間をかけます。また、コードが存在/送信されたフィールドに基づいて新しいフィールドを作成している場合は、それが開きます。気をつけるべき他のものの束をアップします。誰かがHTMLで1000のフォームフィールドを持つページを作成し、それを送信すると、データベースはそれらすべてのためにフィールドを作成しようとすることができますか?ある種のフィールド検証システムが導入されている場合(いくつかの有限の制限が導入されている場合)、自分が行っていないコードに依存するのをやめることをお勧めします。tデータベース情報を自動的に構築/管理することを作成/理解します。必要なフィールドを作成し、それらにインテリジェントな名前を付けるだけです。

第三に、PHPとMySQLのものを手作業でコーディングしてみませんか?これは、両方でより適切にコーディングする方法を学ぶのに役立つだけでなく、最小限の調整で希望どおりに機能しない場合、Jeditableは時間の無駄のように聞こえます。あなたが説明していることは難しいことではありません-そしてあなたがそれを助けることができるならJQueryを使わないでください(それは新しいJSの人々にとっての松葉杖です)。

これのいくつかがあなたの質問に役立つ/答えることを願っています。

于 2012-04-12T04:29:13.647 に答える