[Livro PHP e MySQL] Dúvidas em geral

php-mysql

#43

Olá, @yellowskt.

Qual é o problema que acontece? Algum erro específico?


#44

Boa noite Evaldo!

Estou com um problema que não consigo resolver de jeito nenhum. Ocorreram alguns erros durante a escrita do código, mas a medida que avançava no livro os mesmos eram resolvidos. Por isso não me preocupei quando parou de atualizar na tela a lista de tarefas que fui cadastrando no sistema. Porém, diferente do que ocorreu antes, mesmo com as várias alterações de código que o livro apresentou, não consegui eliminar este erro em msqli_fetch_assoc(). Escrevi o código da mesma forma que está no livro, mas este erro persiste.

O erro está numa linha do arquivo banco.php:

while ($tarefa = mysqli_fetch_assoc($resultado)) {

Além de não aparecer as tarefas que havia cadastrado pelo formulário (já antes de chegar na parte de buscar no banco), também estão repetindo (acima do formulário) os campos “tarefa”, “descrição” e “prazo”.

Sabe dizer se esse erro pode ter alguma relação com o banco de dados? Antes eu estava escrevendo o código e como não conseguia concluir tudo no mesmo dia, apenas salva-va o arquivo e recomeçava a partir dali. Só que meu MySQL conectou inicialmente de forma automática e quando eu voltava pra recomeçar o código, apresentava erro de conexão com o banco. Então fiz o código ignorando a existência de usuário para fazer login no banco.

Fiz um SELECT * FROM tarefas; e retornou apenas o resultado dos INSERTS que fiz no banco no capítulo 6.

Vi que você também falou em usar o CSS dos exemplos, mas não consegui descobrir onde está este código e por isso meu formulário ficou desse jeito. Porém este é um problema menor, que não me afeta neste momento visto que meu objetivo é aprender a fazer um sistema completo, como este do livro.

Enfim, é isso. Estou entendendo os códigos e a lógica utilizada neste excelente livro, mas esse erro travou meu projeto na metade e não estou conseguindo visualizar as alterações no sistema, a cada alteração no código.

Se conseguir me ajudar, ficarei muito grato! Parabéns pelo trabalho!


#45

Olá. @marlon_allan81!

Tente ativar os erros do PHP para entender melhor o que está acontecendo.
Me parece um problema de conexão, ou mesmo um problema no código SQL sendo executado antes de usar a função mysqli_fetch_assoc(). Você tentou executar este mesmo SQL diretamente no PHPMyAdmin, por exemplo?

Quanto ao CSS, você pode pegar o arquivo aqui: https://gist.github.com/InFog/6860949


#46

Obrigado pelo retorno Evaldo!

Também está me parecendo problema de conexão, pois alterei o código para o usuário sistematerefa e deu erro de conexão.

Vou efetuar os testes que você sugeriu para ver se consigo resolver. Estou pensando até em instalar o MySQL e usar a aplicação desktop.

Obrigado pelo retorno!


#47

Olá, estou fazendo os exercícios do livro mas estou com problema no capítulo 8. Não consigo fazer a minha conexão com o banco de dados.

Não estou usando o XAMPP pois já tinha o EasyPHP instalado. Apesar de várias tentativas o erro permanece.

Warning: mysqli_connect(): (HY000/1045): Access denied for user ‘sistematarefas’@‘localhost’ (using password: YES) in C:\Users\Edvardo\Documents\SMD\Desenvolvimento WEB\tarefas\banco.php on line 7
Problemas para se conectar no Banco de Dados.
Erro: Access denied for user ‘sistematarefas’@‘localhost’ (using password: YES)

<?php $bdServidor="127.0.0.1"; $bdUsuario="sistematarefas"; $bdSenha="sistema"; $bdBanco="tarefas"; $conexao=mysqli_connect($bdServidor, $bdUsuario, $bdSenha, $bdBanco); if (mysqli_connect_errno($conexao)) { echo "Problemas para se conectar no Banco de Dados.
"; echo "Erro: "; echo mysqli_connect_error(); die(); } ?>

#48

Olá, @EdvardoGuerra.

O problema está na conexão com o MySQL mesmo. Verifique se existe algum bloqueio no firewall do sistema. Verifique também se o MySQL está configurado para ouvir na porta correta no IP local (127.0.0.1).


#49

ola, comecei a estudar php agora e estou tendo o mesmo problema, já tentei varias formas,
código tarefas

<?php session_start(); if (array_key_exists('nome', $_GET) && $_GET["nome"] != ''){ $tarefa = (''); $tarefa['nome'] = $_GET['nome']; if (array_key_exists('descricao', $_GET)) { $tarefa['descricao'] = $_GET['descricao']; } else { $tarefa['descricao'] = ''; } if (array_key_exists('prazo', $_GET)) { $tarefa['prazo'] = $_GET['prazo']; } else { $tarefa['prazo'] = ''; } $tarefa['prioridade'] = $_GET['prioridade']; if (array_key_exists('concluido', $_GET)) { $tarefa['concluido'] = $_GET['concluido']; } else { $tarefa['concluido'] = ''; } $_SESSION['lista_tarefas'][] = $tarefa; if (isset($SESSION['listatarefas'])) $lista_tarefas = $SESSION['listatarefas']; else { $lista_tarefas = array(); } } include "template.php"; ?>

#50

Olá, @felipe.nogueira.

Você ativou os erros no PHP? O que exatamente está acontecendo? Qual é a mensagem de erro que você está encontrando?

No seu código eu achei essa linha com uma instrução inválida: $tarefa = (’’);

Tente mudar para: $tarefa = [];

Abraços


#51

E aí, galera!

Uma dica para quem tem e/ou está lendo o livro e quer usar o Bash no Windows 10 para estudar:

Os scripts PHP devem ser salvos no diretório /var/www/html


#52

ola, não estou conseguindo resolver um probleminha aqui, estou na parte da edição, esta dando esse erro quando tento alterar o cadastro.

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, object given in C:\wamp64\www\teste renzi\banco.php on line 50

segue os códigos
------- EDITAR-----------------------

<?php session_start(); require "banco.php"; $exibir_tabela = false; // isset placa if (isset($_GET['placa']) && $_GET['placa'] != '') { $placa = array(); $placa['id'] = $_GET['id']; $placa['placa'] = $_GET['placa']; // isset veiculos if (isset($_GET['veiculo'])) { $placa['veiculo'] = $_GET['veiculo']; } else { $placa['veiculo'] = ''; } // isset entrada if (isset($_GET['entrada'])) { $placa['entrada'] = $_GET['entrada']; } else { $placa['entrada'] = ''; } // isset prioridade $placa['prioridade'] = $_GET['prioridade']; // isset concluido if (array_key_exists('concluido', $_GET)) { $placa['concluido'] = 1; } else { $placa['concluido'] = 0; } // funçao para concluido function traduz_concluido($concluido) { if ($concluido == 1) { return 'SIM'; } return 'Nâo'; } editar_placa($conexao, $placa); header('Location: res_placadb.php'); die(); } $placa = editarbuscar_placa($conexao, $_GET['id']); require "placa_template.php" ; ?>

--------- BANCO-----------------------

// funçao para busca editar no banco.

	function editarbuscar_placa($conexao, $id){
		$sqlBusca = 'SELECT * FROM original WHERE id = ' . $id;
		$resultado = mysqli_query($conexao, $sqlBusca);
		return mysql_fetch_assoc($resultado);
	}

// funçao para editar no banco.

	function editar_placa($conexao, $placa){
		$sqlEditar = "
			UPDATE original SET
			
			placa = '{$placa['placa']}',
			veiculo = '{$placa['veiculo']}',
			 entrada = '{$placa['entrada']}',
			 prioridade = '{$placa['prioridade']}',
			 concluido = {$placa['concluido']}
			 WHERE id = {$placa['id']}
		";
		
		mysqli_query($conexao, $sqlEditar);
		}		

?>


#53

Olá, @felipe.nogueira!

Me parece que basta você substituir a chamada de mysql_fetch_assoc() por mysqli_fetch_assoc().

Abraços


#54

valeu, era isso mesmo, desatenção, estou com uma outra duvida, depois que
cadastro, se eu apertar F5 ele inclui o ultimo cadastro, se apertar 10 x
ele cadastra as 10x mesmo não contendo nada no formulario


#55

Bom dia, estou fazendo uns testes para aprender e fixar bem , estou relendo
o livro e fui fazer esse teste simples,

travei nesse erro

Warning: Illegal string offset ‘placa’ in
C:\wamp64\www\teste2\form_frota.php on line 41


#56

Evaldo, desculpa tirar tantas duvidas, mas estou acompanhando o livro e
você estava usando o array_key_exists mas no arquivo disponivel no forum
esta com isset, qual a diferença


#57

Olá, @felipe.nogueira. Mais para frente no livro tem a solução para esse problema :slight_smile:


#58

Olá, @felipe.nogueira. Sem ver o código eu não sei dizer o que está errado, mas me parece um problema com um array.


#59

O array_key_exists() verifica se um índice em um array existe ou não enquanto isset serve para verificar se uma variável existe ou mesmo um índice em um array.


#60

BOA TARDE, ESTOU TENTANDO DESVENDAR ALGUNS ERROS COM OS TESTES QUE ESTOU
FAZENDO, MAS APARECE ERROS DIFERENTES, E UMA COISA QUE SEMPRE APARECE É O
ERRO NO FOREACH,

Undefined variable: lista_frotas in
C:\wamp64\www\teste_cad_db\frota_tabela.php on line

16

*Warning: Invalid argument supplied for foreach() in
C:\wamp64\www\teste_cad_db\frota_tabela.php on line
16--------------------------------------------------------------------------------------------------------------------------------------------------------------------


<?php foreach ($lista_frotas as $frota) : ?> <?php endforeach; ?> *

*------------------------------- TAREFA--------------------------<?php
session_start(); // require o banco de dados require “banco.php”;
// exibir tabela $exibir_tabela = true; // array verifica se
o indice ‘nome’ existe no array GET e mostra no echo // placa if
(array_key_exists(‘placa’, $_GET) && $_GET[‘placa’] != ‘’) { $frota
= array(); $frota[‘placa’] = $_GET[‘placa’]; //
RENAVAN if (isset($_GET[‘renavan’])) { $frota[‘renavan’] =
$_GET[‘renavan’]; } else { $frota[‘renavan’] = ‘’; } //
conexão gravar no banco gravar_frotas($conexao, $frota);
header(‘Location: tarefa_frota.php’); die(); }//funçao para buscar
no banco $lista_frota = buscar_frotas($conexao);$frota = array(
‘id’ =>0, ‘placa’ =>’’, ‘renavan’ =>’’ ); include
"template_frota.php"; ?> *

*___________________________EDITAR------------------------------------------<?php
session_start(); // require o banco de dados require
"banco.php"; // exibir tabela $exibir_tabela = false; //
array verifica se o indice ‘nome’ existe no array GET e mostra no echo
// placa if (array_key_exists(‘placa’, $_GET) && $_GET[‘placa’] != ‘’)
{ $frota = array(); $frota[‘id’] = $_GET[‘id’];
$frota[‘placa’] = $_GET[‘placa’]; // RENAVAN if
(isset($_GET[‘renavan’])) { $frota[‘renavan’] = $_GET[‘renavan’];
} else { $frota[‘renavan’] = ‘’; } // conexão editar no
banco editar_frotas($conexao, $frota); header(‘Location:
tarefa_frota.php’); die(); }//funçao para buscar no banco para
editar pelo id $lista_frota = buscar_frota($conexao, $_GET[‘id’]);
include “template_frota.php”; ?> *

Cod Placa Renavan Opções
<?php echo $frota['id']; ?> <?php echo $frota['placa']; ?> <?php echo $frota['renavan']; ?> Editar

#61

Olá Evaldo
Também tive o mesmo problema, com mensagem idêntica. Desabilitei firewall, antivírus e nada. IP local está correto. Testei em dois micros diferentes, um com XAMPP v.1.8.2 (WinXP) e outro com XAMPP v.7.0.13 (Win7) e o erro foi o mesmo.
Pra poder dar andamento no livro, no arquivo banco.php, alterei $bdUsuario = ‘root’ e $bdSenha = ’ '.
Daí funciona, mas gostaria de saber como resolver isso para uma aplicação real.


#62

Olá, @felipe.nogueira.

Ao que tudo indica a variável $lista_frotas não existe no momento em que o foreach é chamado.
Confira novamente seu código e veja onde essa variável deve ser definida.

Abraços.