Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wellington09

retornar mensagem na tela, em determinado lugar com PDO

Recommended Posts

Um pequeno exemplo para tirar a minha duvida, segue o codigo abaixo

produto.php

<?php
    $valores  = $_POST[produtos'];
    $crud->cadastrar($valores);
?>
<!doctype html>
<html>
    <body>
    </body>
</html>

PDO

//Em meu PDO tem o seguinte comando
$stm->execute();   


if($stm->rowCount() == true):
   echo "<div>cadastrado com sucesso</div>";
endif;

Ao cadastrar um produto ele mostra a mensagem de CADASTRADO COM SUCESSO acima do <!doctype html> na pagina produto.php

 

Para contornar este problema resolveria apenas fazendo um deslocamento do codigo.

 

produto.php

<!doctype html>
<html>
    <body>
       <?php
            $valores = $_POST[produtos'];
            $crud->cadastrar($valores);
       ?>
    </body>
</html>

Porem o que eu gostaria, era deixar o codigo PHP acima do <!doctype html> como estava antes e colocar apenas a mensagem de CADASTRADO COM SUCESSO dentro da tag BODY.

 

Fiz a seguinte mudanca no meu PDO

//Em meu PDO tem o seguinte comando
$stm->execute();   


if($stm->rowCount() == true):
   $mgs =  "<div>cadastrado com sucesso</div>";
endif;

Para que a mensagem CADASTRADO COM SUCESSO apareca dentro da tag BODY, fiz a seguinte mudanca no produto.php

<?php
$valores = $_POST[produtos'];
$crud->cadastrar($valores);
?>
<!doctype html>

<html>
    <body>
        <?php echo $msg; ?>
    </body>
</html>

Alguem ja passou por isso ?

 

OBS:

Nao tem o formulario pois procurei retirar codigos desnecessarios para a duvida citada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é errado inserir variáveis no meio do HTML. Aliás, não há outra saída, se o conteúdo é dinâmico.

O importante é não misturar a lógica com a interface gráfica. E isso você já está fazendo, quando procura manter o PHP antes do <doctype>. O passo seguinte é separar isso em arquivos diferentes, seguindo uma estrutura MVC.

 

Se quiser usar um gerenciador de templates, procure pelo Smarty. Eu mostrei alguns recursos deles neste meu post:

http://rberaldo.com.br/recursos-interessantes-do-smarty/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim... eu compreendo, pois tb prefiro MVC mas sigo um padrão da empresa, não posso fazer do jeito que eu quero rs.

 

Pode acreditar, o codigo esta mais porco do que isso, tentei separar o maximo do html para uma melhor manutencao, mas mudar para um MVC na altura do campeonato é fogo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

if($stm->rowCount() == true):
   echo "<div>cadastrado com sucesso</div>";
endif;

 

Esse trecho com endif; está sendo usado de forma incorreta e sem necessidade.

O endif foi criado para outro proposito, veja.

<div class="endif-example">
    <?php if ($stm->rowCount()): ?>
        <div>cadastrado com sucesso</div>
    <?php endif; ?>
</div>

O uso de end(if|foreach|while) foi criado para que possamos separar corretamente o PHP da linguagem de marcação.

Escrever HTML com PHP pode dar dores de cabeça com atributos e outros

// Não é necessário
if ($stm->rowCount() == true):

// Apenas
if ($stm->rowCount()):

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente fiz besteira Diogo não a necessidade do.

if ($stm->rowCount() == true):

E o comando acima estava no arquivo crud.class.php

 

Mas pelo exemplo que você me passa é que o comando acima deveria estar no produto.php ?

 

O que eu estava tentando fazer era pegar o valor <div>cadastrado com sucesso</div> que estava no crud.class.php e mandar para o produto.php

 

Mas quando você diz separar o PHP do HTML seria isso ?

tirar a DIV do arquivo PDO e deslocar para o produto.php correto ?

 

Mas seria possivel pegar estava div que esta no crud.class.php e mandar para o produto.php ?

 

seguindo seu exemplo, seria algo do tipo:

 

produto.php

<div class="endif-example">
   <?php echo $msg ?>
</div>

crud.class.php

if($stm->rowCount()):
   $msg;
endif;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.