0

次のスクリプトがあります。ユーザーが URL のパラメータとして 123 などの数値を渡すと、アプリはその値を MySQL からロード/フェッチし、テキストエリアに表示します。

たとえば、URL に「example.com/index.php?id=123」と入力すると、データベースから 123 番目のレコードが取得され、テキストエリアに表示されます。すべてが機能しているようですが、フォームが送信されたときに「ソース」テーブルの最後の行/ID を表示したいと考えています。そのため、「保存済み」と表示する代わりに ポップアップでは、「124」(または最後に更新された行/番号)のようなものが表示されます。

index.php:

<?php
include('connect-db.php');
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
{
    $id = $_GET['id'];
    $result = mysql_query("SELECT content FROM source WHERE id=$id") or die(mysqli_error()); 
    $row = mysql_fetch_array($result);

       if($row)
    {
     $submit_date = date("Ymd");
     $content = $row['content'];                    
    }

}
?>
<!DOCTYPE html>
    <html>
      <head>
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>        

     <script type="text/javascript"> 
          $(document).ready(function(){
                $("#myform").submit( function () {    
                  $.post(
                   'submit.php',
                    $(this).serialize(),
                    // 
                   // show the last id here!
                   //
                        function(data){ alert("Saved!"); }
                  );
                  return false;   
                });   
            });
    </script>      

      </head>
      <body>

    <div id="header" >

    <form action="submit.php" method="post" id="myform">
    <textarea id="editor" name="editor" id="editor"><?php echo $content; ?></textarea>
    <br/>
    <input type="submit" name="submit" value="Submit" id="submit"/>

    </form>

    </div>

      </body>
    </html>

submit.php:

<?php
include('connect-db.php');

$submit_date = date("Ymd");
$content = mysql_real_escape_string(htmlspecialchars($_POST['editor']));
$ip_address = $_SERVER['REMOTE_ADDR'];

if ($content != '') { 
// 
// Show the variable (last_id) value in the JavaScript above!
//
$last_id = mysql_insert_id();  

mysql_query("INSERT INTO source (submit_date, ip, content) values('$submit_date','$ip_address','$content')") or die(mysql_error());
mysql_close($connection);
}
?>

接続データベース:

<?php
 $server = 'localhost';
 $user = 'domdom';
 $pass = 'password@123';
 $db = 'domdom';

 $connection = mysql_connect($server, $user, $pass) or die ("Could not connect to server ... \n" . mysql_error ());
 mysql_select_db($db) or die ("Could not connect to database ... \n" . mysql_error ());
?>

PDO や MySQLi に関するアドバイスは必要ないことに注意してください。現時点では重要ではありません。ただし、セキュリティ/SQL クエリなどの改善に関する提案は大歓迎です。ありがとう。

4

1 に答える 1

0

私は2つの部分で答えようとします:

[1] PHP 側: 「isset($_GET['id'])」セクションで、入力するテキスト領域のコンテンツを返すだけです。DB で 123 -> 'Friday' とします。文字列「金曜日」を返すだけです。

[2] クライアント側: フォームを「送信」しないでください。JS 関数を呼び出し、そこで XmlHttpRequest を作成し、要求を AJAX 要求としてサーバーに送信します。戻り値を取得したら、それを調べて HTML テキストエリアに入力します。

この方法があなたに適していると思われ、詳細が必要な場合はお知らせください。多くのサイトでこれを行っています。

于 2013-03-10T03:06:49.117 に答える