2017-09-01 16 views
0

私はphp/sql(一般的にはすべての言語)でnoobのビットですが、htmlボタンのクリックでSQLコマンドを実行しようとしています。SQLコマンドを実行するHTMLボタン

私が実行しようとしているSQLコマンドは、これは私が現時点で持っているものであるUPDATE supplies SET quantity = quantity + 1 WHERE Id=1

です:

dp.php

<?php 
$servername = "localhost"; 
$dbname = "tonor"; 
$username = "root"; 
$password = "password"; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 
?> 

のindex.php

<!DOCTYPE html> 
<html> 
    <head> 
    <?php 
     require_once 'db.php'; 

     if(isset($_POST['data'])){ 
      $sth = $conn->prepare("UPDATE supplies SET quantity = quantity + 1 WHERE Id=1"); 
      $sth->execute(); 
     } 
    ?> 
    <title>Homepage</title> 
    <link rel="stylesheet" type="text/css" href="style/main.css"> 
</head> 
<body> 
    <h1>testpage</h1> 
    <form method="POST" action="index.php"> 
     <input type="submit" name="data" value="1"/> 
    </form> 
+0

、それは、最初のサーバー・プロセスであるPHPコードとブラウザに結果を送信します。あなたが望むようなものを作る古典的な方法は、POSTを使って2段階のプロセスでPOSTリクエストをPHPで処理する方法を検索することです。 –

答えて

1

これを試してみるべきですが、読んでからさらに練習する必要があります。

PDOのマニュアル:http://php.net/manual/en/book.pdo.php

それは見て多くのですが、ちょうどそれがどのように動作するかのアイデアを得るために彼らの例を見てみましょう。

それを容易にするためにも、これを読む:https://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

PHPは、サーバー側の言語です。

いずれにしても、次のようにすれば十分です。

<?php 
    $servername = "localhost"; 
    $dbname = "databasename"; 
    $username = "username"; 
    $password = "password"; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } catch(PDOException $e) { 
     echo "Connection failed: " . $e->getMessage(); 
    } 

    return $conn; 
?> 


<!DOCTYPE html> 
<html> 
    <head> 
    <?php 
     require 'db.php'; 

     if(isset($_POST['data'])){ 
      $sth = $conn->prepare("UPDATE supplies SET quantity = quantity + 1 WHERE Id=1"); 
      $sth->execute(); 
     } 
    ?> 
    <title>Homepage</title> 
    <link rel="stylesheet" type="text/css" href="style/main.css"> 
</head> 
<body> 
    <h1>testpage</h1> 
    <form method="POST" action=""> 
     <input type="submit" name="data" value="1"/> 
    </form> 

</body> 
</html> 
+0

こんにちはジョン、返信いただきありがとうございます、それは別に、それは私がSQLクエリを実行するページをリロードするたびに、私はGoogleでそれを検索し、 isset($ _ POST ['data'])){SQLQUERY HERE}これは既にあなたによって行われました。私は現在使用しているコードで元のポストを更新しました。 – Jeff

+0

リロードとは、F5キーを押すか、新しいタブ/ウィンドウでページを開くことですか?データを投稿してからF5キーを押してページをリロードすると、ブラウザはデータを再度投稿することができます(通常は警告が表示されます) –

1

私はジョンの投稿に答えています。

ブラウザがページデータをサーバーに再送するため、ページを再読み込みするたびに実行されるのは、その理由です。投稿時にリダイレクトするにはheader()を使用する必要があります。あなたのコードは完璧ではありませんが動作します。それを整理してください。おそらく、すべてのデータベースロジックをクラスに配置してください。この例で動作するリダイレクトの例あなたがHTMLをブラウズで処理されている間PHPはサーバーで実行されることを理解していないと思われるコードから

<?php 
    if(isset($_POST['data'])) 
    { 
     require 'db.php'; 
     $sth = $conn->prepare("UPDATE supplies SET quantity = quantity + 1 WHERE Id=1"); 
     $sth->execute(); 
     header("Location: {$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']}"); 
     die("Posted, now redirecting"); 
    } 
?> 
関連する問題