[Livro PHP e MySQL] Dúvidas em geral

php-mysql

#85

Você tem mais de um arquivo de template ou o index? Me parece que você está acessando a aplicação por uma versão diferente da que você está mostrando. Pois colocar essa linha antes do include do template faz com que a variável exista.


#86

O código de separação entre HTML e PHP retorna erro quando carrego o arquivo template.php…

Erro :
Notice: Undefined variable: lista_tarefas in C:\xampp\htdocs\tarefas\template.php on line 48

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\tarefas\template.php on line 48

    <?php

session_start();

if (isset($_GET['nome']) && $_GET['nome'] != '') {
	$tarefa = array();
	
	$tarefa['nome'] = $_GET['nome'];
	
	if (isset($_GET['descricao'])) {
		$tarefa['descricao'] = $_GET['descricao'];
	}else{
		$tarefa['descricao'] = '';
	}
	
	if (isset($_GET['prazo'])) {
		$tarefa['prazo'] = $_GET['prazo'];
	}else{
		$tarefa['prazo'] = '';
	}
	
	$tarefa['prioridade'] = $_GET['prioridade'];
	
	if (isset($_GET['concluida'])) {
		 $tarefa['concluida'] = $_GET['concluida'];
	}else{
		$tarefa['concluida'] = '';
	}
	
	$_SESSION['lista_tarefas'][] = $tarefa;

}

if (isset($_SESSION['lista_tarefas'])) {
	$lista_tarefas = $_SESSION['lista_tarefas'];
}else{
	$lista_tarefas = array();
}

include "template.php";

?>

#87

Então, no diretório tenho a seguinte estrutura.

/casa_codigo/php_mysql/cap06

No diretório só tenho os arquivos template.php e tarefas.php

Ainda no diretório tenho a subpasta CSS/ que contem o arquivo com o código CSS


#88

Ok, vamos fazer assim:

Crie um arquivo chamado teste_tarefas.php e um teste_template.php. O conteúdo de teste_tarefas.php deve ser o seguinte:

<?php
$lista_tarefas = array("a", "b", "c");
include "teste_template.php";

Já em teste_template.php:

<html>
    <?php foreach ($lista_tarefas as $tarefa): ?>
        <h2><?php echo $tarefa; ?>
    <? endforeach; ?>
</html>

Me passa o resultado depois.


#89

Acontece o mesmo erro

Notice: Undefined variable: lista_tarefas in c:\xampp\htdocs\casa_codigo\php_mysql\cap06\teste_template.php on line 3

Warning: Invalid argument supplied for foreach() in: c:\xampp\htdocs\casa_codigo\php_mysql\cap06\teste_template.php

Acho que vou testar em um ambiente diferente para ver o que acontece.


#90

Oi, Ricardo.

Como você está chamando o script na URL? Chamando template.php ou
tarefas.php?

Evaldo Junior
http://evaldojunior.com
@InFog9 https://twitter.com/InFog9


#91

Então, estou chamando o teste_template.php
localhost/estudo_php/casa_codigo/cap06/teste_template.php

E também tentei direto na raiz do webserver
localhost/teste_template.php

Esse teste eu realizei no novo ambiente, neste caso com o Linux e PHP 5.6


#92

Entendi!

Você precisa chamar o arquivo “tarefas.php” ou o “teste_tarefas.php” no caso deste último teste, não o template :slight_smile:
O tarefas vai fazer a inclusão do arquivo de template.

Abraços


#93

Wowww, funcionou @evaldojuniorbento, achei que deveria chamar o arquivo com HTML, já que geralmente é isso que fazemos, ao invés do código PHP.

Agora vou continuar a leitura do livro.

Muito obrigado!!!