Avatar billede coffein Nybegynder
05. juni 2008 - 10:18 Der er 10 kommentarer

Hvad gør jeg? clear alt efter submit!

Jeg er ved at lave et galleri, hvor man klikker på billedet, det åbner i et nyt vindue, hvor der så nedenunder kan tilføjes kommentar til billedet.

Efter man har tilføjet en kommentar og man trykker refresh skriver den, den sammen kommentar igen og igen og igen.

Hvad gør jeg for at undgå det, så når man submitter skrive den kun 1 gang til database, selvom man trykker refresh.
Avatar billede coffein Nybegynder
05. juni 2008 - 10:30 #1
Avatar billede jakobdo Ekspert
05. juni 2008 - 10:31 #2
Det man kan gøre, er følgende:

//Delen som behandler data...

//Efter behandling af data, kaldes:
header('Location: din_side.php');
exit();

//Din form...
Avatar billede coffein Nybegynder
05. juni 2008 - 11:27 #3
Den er jeg ikke helt med på.
Koden kommer lige her.

<?
$billede = $_GET[pic];
include("db.php");
$hest = mysql_query("SELECT * FROM photos WHERE billede ='$billede'") or die(mysql_error());
$row = mysql_fetch_array($hest);
$alt = $row[alt];
$Id = $row[Id];
$ja = ceil($Id - 1);
$jaj = ceil($Id + 1);

$forrige = mysql_query("SELECT billede FROM photos WHERE Id ='$ja'") or die(mysql_error());
$row = mysql_fetch_array($forrige);
$forrige = $row[billede];

$next = mysql_query("SELECT billede FROM photos WHERE Id ='$jaj'") or die(mysql_error());
$row = mysql_fetch_array($next);
$next = $row[billede];

$g_total = mysql_query("SELECT count(id) FROM photos");
$total = mysql_result($g_total,0) or die(mysql_error());

$max = ceil($total + 1);


?>
<html>
<head>
<title><? echo "$alt"; ?></title>
<meta name="Generator" content="Stone's WebWriter 4">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<? echo "
<center><img src=\"gfx/photos/large/$billede\" border=\"0\" style=\"border: 1px solid #000000;\" alt=\"$alt\">
</center>
";



echo "
<table class='20'>
    <tr>
<td align='left' class='20'>
";
if ( $ja > 0 ) { echo "<a href='photos_vis.php?pic=$forrige' class='gallery1'>Forrige</a></td> "; }
echo"<td align='right' class='20'>";

