#php #html #jquery
#php #HTML #jquery
Вопрос:
У меня есть раздел на моей странице .html, где я хочу запустить некоторый PHP-код, который считывает данные из базы данных и «повторяет» таблицу, заполненную этой информацией. Я вроде как сделал это объектно-ориентированным, поэтому я пытаюсь сохранить это в проекте.
У меня есть эта точная функция или метод в классе (Class Servicio):
public static function listaServicios(){
$servicios = array();
$query = "";
$db = Database::getInstance();
$query = "SELECT descripcion, precio FROM servicio";
$resultado = $db->conn()->query($query);
foreach($resultado as $item){
$servicio = new Servicio();
$servicio->setDescripcion($item['descripcion']);
$servicio->setPrecio($item['precio']);
array_push($servicios,$servicio);
}
return $servicios;
}
Как вы можете видеть, функция просто возвращает массив, заполненный таким количеством объектов, сколько строк есть в таблице. Страница PHP вызовет этот метод, а затем напечатает таблицу с выбранными данными внутри (с этим проблем нет).
Дело в том, как я могу распечатать его в указанном ранее разделе (div с id =’datos’), который просто:
<section class="principal">
<div id="datos">
</div>
</section>
У меня вроде как есть идея, но я действительно не знаю, как ее реализовать. Возможно, с помощью функции document.ready в jQuery, вызывающей PHP-код? Я бы действительно хотел использовать этот язык, даже если это очень маленькая функция для изучения.
Комментарии:
1. » Я бы действительно хотел использовать этот язык » Вы имеете в виду jQuery? Если это так, вам нужно заглянуть в Ajax. Если нет, то самым простым и правильным способом было бы изменить ваш
.html
файл на.php
файл и вызвать его напрямую.2. Я кое-что сделал с jQuery на другой странице, поэтому я хотел бы поддерживать поток и учиться. Спасибо
Ответ №1:
Вы можете использовать функцию загрузки jquery для загрузки содержимого через удаленный файл в div. Но вам нужно будет обновить свой listaServicios
, чтобы возвращать html вместо массива.
jquery:
$(document).ready(function(){
$('#datos').load('phpfile.php');
});
phpfile.php
<?php
$serv = new Servicio();
echo $serv->listaServicios();
?>
Комментарии:
1. Я думал в кс го на .файл php: <?php include_once «clases/servicio.php»; $tabla; //table $servicios = Servicio::listaServicios(); //Fill data echo $tabla; ?> Как вы думаете, это нормально?
2. @DannAsekas, да, однако вам нужно реализовать PHP. Мой PHP был скорее примером, чтобы показать вам, как использовать отдельный файл php.
Ответ №2:
Правильный ответ на ваш вопрос зависит от интерфейса вашего будущего приложения, которого вы хотите достичь. Если вы хотите какой-то SPA, то вам следует выполнять AJAX-запросы с использованием JavaScript (jQuery или что-то еще) и создать отдельный контроллер для ответа данными.
Но я думаю, что в вашем конкретном случае вы можете делать все на стороне сервера. Прежде всего, вы должны добавить новый метод в свой класс, name например, render:
public static function render(){
$services = static::listaServicios();
include 'path/to/your/template.php';
}
Затем внутри вашегоtemplate.php напишите следующий:
<section class="principal">
<div id="datos">
<?php
foreach($services as $service) {
// echo your $service here as you wish
}
?>
</div>
</section>
Итак, после вызова render()
PHP отобразит эту часть шаблона.
Ответ №3:
Для доступа к свойствам Servicio
лучше создать свою таблицу на php:
<?php $servicios = Servicio::listaServicios(); ?>
<section class="principal">
<div id="datos">
<table style="width:100%">
<tr>
<th>Descripcion</th>
<th>Precio</th>
</tr>
<?php foreach ($servicios as $servicio): ?>
<tr>
<td><?= $servicio->getDescripcion() ?></td>
<td><?= $servicio->getPrecio() ?></td>
</tr>
<?php endforeach; ?>
</table>
</div>
</section>