Ir para conteúdo

POWERED BY:

Arquivado

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

RodrigoxSant

Tabela PHP+HTML+SQL

Recommended Posts

Bom dia masters,

Seguinte, criei um sistema simples de chamados, onde o usuário preenche o nome, departamento, ramal e a ocorrencia, ao enviar será exibido alguma mensagem de "ok".

Até então tudo funcionando, todos chamados são cadastrados na tabela do mysql, o problema é que na página onde são exibidos esses chamados, (em uma tabela html), ela substitui todas as linhas e colunas pelo mesmo chamado, ao invés de manter o ultimo e adicionar o novo, ele substitui todos os valores..

 

Eu preciso de uma tabela com 4 colunas e 10 linhas, ela será ordenada pelos mais recentes.. Segue o código da página de exibição:

<?php
$host="localhost";
$user="root";
$pass="";
$banco="chamado";
$conexao=mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die (mysql_error());
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>Envio</title>
<body>
<br>
<br>

<?php 
$nome=$_POST['nome'];
$ramal=$_POST['ramal'];
$menu=$_POST['menu'];
$ocorrencia=$_POST['ocorrencia'];
$sql=mysql_query("INSERT INTO chamado (nome, ramal, menu, ocorrencia)
VALUES('$nome' , '$ramal' , '$menu' , '$ocorrencia')");
?>

<center>
<img src="img/logo.png" width="298" height="113">
<br><br><br>
</head>
<img src="img/area.png" width="971" height="46">
<table width="968" border="1px" cellpadding="5px" cellspacing="0">
<?php
echo '
	    <tr> 
		<td width="162"> '.$nome.'</td>
		<td width="261"> '.$menu.'</td>
		<td width="507"> '.$ocorrencia.'</td>
	</tr>
</table>';
?>
</center>
</body>
</html>

No código ela está apenas com uma linha e 3 colunas, queria fazer de forma automatica que fosse adicionando a cada novo chamado, e que exibisse apenas 10 por página.

 

Estou pesquisando a um bom tempo e tá dificil encontrar o que quero..

Agradeço desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc sempre está listando o chamado q está vindo do POST.

 

Para listar os outros, vc precisa fazer um SELECT na tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda de todos, porém ainda não cheguei no resultado esperado...

Consegui fazer com que ele apareça todos os dados da db, porém nao consegui coloca-los dentro da tabela...

 

Código:

$select = mysql_query('SELECT * FROM tb_chamado');

while($linha = mysql_fetch_array($select))
{

echo $linha['nome'].'<br />';
echo $linha['menu'].'<br />';
echo $linha['ocorrencia'].'<br /><br />';

}

Tentei adaptá-lo a tabela da seguinte forma:

$select = mysql_query("SELECT * FROM tb_chamado VALUE ('$nome', '$menu', '$ocorrencia')");
while($linha = mysql_fetch_array($select))
{
echo ' 
<tr> 
<td width="162"> '.$linha['nome'].'</td>
<td width="261"> '.$linha['menu'].'</td>
<td width="507"> '.$linha['ocorrencia'].'</td>
</tr>
</table>';
}

Porém sem sucesso, alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$select = mysql_query("SELECT * FROM tb_chamado ORDER BY id DESC LIMIT 10");

while($linha = mysql_fetch_assoc($select))

{

echo '

<tr>

<td width="162"> '.$linha['nome'].'</td>

<td width="261"> '.$linha['menu'].'</td>

<td width="507"> '.$linha['ocorrencia'].'</td>

</tr>';

}

echo '</table>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, agora surgiu a seguinte questão:

 

Toda vez que atualizo a página onde é exibido os chamados (envio.php), ela adiciona um novo chamado igual ao mais recente, é como um reenvio do formulário.

 

Como faço para atualizar sem reenviar?

 

Acredito que seja por aqui:

mysql_query("INSERT INTO tb (nome, ramal, menu, ocorrencia, date) VALUE ('$nome' , '$ramal' , '$menu' , '$ocorrencia', '$date')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

$atualizar = mysql_query("UPDATE tabela SET campo = '$valor' WHERE id = '$numero_id')";

 

 

Isso mesmo que tentei, mas como é um sistema de chamados, sempre será adicionado novos, nisso os id's irão mudar, como posso fazer pra ele pegar automatico o novo id?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda sim continua adicionando novos chamados a cada vez que atualiza a página

$nome=$_POST['nome'];
$ramal=$_POST['ramal'];
$menu=$_POST['menu'];
$ocorrencia=$_POST['ocorrencia'];
$date=date('h:i A');
$numero_id=mysql_insert_id();

mysql_query("INSERT INTO tb (nome, ramal, menu, ocorrencia, date) VALUE ('$nome' , '$ramal' , '$menu' , '$ocorrencia', '$date')");

$atualizar = mysql_query("INSERT INTO tb (nome, ramal, menu, ocorrencia, date) UPDATE tb SET nome = '$nome', ramal = '$ramal', menu = '$menu', ocorrencia = '$ocorrencia', date = '$date' WHERE id = '$numero_id'");

Compartilhar este post


Link para o post
Compartilhar em outros sites
$ultimo_id = mysql_insert_id();
$atualiza = mysql_query("UPDATE tb SET nome = '$nome', ramal = '$ramal', menu = '$menu', ocorrencia = '$ocorrencia', date = '$date' WHERE id = '$ultimo_id'");

Até agora não entendi, porque atualizar uma informação que foi inserida!

Compartilhar este post


Link para o post
Compartilhar em outros sites
$ultimo_id = mysql_insert_id();
$atualiza = mysql_query("UPDATE tb SET nome = '$nome', ramal = '$ramal', menu = '$menu', ocorrencia = '$ocorrencia', date = '$date' WHERE id = '$ultimo_id'");

Até agora não entendi, porque atualizar uma informação que foi inserida!

 

 

Não é atualizar a informação, e sim a página onde ela é exibida, sem que adicione um novo chamado após atualizar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi do código toda vez que você atualiza a um novo insert.

 

Então você tem que validar se foi feito um post para essa página.

 

Dai esse código só vai ser executa se for enviado um post para essa página

 

Já para atualizar você tem que enviar um id por post por exemplo. Dai você da um update usando where id igual id

if($_POST) {
$nome=$_POST['nome'];
$ramal=$_POST['ramal'];
$menu=$_POST['menu'];
$ocorrencia=$_POST['ocorrencia'];
$date=date('h:i A');

if(empty($_POST['id'])) {
  mysql_query("INSERT INTO tb (nome, ramal, menu, ocorrencia, date) VALUE ('$nome' , '$ramal' , '$menu' , '$ocorrencia', '$date')");
 } else {
  mysql_query("UPDATE tb SET nome = '$nome', ramal = '$ramal', menu = '$menu', ocorrencia = '$ocorrencia', date = '$date' WHERE id = '".$_POST['id']."'");
 }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Pelo que entendi do código toda vez que você atualiza a um novo insert.

 

Então você tem que validar se foi feito um post para essa página.

 

Dai esse código só vai ser executa se for enviado um post para essa página

 

Já para atualizar você tem que enviar um id por post por exemplo. Dai você da um update usando where id igual id

if($_POST) {
$nome=$_POST['nome'];
$ramal=$_POST['ramal'];
$menu=$_POST['menu'];
$ocorrencia=$_POST['ocorrencia'];
$date=date('h:i A');

if(empty($_POST['id'])) {
  mysql_query("INSERT INTO tb (nome, ramal, menu, ocorrencia, date) VALUE ('$nome' , '$ramal' , '$menu' , '$ocorrencia', '$date')");
 } else {
  mysql_query("UPDATE tb SET nome = '$nome', ramal = '$ramal', menu = '$menu', ocorrencia = '$ocorrencia', date = '$date' WHERE id = '".$_POST['id']."'");
 }
}

 

 

É isso mesmo, acho que ficou confuso e não tem nada a ver com o atualiza, a questão é o reenvio de formulario como padrão do navegador, como ele recebeu um form, ao atualizar ele vai reenvia-lo e vai mandar para o painel da mesma forma..

 

Eu queria algo do tipo que ao enviar o formulario (pagina chamado.php) ele dá o alert de sucesso e voltasse para a mesma pagina (chamado.php)

 

Isso eu consegui fazer, ele envia o formulario pro bd certinho e volta para pagina chamado.php após o alert.

Porém eu nao consigo visualizar a pagina do painel (painel.php) desta forma...

Se eu tento entrar pelo endereço direto da painel.php, ele manda de volta pra pagina chamado.php..

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.