私は、基本的なMVC構造を使用している小さなウェブサイトを持っています。 データベースに2つの値を挿入するコードをいくつか持っていますが、新しいデータを表示するには、通常はページを更新するか、別のページに移動してから戻る必要があります。私はこの仕事をするためにJQuery/Ajaxを使う必要があるが、PHP関数を使ってそれを行う方法を本当に理解していないことを理解しています。データを送信し、ページを更新せずに表示
問題のコードは以下の通りです:
PHPの機能:ユーザーが表示されること
<?php
session_start();
require_once('../Config/config.php');
class Readings
{
public $dbconn;
public function __construct()
{
$database = new Database();
$db = $database->dbConnection();
$this->dbconn = $db;
}
public function enterElecReadings($eUsage)
{
try
{
$estmt = $this->dbconn->prepare("
INSERT INTO elec_readings
(ElecUsage, DateAdded, AccountNumber)
VALUES
(:eUsage, NOW(), :accNum)");
$estmt->bindparam(":eUsage", $eUsage);
$estmt->bindparam(":accNum", $_SESSION['user_session']);
$estmt->execute();
return $estmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function getElecReadings(){
try {
$stmt = $this->dbconn->prepare("SELECT ElecUsage, DateAdded FROM elec_readings WHERE AccountNumber = '" . $_SESSION['user_session'] . "'");
$stmt->execute();
return $stmt;
} catch (Exception $e) {
}
}
}
?>
ページ:
if(isset($_POST['btn-submitElecUsage']))
{
$eUsage = strip_tags($_POST['txtElecUsage']);
try {
if($newReading->enterElecReadings($eUsage)){
$elecNotif[] = "Reading successfully entered.";
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
<div class="elecUsage">
<form id="elecRead" method="POST">
<h2>Electricity Usage</h2>
<?php
if(isset($elecError))
{
foreach($elecError as $elecError)
{
?>
<div class="alert alert-danger">
<?php echo $elecError; ?>
</div>
<?php
}
}
if(isset($elecNotif))
{
foreach($elecNotif as $elecNotif)
{
?>
<div class="alert alert-danger">
<?php echo $elecNotif; ?>
</div>
<?php
}
}
?>
Please enter your latest electricity meter reading:
<br>
<input type="text" name="txtElecUsage" required/>
<br>
<input type="submit" name="btn-submitElecUsage" value="Submit"/>
</form>
<br>
Your previous Electricity meter readings:
<br>
<div id="previousElecReadings">
<br>
<table class="tableElec" >
<thead>
<tr>
<th>Usage</th>
<th>Date Added</th>
</tr>
</thead>
<?php
foreach ($elec_readings as $elec_reading): ?>
<tbody>
<tr>
<td><?php echo $elec_reading['ElecUsage']; ?></td>
<td><?php echo $elec_reading['DateAdded']; ?></td>
</tr>
<?php
endforeach;
?>
</tbody>
</table>
</div>
</div>
コントローラクラス:
<?php
require_once('../Model/readingsModel.php');
require_once('../Tool/DrawTool.php');
$newReading = new Readings();
// instantiate drawing tool
$draw = new DrawTool();
// parse (render) appliance view
$renderedView = $draw->render('../View/meterReadings.php', array('elec_readings' => $newReading->getElecReadings()),
array('gas_readings' => $newReading->getGasReadings()));
echo $renderedView;
?>
として、私は上記です。挿入がうまくいきます。しかし、私は、データをリフレッシュするのではなく、即座に表示したいのです。
アイデア?
ありがとうございました
ajax(jQueryなど)の例を検索しましたか?そこにはたくさんのことがあります。 – Rasclatt
@Rasclatt私はそれを理解することができないか、機能を働かせることはできません。 – resontant81
あなたが試したことを投稿してください。あなたが逃したシンプルなものがあったかもしれません。 – Rasclatt