У меня есть небольшой веб-сайт, в котором используется базовая структура MVC. У меня есть код, который вставляет два значения в базу данных, вставка прекрасно работает без каких-либо проблем, однако, если я хочу видеть новые данные, я обычно должен обновлять страницу или переходить на другую страницу, а затем обратно. Я понимаю, что мне нужно использовать 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