if ( $jaj < $max ) {
echo"

<a href='photos_vis.php?pic=$next' class='gallery1'>Næste</a></td>
";}
echo"
    </tr>
</table>
";

    $tid = date('d/m/Y H:i:s');
     
    function url2link ($str) {
      $str = preg_replace("/((ht|f)tp:\/\/)[\w.-]+(?(?=\/)[^\s<>]+)/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $str);
      $str = preg_replace("/(?<!http:\/\/)(www\.)[\w.-]+(?(?=\/)[^\s<>]+)/i", "<a href=\"http://\\0\" target=\"_blank\">\\0</a>", $str);
      return $str;
    }
     
    function email2link ($str) {
      return preg_replace("/[\w.-]+@[\w-]+\.[\w.-]+/i", "<a href=\"mailto:\\0\" >\\0</a>", $str);
    }
   

         
     
           
      if($_POST[add_comment])    {
      include("db.php");
   
          $navn = $_POST[navn];
          $mail = $_POST[mail];
          $kommentar = addslashes($_POST[kommentar]);
          $addcomment = mysql_query("insert into kommentarer (billedeid, forfatternavn, forfattermail, kommentar, dato) VALUES ('$billede','$navn','$mail','$kommentar','$tid')");
          }
       
        include("db.php");
        $getcomments = mysql_query("select * from kommentarer where billedeid='$billede'")or die (mysql_error());
      if(mysql_num_rows($getcomments) > 0)    {
        while($row = mysql_fetch_array($getcomments)) {
          $kommentar = stripslashes(nl2br(htmlspecialchars($row[kommentar])));
          $dato = $row[dato];
          $forfatternavn = $row[forfatternavn];       
          $forfattermail = $row[forfattermail];
           
          echo "
<hr size=1 noshade style='color: #000000;'>
<table class='20'>
    <tr>
        <td align='left' class='20'>[<a class='gallery1' href='mailto:".$forfattermail."' title='Send email'>".$forfatternavn."</a>]</td>
        <td align='right' class='20'>".$dato."</td>
    </tr>
</table>
<div align='left'>

$kommentar



          ";

      }
      }    

      else { echo "

Dette billede er endnu ikke kommenteret.<br>Du har chancen for at blive den første."; }

    ?>

    <hr size=1 noshade style="color: #000000;">
    <BR><BR>Tilføj en kommentar:<BR><BR>
    <? echo " <form action=\"?pic=$billede\" method=\"post\"> "; ?><center>
    <table CELLPADDING="0" CELLSPACING="0" class='180'>
      <tr>
      <td width="120px" class="20">
        <input type="hidden" name="id" value="<?=$billede;?>">
        <b>Dit navn:</b>
      </td>
      <td class="20"><input type="text" name="navn" style="width: 225px;" style="border: thin solid;    border-width: 1px; border-color: black;"></td>
      </tr>
      <tr>
      <td class="20"><b>Din e-mail adresse:</b></td>
      <td class="20"><input type="text" name="mail" style="width: 225px;" style="border: thin solid;    border-width: 1px; border-color: black;"></td>
      </tr>
      <tr>
      <td valign="top" class='120'><b>Kommentar:</b></td>
      <td valign="top" class='120'><textarea cols="0" rows="0" name="kommentar" style="width: 225px; height: 100px; border: thin solid;    border-width: 1px; border-color: black;"></textarea></td>
      </tr>
    </table> 
        <input type="submit" name="add_comment" value="Skriv">
        <input type="reset" value="Slet">
    </form>
</center>
    <?PHP
    if($addcomment) {
          echo "<center>Du har nu tilføjet en kommentar.</center>";
            }

  ?>
</div>
</body>
</html>
Avatar billede olebole Juniormester
05. juni 2008 - 15:56 #4
<ole>

Du vil altid rende ind i problemer, når du roder HTML og PHP sammen på den måde. Hold dine PHP-koder foroven i dokumentet - adskilt fra HTML-koden. Det kan du gøre ved at lave PHP-funktioner, som spytter HTML ud - og som du kalder fra de steder i HTML'en, hvor det dynamiske HTML skal indsættes

/mvh
</bole>
Avatar billede coffein Nybegynder
05. juni 2008 - 16:15 #5
Hehe.

Jeg ved godt det ligner lort og ikke til at finde rundt i, men kan du hjælpe mig eller det kan ikke lade sig gøre
Avatar billede olebole Juniormester
05. juni 2008 - 16:20 #6
Du kan ikke bruge den løsning, som er den, man (f.eks. Eksperten) normalt bruger. Det kræver, du laver en bedre kodestruktur
Avatar billede olebole Juniormester
05. juni 2008 - 16:21 #7
NB: Det er kun én af rigtig mange grunde til, at du bør ændre din kodestil  ;o)
Avatar billede jakobdo Ekspert
05. juni 2008 - 17:29 #8
Men en header() efter data er sat ind, bør da kunne løse problemet ???
Avatar billede olebole Juniormester
05. juni 2008 - 20:13 #9
- ja, hvis der ikke var skrevet en masse HTML ud, før insert'en ... men det er der, såvidt jeg kan se, i spørgerens kode  =)
Avatar billede jakobdo Ekspert
05. juni 2008 - 21:07 #10
Ah ja, det havde jeg jo lige glemt.. :o(
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