Olá!
Este é o tópico principal para o livro de PHP e MySQL da Casa do Código. Mande suas dúvidas
Olá!
Este é o tópico principal para o livro de PHP e MySQL da Casa do Código. Mande suas dúvidas
Estamos juntos (Clape)
é isso ai …
Estamos juntos nesse novo Forum
Implementei o seguinte código para remover anexos. Queria saber se é a melhor forma de fazer.
<?php include "banco.php"; $anexo = buscar_anexo($conexao, $_GET['id']); unlink("anexos/" . $anexo['arquivo']); remover_anexo($conexao, $anexo['id']); header('Location: contato.php?id=' . $anexo['contato_id']);
É uma boa forma sim, @allexandrejr. Talvez seja bom verificar se o arquivo existe antes de usar a função unlink()
Assim?
<?php include "banco.php"; $anexo = buscar_anexo($conexao, $_GET['id']); if (file_exists("anexos/" . $anexo['arquivo'])) { unlink("anexos/" . $anexo['arquivo']); } remover_anexo($conexao, $anexo['id']); header('Location: contato.php?id=' . $anexo['contato_id']);
Isso! Talvez a is_file() seja mais indicada, pois verifica se o arquivo é mesmo um arquivo, enquanto a file_exists() também retorna verdadeiro caso um diretório com o mesmo nome exista.
esta dando erro no foreach
este código encontra se na pagina 49 no livro Desenvolvimento web com PHP e MySQL.
identar texto pre-formatado em 4 espaços
Tarefa | Descricao | Prazo | Prioridade | Concluída |
---|---|---|---|---|
<?php echo $tarefa['nome']; ?> | <?php echo $tarefa['descricao']; ?> | <?php echo $tarefa['prazo']; ?> | <?php echo $tarefa['prioridade']; ?> | <?php echo $tarefa['concluida']; ?> |
Estou com o mesmo erro do Lucas Henrique. O código de separação entre HTML e PHP retorna erro quando carrego o arquivo template.php. Obs: no arquivo tarefas.php eu coloquei o include de template.php.
Erro :
Notice: Undefined variable: lista_tarefas in C:\xampp\htdocs\Cap5\template.php on line 52
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Cap5\template.php on line 52
Gerenciador de Tarefas <table>
<tr>
<th>Tarefa</th>
<th>Descricao</th>
<th>Prazo</th>
<th>Prioridade</th>
<th>Concluída</th>
</tr>
<?php foreach ($lista_tarefas as $tarefa) : ?>
<tr>
<td>
<?php echo $tarefa['nome']; ?>
</td>
<td>
<?php echo $tarefa['descricao']; ?>
</td>
<td>
<?php echo $tarefa['prazo']; ?>
</td>
<td>
<?php echo $tarefa['prioridade']; ?>
</td>
<td>
<?php echo $tarefa['concluida']; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
Olá, @fabiomrjr.
Parece que a variável não foi definida. Como está o seu arquivo tarefas.php?
Evaldo, foi isso mesmo. Analisando melhor o código percebi que estava faltando a seguinte parte no arquivo tarefas.php :
$lista_tarefas = array();
if (isset($_SESSION[‘lista_tarefas’])) {
$lista_tarefas = $_SESSION[‘lista_tarefas’];
}
Att,
não sei pq mais quando cadastro uma tarefa ela não é exibida.
arquivo tarefa:
<?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"; ?>arquivo template
<meta charset="utf-8" />
<title>Gerenciador de Tarefas</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<h1>Gerenciador de Tarefas</h1>
<form>
<fieldset>
<legend>Nova tarefa</legend>
<label>
Tarefa:
<input type="text" name="nome" />
</label>
<label>
Descrição (Opcional):
<textarea name="descricao"></textarea>
</label>
<label>
Prazo (Opcional):
<input type="text" name="prazo" />
</label>
<fieldset>
<legend>Prioridade:</legend>
<label>
<input type="radio" name="prioridade" value="baixa" checked /> Baixa
<input type="radio" name="prioridade" value="media" /> Média
<input type="radio" name="prioridade" value="alta" /> Alta
</label>
</fieldset>
<label>
Tarefa concluída:
<input type="checkbox" name="concluida" value="sim" />
</label>
<input type="submit" value="Cadastrar" />
</fieldset>
</form>
<table>
<tr>
<th>Tarefa</th>
<th>Descricao</th>
<th>Prazo</th>
<th>Prioridade</th>
<th>Concluída</th>
</tr>
<?php foreach ($lista_tarefas as $tarefa) : ?>
<tr>
<td><?php echo $tarefa['nome']; ?></td>
<td><?php echo $tarefa['descricao']; ?></td>
<td><?php echo $tarefa['prazo']; ?></td>
<td><?php echo $tarefa['prioridade']; ?></td>
<td><?php echo $tarefa['concluida']; ?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
estou iniciando no php então sou meio leigo ainda, se alguém puder me dizer onde estou errando gradeço.
Algum erro aparece? Ou apenas a falta da lista?
Não recebo nem um erro, quando preencho os campos e clico em cadastra não aparece nada.
Percebi que algumas chamadas ao $_GET e $_SESSION estão sem os underlines, estão apenas como $GET e $SESSION.
Tenta mudar isso e cadastrar a tarefa novamente.
Boa tarde Evaldo.
Estou encontrando um erro no momento de cadastrar as tarefas no formulário e exibi-las na tabela. Aparece o seguinto no navegador, abaixo do formulário:
Notice: Array to string conversion in /opt/lampp/htdocs/PHP/tarefas.php on line 61
Array
O código está da seguinte forma:
<!-- Formulário de entrada de dados -->
<form>
<fieldset>
<legend>Nova tarefa</legend>
<label>
Tarefa: <input type="text" name="nome" />
</label>
<input type="submit" value="Cadastar"/>
</fieldset>
</form>
<!-- Captura as entradas do formulário e as insere em um array, para guarda de múltiplos registros -->
<?php
if(isset ($_GET['nome']))
$_SESSION['lista_tarefas'][] = $_GET['nome'];
$lista_tarefas = array();
if(isset($_SESSION['lista_tarefas'])){
$lista_tarefas[] = $_SESSION['lista_tarefas'];
}
?>
<!-- Tabela de saída dos registros -->
<table>
<tr>
<th>Tarefas</th>
</tr>
<!-- Lista todos os registros contidos no array -->
<?php foreach ($lista_tarefas as $tarefa) : ?>
<tr>
<td><?php echo $tarefa; ?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
A linha 61 é a que cria as linhas da tabela por meio da instrução echo $tarefa.
Agradeço a ajuda!
Na hora de criar o array com as tarefas faça sem os colchetes:
$lista_tarefas = $_SESSION[‘lista_tarefas’];
Usando os colchetes você terá arrays no lugar de strings na hora de fazer o foreach
Boa tarde, estou tendo os seguintes erros. Igual dois colegas aí em cima. Mas não consegui resolver…
Undefined variable: lista_tarefas in C:\wamp\www\DesenvolvimentoWebComPHPeMySQL\capitulo5\template.php on line 63
Warning: Invalid argument supplied for foreach() in C:\wamp\www\DesenvolvimentoWebComPHPeMySQL\capitulo5\template.php on line 63
Meus arquivos seguem:
-------> tarefas.php
<?php
session_start();
if(isset($_GET['nome']) && $_GET['nome'] != ''){//se tenho um valor(qualquer que seja) no get entro no if.
$tarefa = array();//cria um array chamado tarefa.
$tarefa['nome'] = $_GET['nome'];//tarefa recebe o nome pego pelo get.
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;
}
include "template.php";//incluo em meu programa outra página php.
?>
------> template.php
<head>
<meta charset="utf-8" />
<title>Gerenciador de Tarefas</title>
<link rel="stylesheet" href="tarefas.css" type="text/css" />
</head>
<body>
<h1>Gerenciador de Tarefas</h1>
<form><!-- Aqui eu abro a tag do formulário. -->
<!-- Quando não defino o action, parece que manda para a mesma página. -->
<fieldset><!-- Crio um fieldset. Como se fosse uma moldura. -->
<legend>Nova Tarefa</legend><!-- legenda do meu fieldset. Aparecerá na parte superior do field. -->
<label>
Tarefa:
<input type="text" name="nome" />
</label>
<label>
Descrição(Opcional):
<textarea name="descricao"></textarea>
</label>
<label>
Prazo(Opcional):
<input type="text" name="prazo" />
</label>
<fieldset>
<legend>Prioridade</legend><!-- legenda do meu fieldset. Aparecerá na parte superior do field. -->
<label>
<input type="radio" name="prioridade" value="baixa" checked /> Baixa
<input type="radio" name="prioridade" value="media" /> Média
<input type="radio" name="prioridade" value="alta" /> Alta
</label>
</fieldset>
<label>
Tarefa Concluída:
<input type="checkbox" name="concluida" value="sim" />
</label>
<input type="submit" value="Cadastrar" />
</fieldset>
</form>
<table><!-- Início da tabela. -->
<tr>
<th>Tarefas</th><!-- Aqui é criada uma linha para conter o título dos dasdos que aparecerão na linha logo abaixo na tabela. -->
<th>Descrição</th>
<th>Prazo</th>
<th>Prioridade</th>
<th>Concluída</th>
</tr>
<?php foreach ($lista_tarefas as $tarefa) : ?><!-- Uso um foreach para poder pegar todos os dados existentes dentro da minha variável $lista_tarefas. -->
<tr>
<td><?php echo $tarefa['nome']; ?></td>
<td><?php echo $tarefa['descricao']; ?></td>
<td><?php echo $tarefa['prazo']; ?></td>
<td><?php echo $tarefa['prioridade']; ?></td>
<td><?php echo $tarefa['concluida']; ?></td>
</tr>
<?php endforeach; ?><!-- Para facilitar a visualização. Dessa maneira consigo enxergar melhor onde abro e onde fehco meu foreach. -->
</table>
</body>
Olá, @Thiago2
Parece que faltou iniciar a variável $lista_tarefas, antes de incluir o template:
if (isset($SESSION[‘listatarefas’])) {
$lista_tarefas = $SESSION[‘listatarefas’];
} else {
$lista_tarefas = array();
}
Meu amigo @fabiomrjr, você informou esse código em qual parte?