Avatar billede Slettet bruger
14. september 2010 - 16:35 Der er 7 kommentarer og
1 løsning

Cannot modify header

Hvad betyder "Warning: Cannot modify header information - headers already sent by (output started at ./start.php:14) in ./godkend.php on line 15" og hvordan retter jeg det??

Godkend.php:
  $page_title         = "Opskrifter";
  $stylesheet        = "style";
  $bg            = "index";
  $table        = "900";
  $menu            = "opskrifter";
  include($DOCUMENT_ROOT.'/php/start.php');

if ($mode == "godkend"){
mysql_query("UPDATE kogebog_opskrifter SET godkendt='1' WHERE opskriftid='$id'");
header("Location: $PHP_SELF");
}

if ($mode == "delete"){
mysql_query("DELETE FROM kogebog_opskrifter WHERE opskriftid='$id'");
header("Location: $PHP_SELF");
}

?>

bla bla.. html-indhold

<?php
$opskrifter = mysql_query("SELECT * FROM kogebog_opskrifter WHERE godkendt = '0'");
while ($opskrift = mysql_fetch_array($opskrifter)) { //starter opskrift løkken
extract($opskrift); // laver rækken om til variabler
$kategorier = mysql_query("SELECT kategori FROM kogebog_kategorier WHERE id='$kategori_id'"); //finder alle kategorier
$kategori = mysql_fetch_array($kategorier);
extract($kategori);

echo "<b>  › <a href=\"vis_opskrift.php?id=$opskriftid\">$overskrift</a></b> - $kategori [ <a href=\"$PHP_SELF?mode=godkend&id=$opskriftid\">Godkend</a> ] [ <a href=\"$PHP_SELF?mode=delete&id=$opskriftid\">Slet</a> ]<br>"; //udskriver opskriftens navn

}//lukker opskrift løkken
?>


---------------

Længere nede modtager jeg denne fejl:

Warning: extract() [function.extract]: First argument should be an array in ./godkend.php on line 112

Hvad betyder den, og hvordan eller hvor skal den rettes?
Avatar billede danco Nybegynder
14. september 2010 - 17:06 #1
Kan du specificere hvilken linje du får en fejl i ?
Altså hvilken linje der er linje 14 og 112 ?
Avatar billede majbom Novice
14. september 2010 - 17:34 #2
det kunne tyde på at en af dine query'er ikke giver noget resultat, du bør tjekke at du har mere end 0 rækker i dit resultat inden du bearbejder det.

det kan osse være der er en fejl i din query, prøv at smid "or die(mysql_error())" efter "mysql_query(...)"
Avatar billede majbom Novice
14. september 2010 - 17:35 #3
og mht header problemet må du have noget output i din start.php inden du inkluderer godkend.php
Avatar billede Slettet bruger
15. september 2010 - 17:21 #4
Den øverste fejl er forsvundet, måske fordi nogle opskrifter blev gemt i en kategori jeg havde kommenteret ud, men ikke helt fjernet, de er helt væk nu - ellers aner jeg ikke hvad jeg har lavet for at fjerne den.

Nu får jeg kun denne fejl:
Warning: extract() [function.extract]: First argument should be an array in /../godkend.php on line 112

Start.php ser således ud:
<?php
if (!isset($page_title)) {
$page_title = "";
} else {
$page_title = "$page_title";
}

$db = mysql_connect("","","");
mysql_select_db("", $db);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><? echo $page_title; ?></title>
<link rel="stylesheet" type="text/css" href="<? $_SERVER["DOCUMENT_ROOT"]; ?>/php/<?=$stylesheet; ?>.css">
<link rel="shortcut icon" href="http://anakin.dk/favicon.ico">
<?php include($_SERVER["DOCUMENT_ROOT"].'/php/meta_tags.php'); ?>
<script type="text/javascript" src="/php/highslide/highslide.js"></script>
<link rel="stylesheet" type="text/css" href="/php/highslide/highslide.css" />
<script type="text/javascript">
    // override Highslide settings here
    // instead of editing the highslide.js file
    hs.graphicsDir = '/php/highslide/graphics/';
</script>
</head>
<body>
<table width="<? echo $table; ?>" align="center" border="0">
  <tr>
    <td><?php include($DOCUMENT_ROOT.'/php/menu.php'); ?></td>
  </tr>
  <tr>
    <td width="100%" valign="top">


--- Godkend ser således ud nu (rettet) ---
<?php
/* if ($REMOTE_ADDR !=$ADMINIP) {
header("Location: /error/401.php");
exit;
}*/
  $page_title         = "Opskrifter";
  $stylesheet        = "style";
  $bg                = "index";
  $table            = "900";
  $menu                = "opskrifter";
  include($DOCUMENT_ROOT.'/php/start.php');

if ($mode == "godkend"){
mysql_query("UPDATE kogebog_opskrifter SET godkendt='1' WHERE opskriftid='$id'");
header("Location: $PHP_SELF");
}

if ($mode == "delete"){
mysql_query("DELETE FROM kogebog_opskrifter WHERE opskriftid='$id'");
header("Location: $PHP_SELF");
}

?>

<?php
$opskrifter = mysql_query("SELECT * FROM kogebog_opskrifter WHERE godkendt = '0'");
while ($opskrift = mysql_fetch_array($opskrifter)) { //starter opskrift løkken
extract($opskrift); // laver rækken om til variabler
$kategorier = mysql_query("SELECT kategori FROM kogebog_kategorier WHERE id='$kategori_id'"); //finder alle kategorier
$kategori = mysql_fetch_array($kategorier);

------------- Fejlen er denne linje -------------
extract($kategori);
-------------------------------------------------

echo "<b>&nbsp; &#8250; <a href=\"vis_opskrift.php?id=$opskriftid\">$overskrift</a></b> - $kategori [ <a href=\"$PHP_SELF?mode=godkend&id=$opskriftid\">Godkend</a> ] [ <a href=\"$PHP_SELF?mode=delete&id=$opskriftid\">Slet</a> ]<br>"; //udskriver opskriftens navn

}//lukker opskrift løkken
?>

<?php include($DOCUMENT_ROOT.'/php/end.php'); ?>
Avatar billede Slettet bruger
15. september 2010 - 17:28 #5
Når jeg kigger på koden, så ser det ud som om der skulle udskrives en kategori på godkend siden, men det gør der ikke.

Det seneste jeg har lavet er at omdøbe "kogebogen" til "opskrifter", databasen er den samme, og opskrifterne vises også uden problemer, både vis, indtast og rettelser. Men hvis jeg har glemt at omdøbe et sted, så vises det vel ikke i programmeringen som nu?
Avatar billede majbom Novice
15. september 2010 - 18:35 #6
det må være fordi du ikke får det ud af databasen du regner med, prøv at gøre som jeg skrev tidligere...
Avatar billede Slettet bruger
17. september 2010 - 19:07 #7
Det synes at virke nu. Har fjernet muligheden for at indtaste i den kategori jeg har fjernet fra visningen.

Tak for hjælpen :)
Avatar billede majbom Novice
17. september 2010 - 19:46 #8
selv tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester