Avatar billede jannek_ek Nybegynder
08. juli 2006 - 13:14 Der er 10 kommentarer og
1 løsning

opdater til en anden side manuelt

hey jeg har et problem med min tagwall. Når man har skrevet og sendt en besked, bliver den sendt igen hvis man trykker opdater. Derfor tænkte jeg om man kunne vha. et metatag eller lignenden kan skifte siden fra tagwall.php?id=ny til tagwall.php, i det man selv opdatere siden. Altså ikke noget med at siden selv hopper over på den anden side.
Avatar billede taskmgr Nybegynder
08. juli 2006 - 13:19 #1
Du kan f.eks. smide en:
header("Location: tagwall.php");
ind efter du har skrevet til fil/database.

Bare husk at der ikke må være noget output førend du sætter din header.
Avatar billede jannek_ek Nybegynder
08. juli 2006 - 13:49 #2
er det vigtigt at det er før jeg sender til min db? for lige nu siger den at siden aldrig vil blive loadet... lige nu ser sidens top sådan ud:

<?php
session_start();
$side = "tagwall";
if ($_GET["id"] = "ny")
{
  $ny = true;
  header("Location: tagwall.php");
}

og link: http://noerwerk.frac.dk/tagwall.php
Avatar billede jannek_ek Nybegynder
08. juli 2006 - 14:05 #3
ja det var det ... tror jeg har den nu
Avatar billede taskmgr Nybegynder
08. juli 2006 - 14:12 #4
Det skal være efter du har skrevet til databasen. Ellers vil der aldrig komme noget i den :)
Avatar billede jannek_ek Nybegynder
08. juli 2006 - 14:29 #5
nu har jeg prøvet en del ... og har rodet mig ud i det her:

<?php
session_start();
$side = "tagwall";
if ($_GET["id"] = "ny")
{
  $ny = true;
}
include("db.php");

function ret_tekst($tekst)
{
  $tekst = str_replace( "<", "&lt;", "$tekst" );
  $tekst = str_replace( ">", "&gt;", "$tekst" );
  $tekst = str_replace( "&lt;ascii&gt;", " <pre> ", "$tekst" );
  $tekst = str_replace( "&lt;/ascii&gt;", " </pre> ", "$tekst" );
  $tekst = str_replace( "\r\n", "<br>", "$tekst" );
  return $tekst;
}

function ret_navn($tekst)
{
  $tekst = str_replace( "<", "&lt;", "$tekst" );
  $tekst = str_replace( ">", "&gt;", "$tekst" );
  return $tekst;
}

if ($ny)
{
  if (!empty($_REQUEST["besked"]) && $_REQUEST["besked"] != "Enter your messege here!")
  {
  $tekst = ret_tekst($_REQUEST["besked"]);
  if ($_SESSION["admin"])
  {
    mysql_query("insert into tagwall (navn, besked, tid, ip) values ('"."<span class=\"".$_SESSION["navn"]."\">".addslashes(ret_navn($_REQUEST["navn"]))."</span>"."', '".addslashes($tekst)."', ".time().", '".getenv("REMOTE_ADDR")."')") or die(mysql_error());
  } else if ($_REQUEST["navn"] == "Name" || empty($_REQUEST["navn"]))
  {
    mysql_query("insert into tagwall (navn, besked, tid, ip) values ('Nobody', '".addslashes($tekst)."', ".time().", '".getenv("REMOTE_ADDR")."')") or die(mysql_error());
  } else
  {
    mysql_query("insert into tagwall (navn, besked, tid, ip) values ('".addslashes(ret_navn($_REQUEST["navn"]))."', '".addslashes($tekst)."', ".time().", '".getenv("REMOTE_ADDR")."')") or die(mysql_error());
  }
  } else
  {
  $Msg = "<h2>Du har ikke udfyldt beskedfeltet</h2>";
  }
}

