• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ark15

Erro em update no mysql atraves de php

8 mensagens neste tópico

Olá a todos.

Estou a iniciar os meus estudos em php juntamente com Mysql, e para a escola tive de fazer um trabalho que tinha de inserir dados na base  dados através de um  formulário o que já fiz sem problema algum, e o trabalho também pedia para fazer update a base dados através de um formulário, mas estou com bastantes dificuldades e duvidas, já fiz varias pesquisas no google e consegui entender o funcionamento do update no php, mas mesmo assim não consegui fazer com que os dados sejam actualizados.

o código que estou a utilizar é o seguinte :

<html>
<head>
</head>
<body>

<?php
include("ligacao.php");
$nome = $_POST['nome'];
$autor = $_POST['autor'];
$editora = $_POST['editora'];
$ano = $_POST['ano'];
$preco = $_POST['preco'];
$id = $_GET["id"];
mysql_query("SELECT * FROM livros ORDER BY id'");


if($_GET['act']=="gravar")
{


include("ligacao.php");
	//consulta sql - update UPDATE top_10 SET artista='$artista[$i]', WHERE id='.$i.'"
mysql_query  ("UPDATE livros SET  nome='".$nome."', autor= '".$autor."' ,editora='".$editora."' , ano='".$ano."',preco='".$preco."' WHERE id= '".$id."'")or die(mysql_error());;
mysql_query($resultado);
echo "<center>Dados actualizados</center>";

} 
else	
{

}

?>

<form id="insere" name="insere" method="post" action="?act=gravar" >
<table width="446" id="id">
  <tr>
    <th width="182" scope="row">ID</th>
    <td width="252"><input name="id" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>
  <tr>
    <th width="182" scope="row">Nome do livro</th>
    <td width="252"><input name="nome" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>
<tr>
    <th width="182" scope="row">Autor</th>
    <td width="252"><input name="autor" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>

  <tr>
    <th width="182" scope="row">Editora</th>
    <td width="252">
    <input name="editora" type="text" class="butao" size="25" maxlength="20" />
      	
  </tr>
<!-- <tr>
    <th width="182" scope="row">ISBN</th>
    <td width="252"><input name="isbn" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>-->

  <tr>
    <th width="182" scope="row">Ano</th>
    <td width="252"><input name="ano" type="text" class="butao"  size="25" maxlength="20" />
    </td>
  </tr>
  <tr>
    <th scope="row">preço</th>
    
    <td>  
    <input type="text" name="preco" onKeyPress="return onlyNumbers();"  size="25" maxlength="20" /></td>
    </tr>
  <tr>
  

    <th scope="row"> </th>
    <td>
    	<input type="submit" name="Submit" value="ok" />
        
    	<input type="reset" name="limpar" value="Limpar">
    </td>
  </tr>
</table>
</form>


</body>
</html>

       

Alguém me pode explicar aonde é que estou a errar ?! para poder perceber o que estou a fazer de errado.

Obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz só:

mysql_query("UPDATE livros SET nome='$nome', autor= '$autor' ,editora='$editora' , ano='$ano',preco='$preco' WHERE id=$id");

Não precisas de fechar as plicas, para concatenar com o valor da var.. Quando são inteiros nem precisas de plicas.

Quando o query é feito, ele processa as variáveis como se fossem os valores que elas detêm em si.

Já agora, o que é esse mysql_query($resultado) ?

E não precisas de inserir o ligacao.php de novo no if, porque já o incluiste acima.

Cumps. =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem, já fiquei a perceber que não preciso das  plicas para concatenar valores de variáveis.

e quanto ao  mysql_query($resultado) , foi uma expreencia que estava a tentar fazer mas que depois desiste e ficou essa linha por apagar.

o código está substituído mas continua sem funcionar :/ não estou a entender o que seija , já corri o código todo e não encontro o problema  :wallbash:

obrigado pela a atenção  The Loser :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, o único problema que vejo agora, é que no fim do query tens 2 ;; quando é só 1 ;.

No entanto duvido que seja este o problema.. Podes actualizar o código do primeiro post para o actual, ou postá-lo abaixo? (Não te esqueças de usar o GeSHi)

Tens aí alguns queries que não são necessários, e que me confundem um bocado na leitura do código. :confused:"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda sou iniciante em php e ainda tenho algumas dificuldades, já tirei o ; e não dá na mesma, foi a base de dados diz um update" manual" e deu , agora não consigo é por a fazer update por PHP.

<html>
<head>
</head>
<body>

<?php
include("ligacao.php");

$nome = $_POST['nome'];
$autor = $_POST['autor'];
$editora = $_POST['editora'];
$ano = $_POST['ano'];
$preco = $_POST['preco'];
$id = $_GET["id"];
mysql_query("SELECT * FROM livros ORDER BY id'");


if($_GET['act']=="gravar")
{

	mysql_query("UPDATE livros SET nome='$nome', autor= '$autor' ,editora='$editora' , ano='$ano',preco='$preco' WHERE id=$id");
echo "<center>Dados actualizados</center>";

} 
else	
{

}

?>

<form id="insere" name="insere" method="post" action="?act=gravar" >
<table width="446" id="id">
  <tr>
    <th width="182" scope="row">ID</th>
    <td width="252"><input name="id" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>
  <tr>
    <th width="182" scope="row">Nome do livro</th>
    <td width="252"><input name="nome" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>
<tr>
    <th width="182" scope="row">Autor</th>
    <td width="252"><input name="autor" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>

  <tr>
    <th width="182" scope="row">Editora</th>
    <td width="252">
    <input name="editora" type="text" class="butao" size="25" maxlength="20" />
      	
  </tr>
<!-- <tr>
    <th width="182" scope="row">ISBN</th>
    <td width="252"><input name="isbn" type="text" class="butao"    size="25" maxlength="20" />
    </td>
  </tr>-->

  <tr>
    <th width="182" scope="row">Ano</th>
    <td width="252"><input name="ano" type="text" class="butao"  size="25" maxlength="20" />
    </td>
  </tr>
  <tr>
    <th scope="row">preço</th>
    
    <td>  
    <input type="text" name="preco" onKeyPress="return onlyNumbers();"  size="25" maxlength="20" /></td>
    </tr>
  <tr>
  

    <th scope="row"> </th>
    <td>
    	<input type="submit" name="Submit" value="ok" />
        
    	<input type="reset" name="limpar" value="Limpar">
    </td>
  </tr>
</table>
</form>


</body>
</html>



abraço

[code]

[/code]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, agora é que reparei..

Estás a atribuir:

$id=$_GET['id'];

No entanto o id não está a ser passado por GET.. Logo o query não vai detectar nenhuma ocorrência na tabela para um id inexistente.

Algo como isto resolverá o problema:

/* ... */
<form id="insere" name="insere" method="post" action="?act=gravar&id=<?php echo $id; ?>" >
/* ... */

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E já esta a funcionar :confused:

realmente foi um pouco burro, em todas estava a usar $_post e no id pos $_get , mas agora está tudo a funcionar .

podes me explicar a segunda linha de code que posses-te sff?

agradeco-te imenso pela tua ajuda :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A segunda linha que pus era basicamente para passar o id, que estaria numa possivel variavel $id, por GET.

O & é standard para XHTML válido (é o mesmo que usares &).

E depois, ele echoava o valor para o parâmetro id por get.

Assim, o link era passado como (imaginemos que $id=2): ?act=gravar&id=2

Possibilitando a linha:

$id=$_GET['id'];

Cumps. =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora