Erro editar.PHP

Tou a fazer um trabalho para a escola sobre html, php e mysql

Tou a fazer um código editar para editar na pagina web a tabela

<?php

$id=$_GET['ID'];
$ligacao = mysql_connect ("localhost","DiogoCastro","esmspgsi2");
$esms=mysql_select_db ("esms",$ligacao);

$sql="select * from turmas  Where ID=.$id;
$resultado=mysql_query($sql,$ligacao);
$aluno=mysql_fetch_array($resultado); 

$id={$aluno['ID']}; 
$nome={$aluno['Nome']}; 
$num={$aluno['Num']}; 
$turma={$aluno['Turma']}; 

?>

<Body>
	<form method="POST" Action="gravar.php">
	ID: <Input type="Text" Name="txtID"
		Value="<?php echo $id ?>"> <br>
	Nome: <Input type="Text" Name="txtNome"
		Value="<?php echo $nome ?>"> <br>
	Num: <Input type="Text" Name="txtNum"
		Value="<?php echo $num ?>"> <br>
	Turma: <Input type="Text" Name="txtTurma"
		Value="<?php echo $turma ?>"> <br>


	<input type="Submit" Value="alterar">
		
	</form>	
	
</Body>

Da-me erro aqui:
Parse error: syntax error, unexpected ‘POST’ (T_STRING) in on line 19.

Uma pergunta, esse é o seu código todo? Pq o erro diz que você tem um erro de sintaxe.

arrume essa linha
sql="select * from turmas Where ID=.$id;
mude para isso
sql="select * from turmas Where ID =" . $id;
ou
sql="select * from turmas Where ID = {$id} ";

Poste seu código todo para podermos analisar melhor blz…

Abs

Mas esse é o código todo do editar. Qual codigo quer mais? Tenho o de gravar, o de listar e o que liga a base de dados para adicionar

Posta o seu form todo… eu acredito que esse erro possa estar nele por se tratar de um POST inexperado… pode ser que na sua tag de abertura do form vc esteja enviando como POST mas está recebendo o $id como GET…

Mas a certeza só teria ao ver esse código…

Aqui ta o meu listar:

<?PHP

$ligacao = mysql_connect ("localhost","DiogoCastro","esmspgsi2");
$esms=mysql_select_db ("esms",$ligacao);

$sql="select * from turmas";
$resultado=mysql_query($sql,$ligacao);


?>
<head>
	
</head>
<table border="1">
    <tr>
		<th> <font color="blue"> ID: </font> </th>
		<th> <font color="blue"> Nome: </font> </th>
		<th> <font color="blue"> Numero: </font> </th>
		<th> <font color="blue"> Turma: </font> </th>

	</tr>
<?php while ($row=mysql_fetch_array($resultado)):?>

<tr >
	<td><font color="black"><?php echo utf8_encode($row['ID']); ?> </font></td>
	<td><font color="black"><?php echo utf8_encode($row['Nome']); ?> </font></td>
	<td><font color="black"><?php echo $row['Num']; ?> </font></td>
	<td><font color="black"><?php echo utf8_encode($row['Turma']); ?> </font></td>
	<td> <a href="editar.php?num=<?php echo $row['ID']?>"> Editar </a> </td>
	<td> <a href="eliminar.php?num=<?php echo $row['ID']?>"> Eliminar </a> </td>

</tr>
<?php endwhile; ?>

ai se reparar tem um link po editar e vai po editar.php que é o código que pos em cima.

O que falta no editar é isto:
Body
form method=“POST” Action=“gravar.php”>

falta os <> no body e no primeiro form

Bom o que percebi aqui é que você não tem um $_GET["ID"]… você está enviando via get um “num” (?num)

Mude seu $_GET["ID"] para $_GET["num"] e ve se para esse erro…

Agora da este erro
Parse error: syntax error, unexpected ‘=’ on line 7

que é esta linha:
sql=“select * from turmas Where ID=”.$id;

PS: no listar em vez de por ?num por ?id, logo tou a usar o id e não o num, foi um erro ao por o num em vez do id

Faltou o $ no sql ficando $sql

agora aparece no editar estes erros:
Notice: Undefined index: ID in C:\xampp\htdocs\diogocastro\editar.php on line 3

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\diogocastro\editar.php on line 9

o codigo:

<?php $id=$_GET['ID']; $ligacao = mysql_connect ("localhost","DiogoCastro","esmspgsi2"); $esms=mysql_select_db ("esms",$ligacao); $sql="select * from turmas Where ID=".$id; $resultado=mysql_query($sql,$ligacao); $aluno=mysql_fetch_array($resultado); $id=$aluno['ID']; $nome=$aluno['Nome']; $num=$aluno['Num']; $turma=$aluno['Turma']; ?>

Body>
form method=“POST” Action=“gravar.php”>
Nome:

Num:

Turma:

<input type="Submit" Value="alterar">
	
</form>	

o Id é a chave primaria não sei se o problema é disso, mas também como não quero mudar o valor do ID tirolo do form.

Notice: Undefined index: ID in C:\xampp\htdocs\diogocastro\editar.php on line 3

troque esse código:

$id=$_GET['ID'];

por esse

$id=$_GET['id'];

Provavelmente você está mandando o ?id minúsculo, o $_GET é case sensitive o que significa que diferencia maiúsculas e minúsculas.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean
given in C:\xampp\htdocs\diogocastro\editar.php on line 9

Tem algumas possibilidades, verifique primeiro se você está passando os parâmetros corretamente para os métodos mysql_connect e mysql_select_db, depois verifique se o nome do campo ID está realmente em caixa alta, case sensitive para esse caso.
Lembrando que $aluno também irá ter a associação da mesma forma que está no banco, ou seja se ID no banco estiver caixa baixa então sua associação ficará $aluno[“id”]

No editar já não aparece nenhum erro. Muito obrigado, mas tenho mais um problema não me grava.

Este é o php que tenho de gravar, não me aparece nenhum erro, nem sei o porque de não me gravar

<?php $id=$_GET['id']; $ligacao = mysql_connect ("localhost","DiogoCastro","esmspgsi2"); $esms=mysql_select_db ("esms",$ligacao); $nome=$_POST['txtNome']; $num=$_POST['txtNum']; $turma=$_POST['txtTurma']; $sql="Update turma Set Nome=$nome, Num=$num, Turma=$turma WHERE ID=".$id; $resultado=mysql_query($sql,$ligacao); header('Location:Listar.php'); ?>

Primeiro verifique no arquivo do form dos $_POST como está o atributo name, case sensitive para este caso também.

depois altere isso:

$sql="Update turma Set
		Nome=$nome,
		Num=$num,
		Turma=$turma WHERE ID=".$id;

para isso:

$sql="Update turma Set
		Nome=".$nome.",
		Num=".$num.",
		Turma=".$turma." WHERE ID=".$id;

Continua sem dar…

$sql=“update turma set Nome=’$nome’, Num=’$num’, Turma=’$turma’ WHERE ID=’$id’”;

ao invés de dar

header(‘Location:Listar.php’);

coloque um echo de retorno assim:

echo "nome recebido: ".$nome;
echo "num recebido: ".$num;
echo "turma recebida: ".$turma;
echo "resultado sql: ".$resultado;

Poste o retorno aqui.

Experimentei o que voce pos e deu o seguinte:

Notice: Undefined index: ID on line 2
nome recebido: Andrenum recebido: 1turma recebida: 2 PGSIresultado sql:

Recebeu o nome o numero que mudei. So da esse erro na linha 2.

<?php $id=$_GET['id']; $ligacao = mysql_connect ("localhost","DiogoCastro","esmspgsi2"); $esms=mysql_select_db ("esms",$ligacao); $nome=$_POST['txtNome']; $num=$_POST['txtNum']; $turma=$_POST['txtTurma']; $sql="Update turma Set Nome=".$nome.", Num=".$num.", Turma=".$turma." WHERE ID=".$id; $resultado=mysql_query($sql,$ligacao); echo "nome recebido: ".$nome; echo "num recebido: ".$num; echo "turma recebida: ".$turma; echo "resultado sql: ".$resultado; //header('Location:Listar.php'); ?>

Já agora se me puderem ajudar noutra coisa agradecia. É o seguinte tenho outro php de eliminar e não me elimina aparece;

Notice: Undefined index: turma on line 2

Fica o código:

<?php $turma=$_GET['turma']; $ligacao = mysql_connect ("localhost","DiogoCastro","esmspgsi2"); $turma=mysql_select_db ("esms",$ligacao); $sql="delete from nturmas where turma=".$turma; $resultado=mysql_query($sql,$ligacao); //header('Location:turma.php'); ?>

ja verifiquei tudo e acho que devia dar correto.

O erro te diz que o index turma é indefinido. você não está recebendo nada via get que contenha o idex turma

linha de código:

$turma=$_GET['turma'];

Verifique na página de envio se você está enviando um get mesmo e se existe turma. Mesmo caso do ?num por ?id

Você está com problemas na passagem de dados de um php para outro.

De onde vem $turma=$_GET['turma']; ?