← PHP

Erro com header('Location:')

Lida 2568 vezes

Offline

Roberto Francisco 
Membro
Mensagens 669 Gostos 1
Feedback +3

Troféus totais: 28
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Boas noites,
Estou aqui com uma dúvida/erro manhoso...

Tenho um simples form para adicionar um texto e a data actual numa bd.

form:
Código: [Seleccione]
<form method="POST" action="">
<input type="text" name="data" value="<?php echo $data_actual;?>" size="20"/>
<input type="text" id="myinputbox" onfocus="this.value = this.value;" name="texto" size="115"/>
<input type="hidden" name="form" value="sim"/>
<input type="submit" value="+"/>
</form>

adição de dados à bd
Código: [Seleccione]
//Adicionar
if(isset($_POST['form']) && $_POST['form'] == 'sim')
{
$data_input = $_POST['data'];
$texto_input = $_POST['texto'];

$insert = mysql_query("INSERT INTO registo (data, texto) VALUES ('$data_input', '$texto_input')") or die(mysql_error());

//linha 63 header('Location: index.php');
}

Depois disto mostro os dados da bd cada um por linha com uma consulta simples...
Código: [Seleccione]
while($result = mysql_fetch_array($consulta_bd))
{
echo '<form method="POST" action="">
<input type="hidden" name="id_apagar" value="'.$result['id'].'"/>
<input type="hidden" name="apagar" value="sim"/><input type="submit" value="X"/>
//linha 52 <b>'.$result['data'].'</b> | '.$result['texto'].'</br></form>';
}

O problema é que depois do 16º registo aparece o erro:

Warning: Cannot modify header information - headers already sent by (output started at H:\USBWebserver v8\root\hist\index.php:52) in H:\USBWebserver v8\root\hist\index.php on line 63

Alguém sabe porque é que isto acontece?
Obrigado,
Roberto Francisco
Offline

Ivo Pereira 
Membro
Mensagens 661 Gostos 1
Feedback +7

Troféus totais: 27
Trófeus: (Ver todos)
Linux User Super Combination Combination Topic Starter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

O código de verificação do algoritmo "se existem dados em $_POST" deve estar no topo desse código. Não sei se fazes tudo no mesmo ficheiro, mas se sim tem mesmo de estar no topo, caso contrário os headers já foram definidos antes (basta existir algum output de código) e estás a tentar redefini-los com o header('Location: index.php');.
Offline

Roberto Francisco 
Membro
Mensagens 669 Gostos 1
Feedback +3

Troféus totais: 28
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

O código de verificação do algoritmo "se existem dados em $_POST" deve estar no topo desse código. Não sei se fazes tudo no mesmo ficheiro, mas se sim tem mesmo de estar no topo, caso contrário os headers já foram definidos antes (basta existir algum output de código) e estás a tentar redefini-los com o header('Location: index.php');.

Tens razão, esqueci-me desse pormenor, está resolvido, no entanto, não percebi porque é que a mensagem de erro aparece só a partir do 16º registo...

Obrigado! :cool:
Offline

Ivo Pereira 
Membro
Mensagens 661 Gostos 1
Feedback +7

Troféus totais: 27
Trófeus: (Ver todos)
Linux User Super Combination Combination Topic Starter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Não tens nada a fazer o include dessa página ou essa página a fazer include a outras?
Offline

Roberto Francisco 
Membro
Mensagens 669 Gostos 1
Feedback +3

Troféus totais: 28
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Não tens nada a fazer o include dessa página ou essa página a fazer include a outras?

nada, é apenas uma página.
Offline

Ivo Pereira 
Membro
Mensagens 661 Gostos 1
Feedback +7

Troféus totais: 27
Trófeus: (Ver todos)
Linux User Super Combination Combination Topic Starter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Sim realmente é estranho, mas só analisando propriamente os resultados que vêm da query.