fra bund til top hvis det er muligt?

Tags:    php

User
Bruger #956 @ 03.08.04 13:34
Hejsa.

Alså jeg har et lille problem og jeg ved ik engang om det er muligt at løse det på den måde jeg tror.

Jeg prøver at forklare.
Jeg har et nyheds script hvor brugeren kan oprette nyheder og da slutter min kode sådan her:

Alså nu har jeg fundet ud af det med min header, men så kommer problemet hvordan jeg bruger det hele.
Alså min bund i mit script ser sådan her ud:

<?php
include("../db.php");
if(!@mysql_query("SELECT * FROM nyhed")) {
$Create="CREATE TABLE `nyhed` (
`id` int(11) unsigned NOT NULL auto_increment,
`dato` varchar(200) NOT NULL default '0',
`nyhed` text NOT NULL,
`emne` tinytext NOT NULL,
`af` varchar(200) NOT NULL default '0',
PRIMARY KEY (`id`)
)
TYPE=MyISAM AUTO_INCREMENT=1";
mysql_query($Create)
or die(mysql_error());
}
if ($_POST[opret]){
$dato = date("d-m h:i", time());
$insertsql = "INSERT INTO nyhed (id, af, nyhed, dato, emne)
values('$_POST[id]','$_POST[af]','$_POST[nyhed]','$dato','$_POST[emne]')";
$result=mysql_query($insertsql)
or die(mysql_error());
}
?>

Når den så har gemt det hele i min database skal den springe til toppen af siden hvor jeg skal have lavet en header location ting så den går videre til min vis.php
Har hørt at det skal ske i en if sætning.
Er der nogen som kan fortælle mig hvordan man gør?
i må også gerne komme med et alternativt forslag.
De eneste 2 krav jeg har er:
1)når nyheden er oprettet og gemt skal den springe videre til min vis.php
2)Det skal laves i html eller php. IKKE noget java script eller sådan noget.



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Ja men du har da forstået mit spørgsmål korrekt.
Problemet er bare at hvis man læser rundt omkring og spørger får man at vide at header ALTID skal være den aller første kode du har i dit script ellers virker det ikke.
Hvis jeg sætter den ind efter min query og trykker på opret nyhed får jeg denne fejl:
Warning: Cannot modify header information - headers already sent by (output started at c:\\apache\\htdocs\\admin\\opret.php:14) in c:\\apache\\htdocs\\admin\\opret.php on line 35



Hey..

Hvorfor vil du have den til at gå tilbage til toppen af dit script... Du kan vel sætte en header ind efter dit mysql-query... Så længe du ikke har noget output før.
så efter du har indsat dine data i tabellen, kan du vel bare skrive:
header ("Location: vis.php");
Hvis jeg altså har forstået dit spg korrekt!?

Giver det en fejl hvis du laver en header efter dine mysql-querys? (Måske har jeg overset noget :) )





Du kan jo bare bruge ob_start() og ob_flush() i din kode, så behøver header'sne ikke være først..

//Emilbp



Hey..

Hvorfor vil du have den til at gå tilbage til toppen af dit script... Du kan vel sætte en header ind efter dit mysql-query... Så længe du ikke har noget output før.
så efter du har indsat dine data i tabellen, kan du vel bare skrive:
header ("Location: vis.php");
Hvis jeg altså har forstået dit spg korrekt!?

Giver det en fejl hvis du laver en header efter dine mysql-querys? (Måske har jeg overset noget :) )




User
Bruger #956 @ 03.08.04 15:53
Ja men du har da forstået mit spørgsmål korrekt.
Problemet er bare at hvis man læser rundt omkring og spørger får man at vide at header ALTID skal være den aller første kode du har i dit script ellers virker det ikke.
Hvis jeg sætter den ind efter min query og trykker på opret nyhed får jeg denne fejl:
Warning: Cannot modify header information - headers already sent by (output started at c:\\apache\\htdocs\\admin\\opret.php:14) in c:\\apache\\htdocs\\admin\\opret.php on line 35



Hey..

Hvorfor vil du have den til at gå tilbage til toppen af dit script... Du kan vel sætte en header ind efter dit mysql-query... Så længe du ikke har noget output før.
så efter du har indsat dine data i tabellen, kan du vel bare skrive:
header ("Location: vis.php");
Hvis jeg altså har forstået dit spg korrekt!?

Giver det en fejl hvis du laver en header efter dine mysql-querys? (Måske har jeg overset noget :) )





User
Bruger #956 @ 03.08.04 16:19
Du kan jo bare bruge ob_start() og ob_flush() i din kode, så behøver header'sne ikke være først..

//Emilbp

æh.... Er det ik noget du lige kan uddybe der? Og evt give et eksempel på det?



At man siger at headers skal være det første i ens script er bare en simplificering af virkeligheden. Det handler i bund og grund om at php skal sende sine headers afsted før den printer noget af dokumentet. Første gang man printer noget, vil evt ikke-sendte headere blive sendt, og det er derfra ikke muligt at sende flere headere.

Så hvis du bare undgår print/echo før du bruger header, så behøver du ikke det med ob (output buffering).
--
Thus, I conclude



Du kan jo bare bruge ob_start() og ob_flush() i din kode, så behøver header'sne ikke være først..

//Emilbp

æh.... Er det ik noget du lige kan uddybe der? Og evt give et eksempel på det?


Hvis du f.eks har et stykke kode.. bare lige et kort eksempel:
Fold kodeboks ind/udKode 


Vil det melde fejl, fordi du prøver at sende en client videre til nyside.php efter du har sendt noget tekst til clienten...

Hvis du i stedet bruger output buffering (ob) kan du styre hvornår headersne bliver sendt..

således:
Fold kodeboks ind/udKode 


Så sender den først headersne efter du har giver dem fri (flush)...

Eksemplet var lidt dårligt, men jeg håber du forstod princippet i det...

//Emilbp



Altså at bruge headers er jo ikke noget prob inde i koden. hvis man for fejl må man jo bare lige tænke sig om og ændre det lidt så der ikke bliver udskrevet noget inden.

Hilsen k-roy
(christian bekker A.)
www.k-roy.h4f.dk
-- Problemer er til for at blive løst :) --



t