if (!empty($_GET["slet"]) && $_SESSION["admin"])
{
  mysql_query("delete from tagwall where tid='".$_GET["slet"]."'") or die(mysql_error());
}



$result = mysql_query("select * from tagwall order by tid desc") or die(mysql_error());

$Msg = $Msg."<p class=\"mindre\">";

while ($row = mysql_fetch_array($result))
{
  $Msg = $Msg."<b>".stripslashes($row["navn"])."</b>";
  if ($_SESSION["admin"])
  {
  $Msg = $Msg."&nbsp;- <a href=\"tagwall.php?slet=".$row["tid"]."\">Slet</a>";
  }
  $Msg = $Msg."<br>
        <u>".date("j/m-y", $row["tid"])."</u>
        <br>
        ".stripslashes($row["besked"])."
        <br>
        <br>
      ";
  }

if ($_GET["id"] = "ny")
{
  header("Location: tagwall.php");
}

include("top.php");

echo Msg."</p>";
?>
<?php
include("buttom.php");
?>

men det virker stadig ikke... :( kan jeg kalde ting ned fra min db efter jeg har lavet headeren eller skal det hele gøres inden?
Avatar billede jannek_ek Nybegynder
08. juli 2006 - 15:32 #6
jeg kan se at det hele virker til og med headeren, men så går den i stå der af en eller anden grund...
Avatar billede jannek_ek Nybegynder
08. juli 2006 - 15:53 #7
hov min fejl kom til at lave en enkelt = istedet for == :( det hele virker nu så bare kom med et svar
Avatar billede taskmgr Nybegynder
09. juli 2006 - 11:55 #8
ok
Avatar billede oldnick Nybegynder
15. juli 2006 - 15:39 #9
Kan du ikke poste den rigtigte kode, der er ret mange =, så det er lidt besværeligt at skulle finde der hvor der skal være == istedet for =. Tak :)
Avatar billede jannek_ek Nybegynder
15. juli 2006 - 19:39 #10
fejlen ligger i:
if ($_GET["id"] = "ny")
der skal være:
if ($_GET["id"] == "ny")
linien er både i toppen og bunden.
men der er nogle fejl, så poster en nyere en, med et maksimum antal post per side:


<?php
// OUTPUTBUFFER - der må ikke komme noget output før headeren har været der!
ob_start();
session_start();
$ekstra = "tagwall";
include("top.php");

// DB - CONNECTION
require_once("db.php");

$ppp = 5; // antallet af post per side


/*
CREATE TABLE `tagwall` (
`navn` VARCHAR( 255 ) NOT NULL ,
`besked` TEXT NOT NULL ,
`tid` INT NOT NULL ,
`ip` VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( `tid` )
);
*/



// TAGWALL - SEND TIL DB
function ret_tekst($tekst)
{
  $tekst = str_replace( "<", "&lt;", "$tekst" );
  $tekst = str_replace( ">", "&gt;", "$tekst" );
  $tekst = str_replace( "\r\n", "<br>", "$tekst" );
  return $tekst;
}

function ret_navn($tekst)
{
  $tekst = str_replace( "<", "&lt;", "$tekst" );
  $tekst = str_replace( ">", "&gt;", "$tekst" );
  return $tekst;
}

if ($_GET["id"] == "ny")
{
  if (!empty($_POST["besked"]) && $_POST["besked"] != "Smid en besked!")
  {
  $tekst = ret_tekst($_POST["besked"]);
 
  if ($_POST["navn"] == "Navn" || empty($_POST["navn"]))
  {
    mysql_query("insert into tagwall (navn, besked, tid, ip) values ('Nobody', '".addslashes($tekst)."', ".time().", '".getenv("REMOTE_ADDR")."')") or die(header("Location: dberror.php?id=".mysql_error()));
  } else
  {
    if ($_POST["navn"] == $_SESSION["navn"])
    {
    $name = "<a href=\"profil.php?navn=".$_SESSION["navn"]."\">".$_SESSION["navn"]."</a>";
    } else
    {
    $name = addslashes(ret_navn($_POST["navn"]));
    }
    mysql_query("insert into tagwall (navn, besked, tid, ip) values ('".$name."', '".addslashes($tekst)."', ".time().", '".getenv("REMOTE_ADDR")."')") or die(header("Location: dberror.php?id=".mysql_error()));
  }
  } else
  {
  $error = true;
  }
}
if (isset($_GET["slet"]) && $_SESSION["status"] >= 9)
{
  if ($_GET["slet"] == "all" && $_SESSION["status"] == 10)
  {
  mysql_query("truncate table tagwall") or die(header("Location: dberror.php?id=".mysql_error()));
  } else
  {
  mysql_query("delete from tagwall where tid='".$_GET["slet"]."'") or die(header("Location: dberror.php?id=".mysql_error()));
  }
}


if ($_GET["id"] == "ny" || isset($_GET["slet"]))
{
  if ($_GET["id"] == "ny")
  {
  header("Location: tagwall.php?side=0".(($error) ? "&id=b" : "&id=g"));
  } else
  {
  header("Location: tagwall.php?side=".$_GET["side"]);
  }
  exit();
}


// TAGWALL - INPUTFELT
echo (($_GET["id"] == "g") ? "<h2>Din meddelelse blev sendt!</h2>" : (($_GET["id"] == "b") ? "<h2>Du havde ikke udfyldt beskedfeltet!</h2>" : ""));

echo "<form method=\"post\" action=\"tagwall.php?id=ny\">
        <input type=\"text\" class=\"tag\" name=\"navn\"";
if (isset($_SESSION["navn"]))
{
  echo " value=\"".$_SESSION["navn"]."\" ";
} else
{
  echo " value=\"Navn\" ";
}
echo "onFocus=\"this.select()\">&nbsp;<input type=\"image\" src=\"gfx/ok.png\">
        <br>
        <textarea class=\"tag\" name=\"besked\" onFocus=\"this.select()\">Smid en besked!</textarea>
      </form>
      ";


// TAGWAL - OUTPUT
$antal = mysql_num_rows(mysql_query("select * from tagwall"));

if ($_GET["side"] > 0)
{
  echo "&lt;<a href=\"tagwall.php?side=".($_GET["side"] - 1)."\">prev</a> ";
} else
{
  echo "&lt;prev ";
}

for ($nr = 0; $antal / $ppp > $nr; $nr++)
{
  if ($_GET["side"] == $nr)
  {
  echo ($nr + 1)." ";
  continue;
  }
  echo "<a href=\"tagwall.php?side=".$nr."\">".($nr + 1)."</a> ";
}

if ($_GET["side"] < ($antal / $ppp) - 1)
{
  echo "<a href=\"tagwall.php?side=".($_GET["side"] + 1)."\">next</a>&gt;";
} else
{
  echo "next&gt;";
}

echo "<br><br>";

$result = mysql_query("select * from tagwall order by tid desc limit ".($ppp * $_GET["side"]).", ".$ppp) or die(header("Location: dberror.php?id=".mysql_error()));
while ($row = mysql_fetch_array($result))
{
  echo "<b>".stripslashes($row["navn"])."</b>";
 
  if ( $_SESSION["status"] >= 9)
  {
  echo "&nbsp;- <a href=\"tagwall.php?slet=".$row["tid"]."&side=".$_GET["side"]."\">Slet</a>";
  }
 
  echo "<br>
        <u>".date("j/m-y", $row["tid"])."</u>
        <br>
        ".stripslashes($row["besked"])."
        <br>
        <br>
      ";
}


// BUNDEN
mysql_close($conn);

include("bottom.php");
ob_end_flush();
?>


filen db.php indeholder kun en db-connect, og top.php og botton.php er ren html
Avatar billede oldnick Nybegynder
16. juli 2006 - 11:22 #11
Godt arbejde, 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

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