Avatar billede krk Nybegynder
11. august 2005 - 12:09 Der er 25 kommentarer og
2 løsninger

"Location" virker ikke

Jeg har en side (test.php) hvor jeg linker til side delrectext.php. Hensigten var så at jeg automatisk skulle komme tilbage til test.php efter at der er blevet slettet en record i en tabel, men ejg får fejl
Er der nogen der kan hjælpe jeg sender koden:

Her er koden til test.php:
<?php
require("../req/db_connect.php");

$id                = $_REQUEST['id'];
$page            = $_REQUEST['page'];
$overskrift        = $_REQUEST['overskrift'];
$tekstindhold    = $_REQUEST['tekstindhold'];




$query        ="SELECT * FROM akvarie_indhold ORDER BY id DESC;";
$result        = mysql_db_query ($database, $query, $link );



print"<b>Rediger tekst</b>
    <table border= '1'>
       
        <tr>
            <td><b>Overskrift</b></td>
            <td><b>Tekstindhold</b></td>
            <td><b>Slet</b></td>
        </tr>";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $overskrift        = $row[overskrift];
        $tekstindhold    = $row[tekstindhold];
       
        print"<td>$overskrift </td>";
        print"<td>$tekstindhold </td>";
        print"<td><a href = '?page=delrectext&id=$id'>Slet</a></td>
              </tr>";
    }
print"</table>";

?>


Her er koden til delrectext.php:

<?php
$query        ="DELETE FROM akvarie_indhold WHERE id = '$id';";
$result        = mysql_db_query ($database, $query, $link);

header("location: http://test.dk/akvariehulen/admin");

?>
Avatar billede jakobdo Ekspert
11. august 2005 - 12:12 #1
Hvilken fejl får du?
Avatar billede krk Nybegynder
11. august 2005 - 12:13 #2
Warning: Cannot modify header information - headers already sent by (output started at /hsphere/local/home/boris/kryt.dk/akvariehulen/admin/index.php:6) in /hsphere/local/home/boris/kryt.dk/akvariehulen/admin/content/delrectext.php on line 6
Avatar billede barklund Nybegynder
11. august 2005 - 12:19 #3
Du skal ikke sende <html>, <body> og tilsvarende, når du skal bruge en location-header. Link istedet direkte til delrectext.php:

        print"<td><a href = 'delrectext.php?id=$id'>Slet</a></td>";

:)

--
Morten Barklund
Avatar billede krk Nybegynder
11. august 2005 - 12:24 #4
jeg forstår ikke hvad du skriver.
Mit link  (print"<td><a href = '?page=delrectext&id=$id'>Slet</a></td>) virker fint til siden delrectext.php. Problemet er at komme fra delrectext.php tilbage til test.php.

Og jeg forstår ikke havd du mener mad at jeg ikke skal sende <html>, <body> og tilsvarende. Jeg har ikke lavet nogle <html>, <body> tags :-)
Du må forklare lidt nærner hvad du mener
Avatar billede barklund Nybegynder
11. august 2005 - 12:42 #5
Du linker til delrectext.php - men den bliver jo hentet ind i index.php, som sikkert printer alt mulig <html> med mere udenom - og det må du ikke, for så virker din header ikke.
Avatar billede krk Nybegynder
11. august 2005 - 12:46 #6
okay, men findes der så en anden løsning. Jeg kan ikke rigtig droppe min <html> i min index.php :-)
Avatar billede barklund Nybegynder
11. august 2005 - 12:51 #7
Kan du ikke bruge den løsning, som jeg nævnte ovenfor? Altså linke direkte til delrectext.php?
Avatar billede krk Nybegynder
11. august 2005 - 12:53 #8
jeg har simpelhen siddet og rodet så meget frem og tilbage så det tager lige lidt tid inden jeg vender tilbage ;-)
Avatar billede krk Nybegynder
11. august 2005 - 12:57 #9
hvad siger du til at jeg sender koden på alle 3 sider (index, test og delrectext.php)
Har du så tid til at tage et kig på dem?
Avatar billede krk Nybegynder
11. august 2005 - 12:59 #10
index.php:
<html>
<head>
<title></title>
<head>
<body>
<?php
require("../req/variabler.php");
require("../req/db_connect.php");
?>


    <?php
        $page = $_REQUEST['page'];
       
       
            require("test.php");
       
        ?>
       

</table>
</body>
<html>

test.php:
<?php
require("../req/db_connect.php");

$id                = $_REQUEST['id'];
$page             = $_REQUEST['page'];
$overskrift        = $_REQUEST['overskrift'];
$tekstindhold    = $_REQUEST['tekstindhold'];



$query        ="SELECT * FROM akvarie_indhold ORDER BY id DESC;";
$result        = mysql_db_query ($database, $query, $link );



print"<b>Rediger tekst</b>
    <table border= '1'>
       
        <tr>
            <td><b>Overskrift</b></td>
            <td><b>Tekstindhold</b></td>
            <td><b>Slet</b></td>
        </tr>";
    while($row = mysql_fetch_array($result)){
        $id                = $row[id];
        $overskrift        = $row[overskrift];
        $tekstindhold    = $row[tekstindhold];
       
        print"<td>$overskrift </td>";
        print"<td>$tekstindhold </td>";
        print"<td><a href = 'delrectext.php?id=$id'>Slet</a></td></tr>";
    }
