сохраненные столбцы в массиве, но я не могу показать данные

avatar
Ives Rodriguez
7 апреля 2018 в 22:58
71
1
-1

Я пытаюсь сохранить в массиве данные метода Buscarme, которые есть в модели, а затем в представлении распечатать данные.

это модель/cliente.php

<?php
class cliente
{
    private $pdo;
    public $id;
    public $resultado;
    public $dni;
    public $Nombre;
    public $Apellido;  
    public $Correo;
    public $Telefono;
    public $res;

    public function __CONSTRUCT(){
        try{
            $this->pdo = conectar();
        } catch(Exception $e) {
            die($e->getMessage());
        }
    }

    public function Buscarme($dni){
        try {
            $stm = $this->pdo->prepare("SELECT * FROM cliente WHERE dni = :dni");
            $stm->bindParam(':dni', $dni, PDO::PARAM_INT);
            $stm->execute();    
            $res = $stm->fetchAll(PDO::FETCH_ASSOC);
            $resultado = array();
            $i = 0;
            foreach($res as $row){
                $resultado[$i]['id']       = $row['id'];
                $resultado[$i]['dni']      = $row['dni'];
                $resultado[$i]['Nombre']   = $row['Nombre'] ;
                $resultado[$i]['Apellido'] = $row['Apellido'];
                $resultado[$i]['Correo']   = $row['Correo'] ;
                $resultado[$i]['Telefono'] = $row['Telefono'] ;
            }
        } catch (Exception $ex) {
            die($e->getMessage());
        }
    }
}

это представление view/cliente/cliente.php

<h1 class="page-header">CRUD con el patrón MVC en PHP POO y PDO </h1>
<a class="btn btn-primary pull-right" href="?c=cliente&  =agregar">Agregar</a>
<a class="btn btn-primary pull-right" href="?c=cliente&a=ardila">Ardila</a>
<a class="btn btn-primary pull-right" href="?c=cliente&a=mateus">Mateus</a>
<br><br><br>
<table class="table  table-striped  table-hover" id="tabla">
<thead>
<tr>
<th style="width:180px; background-color: #5DACCD; color:#fff">ID</th>
<th style="width:120px; background-color: #5DACCD; color:#fff">DNI</th>
<th style="width:180px; background-color: #5DACCD; color:#fff">Nombre</th>
    <th style=" background-color: #5DACCD; color:#fff">Apellido</th>
    <th style=" background-color: #5DACCD; color:#fff">Correo</th>
 <th style="width:120px; background-color: #5DACCD;  color:#fff">Telefono</th>            
    <th style="width:60px; background-color: #5DACCD; color:#fff"></th>
    <th style="width:60px; background-color: #5DACCD; color:#fff"></th>
  </tr>
</thead>
<tbody>
<?php foreach($this->model->Listar() as $r): ?>
<tr>
    <td><?php echo $r->id; ?></td>
    <td><?php echo $r->dni; ?></td>
    <td><?php echo $r->Nombre; ?></td>
    <td><?php echo $r->Apellido; ?></td>
    <td><?php echo $r->Correo; ?></td>
    <td><?php echo $r->Telefono; ?></td>
    <td>
    </td>
</tr>
<?php endforeach; ?>
</tbody>
</table> 
<form action="?c=cliente&a=buscame" method="post" >
<input type="text" name="dni" id="dni"/>
<input type="submit" name="boton" id="boton"/>
</form>
<?php 
$this->model->Buscarme($_POST['dni']);
$resultado =  $this->model->resultado;
print_r($resultado);
?> 
</tbody>
</body>
<script  src="assets/js/datatable.js">  
</script>
</html>

При печати данные в модели отображаются в левом верхнем углу страницы, данные должны отображаться только под кнопкой поиска

Источник
Raymond Nijland
7 апреля 2018 в 23:03
1

Первый вопрос: проверяется ли html на w3c -> validator.w3.org .. Непроверенный html может вызвать проблемы с отображением..

Raymond Nijland
7 апреля 2018 в 23:06
0

На первый взгляд, print_r($resultado); (и другой php-код) находится внутри html-элемента <tbody>, где ему не место.. я думаю, что если вы поместите его под тегом </tbody>, ваша проблема с отображением будет решена..

Ответы (1)

avatar
Karlo Kokkak
8 апреля 2018 в 01:18
0

Удалены существующие данные таблицы - from - $this->model->Listar() - to from - $this->model->Buscarme($_POST['dni'])

Исправлен макет таблицы, чтобы страница отображалась правильно, а записи отображались под формой поиска.

Обновлен view/cliente/cliente.php.

Попробуйте это:

<h1 class="page-header">CRUD con el patrón MVC en PHP POO y PDO </h1>
<a class="btn btn-primary pull-right" href="?c=cliente&  =agregar">Agregar</a>
<a class="btn btn-primary pull-right" href="?c=cliente&a=ardila">Ardila</a>
<a class="btn btn-primary pull-right" href="?c=cliente&a=mateus">Mateus</a>
<br><br><br>
<table>
<form action="?c=cliente&a=buscame" method="post" >
<input type="text" name="dni" id="dni"/>
<input type="submit" name="boton" id="boton"/>
</form>
</table>

<table class="table  table-striped  table-hover" id="tabla">
<thead>
<tr>
<th style="width:180px; background-color: #5DACCD; color:#fff">ID</th>
<th style="width:120px; background-color: #5DACCD; color:#fff">DNI</th>
<th style="width:180px; background-color: #5DACCD; color:#fff">Nombre</th>
    <th style=" background-color: #5DACCD; color:#fff">Apellido</th>
    <th style=" background-color: #5DACCD; color:#fff">Correo</th>
 <th style="width:120px; background-color: #5DACCD;  color:#fff">Telefono</th>            
  </tr>
</thead>
<tbody>
<?php 
$this->model->Buscarme($_POST['dni']);
$resultado =  $this->model->resultado;
//print_r($resultado);
?> 
<?php foreach($resultado as $r): ?>
<tr>
    <td><?php echo $r['id']; ?></td>
    <td><?php echo $r['dni']; ?></td>
    <td><?php echo $r['Nombre']; ?></td>
    <td><?php echo $r['Apellido']; ?></td>
    <td><?php echo $r['Correo']; ?></td>
    <td><?php echo $r['Telefono']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table> 

</body>
<script  src="assets/js/datatable.js">  
</script>
</html>

Мы сохраняли возвращаемые данные в переменной функции, а не в переменной класса. Починил это. Также переменная счетчика $i не увеличивалась, она увеличивалась на 1 при каждом повторении.

model/cliente.php

Обновленная функция:

public function Buscarme($dni){
        try {
            $stm = $this->pdo->prepare("SELECT * FROM cliente WHERE dni = :dni");
            $stm->bindParam(':dni', $dni, PDO::PARAM_INT);
            $stm->execute();    
            $res = $stm->fetchAll(PDO::FETCH_ASSOC);
            $this->resultado = array();
            $i = 0;
            foreach($res as $row){
                $this->resultado[$i]['id']       = $row['id'];
                $this->resultado[$i]['dni']      = $row['dni'];
                $this->resultado[$i]['Nombre']   = $row['Nombre'] ;
                $this->resultado[$i]['Apellido'] = $row['Apellido'];
                $this->resultado[$i]['Correo']   = $row['Correo'] ;
                $this->resultado[$i]['Telefono'] = $row['Telefono'] ;
                $i++;
            }
        } catch (Exception $ex) {
            die($e->getMessage());
        }
    }
Ives Rodriguez
8 апреля 2018 в 04:07
0

показывает ошибку в недопустимом аргументе, указанном для foreach() в C:\xampp\htdocs\mvc2\view\cliente\cliente.php в строке 29