Zrobiłem sobie obsługę błędów za pomocą funkcji header(), która przenosi mnie z powrotem na daną stronę z tą różnicą, że dodaje w adresie tablicę $GET, później switchem sprawdzam i wyświetlam komunikat. No i w czym problem? Otóż po tym jak nie podam jakiejś informacji np. tytułu bądź treści to przenosi mnie dodając końcówkę "?info=1", następnie dopisuje to co ominąłem i chcąc dodać newsa, wyskakuje błąd o treści:
"Warning: Cannot modify header information - headers already sent by (output started at ...\add_news.php:29) in ...\add_news.php on line 56"Rozumiem treść komunikatu, więc mniej więcej wiem o co chodzi, niestety nie mam pojęcia jak sobie z tym poradzić/obejść? Co zmienić w kodzie? Może znacie jakiś inny sposób?
<?php
$sql="SELECT * FROM newsy ORDER BY id DESC";
$i=0;
$id[$i]=$tablica['id'];
$tytul_newsa[$i]=$tablica['tytul_newsa'];
$tresc_newsa[$i]=$tablica['tresc_newsa'];
$autor[$i]=$tablica['autor'];
$data[$i]=$tablica['data'];
$godzina[$i]=$tablica['godzina'];
$i++;
}
}
switch ($_GET['info']) {
case "1": {
echo "Nie podano wszystkich danych<br />"; break;
}
case "2": {
break;
}
}
}
if (!$_POST) {
echo "<form action=\"".$SERVER['PHP_SELF']."\" method=\"POST\"> <select name=\"news\" style=\"width: 48%\">";
for($x=0;$x<=$i;$x++) {
echo "<option value=\"".$id[$x]."\">".$tytul_newsa[$x]."</option>"; }
<input type=\"submit\" value=\"Edytuj\" name=\"edit\"><input type=\"submit\" value=\"Usuń\" name=\"erase\">
<br />
Tytuł:<br /><input type=\"text\" name=\"tytul\" style=\"width: 60%\"><br />
Treść:<br /><textarea style=\"width: 60%\" name=\"tresc\"></textarea><br /> <input type=\"submit\" value=\"Wyślij\"></form>";
} elseif (!$_POST['tytul'] || !$_POST['tresc']){
header("Location: add_news.php?info=2");
} elseif (isset($_POST['tytul']) && isset($_POST['tresc'])) { //może i wcześniej sprawdzałem ale lepiej sprawdzić
$sql="INSERT INTO newsy VALUES ('','".$_POST['tytul']."','".$_POST['tresc']."','','aktualna_data','aktualna_godzina')";
header("Location: add_news.php?info=1");
}
?>
Ten post edytował adriano321 3.12.2007, 17:09:52