print"</table>";

?>

delrectext.php:
<?php
$query        ="DELETE FROM akvarie_indhold WHERE id = '$id';";
$result        = mysql_db_query ($database, $query, $link);

    header("location: /akvariehulen/admin/?page=???");



?>
Avatar billede barklund Nybegynder
11. august 2005 - 13:05 #11
Hm, det ser lidt forkert ud - du skal vel ikke require test.php altid?

Og hvorfor kunne mit forslag ikke bruges - det forstår jeg stadig ikke...
Avatar billede krk Nybegynder
11. august 2005 - 13:07 #12
jeg forstår heller ikke hvorfor det ikke virker, men det gør det bare ikke.
Jeg tror jeg prøver at starte forfra - det kan måske hjælpe lidt
Avatar billede barklund Nybegynder
11. august 2005 - 13:28 #13
Har du prøvet mit råd? Du skal selvfølgelig også inkludere den der db_connect først :)

delrectext.php:
<?php
require_once "../req/db_connect.php";
$query        ="DELETE FROM akvarie_indhold WHERE id = '$id';";
$result        = mysql_db_query ($database, $query, $link);
header("location: /akvariehulen/admin/?page=???");
?>

Du bør nok alle steder rette det til require_once istedet for require.
Avatar billede krk Nybegynder
11. august 2005 - 14:19 #14
Jeg har fået det til at virke, men ikke ved hjælp af "location".
Jeeg har skrevet "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=http://kryt.dk/fisk/admin/'>" istedet for.

Det undre mig bare at det location ikke virker, for det virker godt nok hvis jeg køre det på et andet webhotel end surftown. Skulle det virkelig have noget at sige??
Avatar billede krk Nybegynder
11. august 2005 - 14:20 #15
Forresten hvad er forskellen på require_once og bare require ??
Avatar billede barklund Nybegynder
11. august 2005 - 14:22 #16
Du har stadig ikke fortalt, hvilket fejl, som du får. Og det virker fint, hvis du bare bruger den rigtigt.

Forskellen på require og require_once er, at selvom du kalder den samme fil flere gange, så bliver den kun inkluderet 1 gang. I dit setup require'r du db_connect 2 gange - både i index.php og i test.php - det er der jo ingen grund til.
Avatar billede domaz.dk Novice
11. august 2005 - 14:26 #17
du kan os bare tilføje øverst på siden:

<?php
ob_start();
?>
Avatar billede krk Nybegynder
11. august 2005 - 14:27 #18
og hvad betyder ob_start(); ?? :-)
Avatar billede jakobdo Ekspert
11. august 2005 - 14:29 #19
Har du ikke adgang til en php-manual?
Avatar billede domaz.dk Novice
11. august 2005 - 14:32 #20
Avatar billede krk Nybegynder
11. august 2005 - 14:54 #21
nu har jeg arbejdet med et eksempel der virker. Det kan ses på http://kate.1go.dk/projekt/admin Jeg får ingen fejl når jeg prøver at slette et linje.

Men når jeg lægger alt koden over til surftown, så virker det ikke længere. Jeg har ført databasen over til surftown og den køre fint, men jeg får en fejl når jeg vil slette en linje.

Er der nogle af jer der kan give mig en god forklaring på det.

I kan se forskellen på henholdsvis:
http://kate.1go.dk/projekt/admin
http://kryt.dk/projekt2/admin (surftown)
Avatar billede barklund Nybegynder
11. august 2005 - 14:57 #22
Muligvis fordi output buffering er slået til som standard på det ene domæne og ikke på det andet. Hvorfor benytter du dig ikke af nogle af de givne råd?
Avatar billede krk Nybegynder
11. august 2005 - 14:59 #23
Det ville jeg også gerne hvis jeg bare kunne få dem til at virke.
Jeg er ikke nogen haj til php,( men jeg prøver). Det forklare nok også hvorfor jeg ikke helt forstår hvordan jeg skal bruge ob_start();
Så hvis en kunne forklare lidt bedre hvordan jeg bruger det i mit tilfælde, så ville det være rart :-)
Avatar billede krk Nybegynder
11. august 2005 - 16:05 #24
Endelig har jeg fået det til at virke.
Løsningen var (selvfølgelig) ob_start().
Beklager den lidt dårlige tone fra min side, men jeg var ved at give op :-)
Jeg vil gerne give point til både domas.dk (for løsningen) og barklund (for din tålmodighed)
Avatar billede domaz.dk Novice
11. august 2005 - 16:09 #25
såå må du lige få barklund til at gi et svar... ;)

ob_start virker hver gang... findes selvf os andre metoder, men det lærer man lige så stille jo mere erfaring man får med php...
Avatar billede barklund Nybegynder
11. august 2005 - 16:13 #26
Fair nok :)
Avatar billede krk Nybegynder
11. august 2005 - 16:14 #27
Tak for hjælpen
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