Gå til innhold

Problemer med html tag i gjestebok..


Anbefalte innlegg

Jeg holder på med en gjestebok og er helt ny i php og mysql osv...Har også tenkt å bruke noe av den samme koden som ett nyhetsscript. Og når har jeg fått laget det slik at når man trykker på knapper så kommer det opp sånn tag koder sånn som det gjør her i HW. Men problemet er at når det blir postet så blir meldingen som står i gjesteboken seende lik ut som det man skriver. Altså det blir ikke bold tekst men bodl taggene med tekst imellom..Koden jeg har nå er veeeeldig uoversiktlig, men her er den da:

<? include ("config.php"); ?>
<?php
if((isset($_GET['VisMer']))&&(!empty($_GET['VisMer'])))
{
  //Vis mer her! :)
}
?>
<?php
  $query = "select * from nyheter order by id desc";
  $result = mysql_query($query);
  if(!mysql_num_rows($result))
     print("Ingen nyheter er lagt til.");

  else
  {
     while($row = mysql_fetch_array($result))
     {
        print("
           <table width=\"100%\" cellpadding=\"2\" cellspacing=\"0\">
              <tr>
                 <td>" . $row["overskrift"] . " - " . date("d.m.Y - H:i:s",$row["tidspunkt"]) . "</td>
              </tr>
              <tr>
                 <td>" . nl2br($row["tekst"]) . "</td>
              </tr>
           </table>
           <hr />
        ");
     }
  }
?> 
<?php
if((isset($_GET['VisMer']))&&(!empty($_GET['VisMer'])))
{
  //Vis mer her! :)
}
?>
<?php


  # Funksjon som skriver ut $errarr variabelen i form av en liste
  function errarr($array)
  {
     if(count($array))
     {
        print("<ul>");
        for($i = 0;$i < count($array);$i++)
           print("<li>" . $array[$i] . "</li>");
        print("</ul>");
     }
  }

  if(isset($_POST["submit"]))
  {
     # Opprette et array som beskjeder kan lagres i
     $errarr = array();

     if($_POST["overskrift"] == "" || $_POST["message"] == "")
        array_push($errarr,"Du må fylle ut begge feltene.");

     # Ingen feil har skjedd. Sett inn nyhet i databasen
     if(!count($errarr))
     {
        $query = "insert into nyheter(
           overskrift,
           tekst,
           tidspunkt
        ) values(
           '" . $_POST["overskrift"] . "',
           '" . $_POST["message"] . "',
           '" . time() . "'
        )";

        if(!@mysql_query($query))
           array_push($errarr,"Et eller annet gikk galt. Nyheten ble ikke lagt til. Feilmeldingen fra mysql er: " . mysql_error());

        else
           array_push($errarr,"Nyheten ble lagt til.");
     }
  }
?>
<html>
  <head>
     <title>Nyhetsform</title>
  </head>
  <body>
  
     <?php errarr($errarr); ?>
<?php
function hyperlink(&$text)
{
  // match protocol://address/path/
  $text = ereg_replace("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);

  // match www.something
  $text = ereg_replace("(^| )(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\">\\2</a>", $text);
}
?>
<script language="JavaScript" type="text/javascript">
<!--
// bbCode control by
// subBlue design
// www.subBlue.com

// Startup variables
var imageTag = false;
var theSelection = false;

// Check for Browser & Platform for PC & IE specific bits
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);

// Define the bbCode tags
bbcode = new Array();
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[//code]','[list]','[/list]','[list=]','[/list]','[img=',']','[url]','[/url]');
imageTag = false;

// Replacement for arrayname.length property
function getarraysize(thearray) {
for (i = 0; i < thearray.length; i++) {
if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))
return i;
}
return thearray.length;
}

// Replacement for arrayname.push(value) not implemented in IE until version 5.5
// Appends element to the array
function arraypush(thearray,value) {
thearray[ getarraysize(thearray) ] = value;
}

// Replacement for arrayname.pop() not implemented in IE until version 5.5
// Removes and returns the last element of an array
function arraypop(thearray) {
thearraysize = getarraysize(thearray);
retval = thearray[thearraysize - 1];
delete thearray[thearraysize - 1];
return retval;
}
function bbstyle(bbnumber) {
var txtarea = document.post.message;

txtarea.focus();
donotinsert = false;
theSelection = false;
bblast = 0;

if (bbnumber == -1) { // Close all open tags & default button names
while (bbcode[0]) {
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
imageTag = false; // All tags are closed including image tags :D
txtarea.focus();
return;
}

if ((clientVer >= 4) && is_ie && is_win)
{
theSelection = document.selection.createRange().text; // Get text selection
if (theSelection) {
// Add tags around selection
document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
txtarea.focus();
theSelection = '';
return;
}
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
return;
}

// Find last occurance of an open tag the same as the one just clicked
for (i = 0; i < bbcode.length; i++) {
if (bbcode[i] == bbnumber+1) {
bblast = i;
donotinsert = true;
}
}

if (donotinsert) { // Close all open tags up to the one just clicked & default button names
while (bbcode[bblast]) {
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
imageTag = false;
}
txtarea.focus();
return;
} else { // Open tags

if (imageTag && (bbnumber != 14)) { // Close image tag before adding another
txtarea.value += bbtags[15];
lastValue = arraypop(bbcode) - 1; // Remove the close image tag from the list
document.post.addbbcode14.value = "Img"; // Return button back to normal state
imageTag = false;
}

// Open tag
txtarea.value += bbtags[bbnumber];
if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
txtarea.focus();
return;
}
storeCaret(txtarea);
}

// From http://www.massless.org/mozedit/
function mozWrap(txtarea, open, close)
{
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
if (selEnd == 1 || selEnd == 2)
selEnd = selLength;

var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + open + s2 + close + s3;
return;
}

function storeCaret(textEl) {
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}

//-->
</script>
     <form action="<?php print($_SERVER["PHP_SELF"]); ?>" form name="post" method="post">
  
       <p>
 <input type="button" name="addbbcode0" value=" B " style="font-weight:bold; width: 30px" onClick="bbstyle(0)" />
 <input type="button" name="addbbcode2" value=" i " style="font-style:italic; width: 30px" onClick="bbstyle(2)" />
 <input type="button" name="addbbcode4" value=" u " style="text-decoration: underline; width: 30px" onClick="bbstyle(4)" />
 <input type="button" name="addbbcode6" value="Quote" style="width: 50px" onClick="bbstyle(6)" />
 <input type="button" name="addbbcode8" value="Code" style="width: 40px" onClick="bbstyle(8)" />
 <input type="button" name="addbbcode10" value="List" style="width: 40px" onClick="bbstyle(10)" />
 <input type="button" name="addbbcode12" value="List=" style="width: 40px" onClick="bbstyle(12)" />
 <input type="button" name="addbbcode14" value="Img" style="width: 40px" onClick="bbstyle(14)" />
 <input type="button" name="addbbcode16" value="URL" style="text-decoration: underline; width: 40px" onClick="bbstyle(16)" />
 <a href="javascript:bbstyle(-1)" class="genmed">Lukk Tagger</a></p>
       <p>
         <input name="overskrift" type="text" class="post" id="overskrift" style="width:450px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" value="Ditt Navn" size="35">
         <br />
         <textarea name="message" cols="35" rows="10" wrap="PHYSICAL" class="post" style="width:450px" tabindex="3" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);">Melding</textarea>
       </p>
       </p>
       <input type="submit" name="submit" value="Legg til" />        
       <p align="left">        
       <h3></h3>                        </p></td>
           </tr>
        </table>
     </form>

 

Jeg har fått til å lage slikt at jeg kan slette poster fra ett admin panel. Men så lurer jeg også på om dere vet en lett script for å redigere innleggene også?

 

Takk for alle svar! :)

Endret av oblomsoe
Lenke til kommentar
Videoannonse
Annonse

Takk for svar! Hm..tror jeg skjønte det meste av det dær, men som sagt så er jeg ny i php:P Så vilken script skal jeg legge inn at skal skje når jeg trykker på submit knappen? Og noen som har svar på det andre spørsmålet mitt? takk

 

Edit: Og gjerne slik at alle innlegg vises i en sånn dropp greia så velger jeg en av de som jeg kan endre på hvis det er mulig...

Endret av oblomsoe
Lenke til kommentar

Takk. Lurte også litt på å bruk den dær som en nyhetsscript. Her er koden jeg har i adminpanelet dær jeg legger inn nyheter:

<? include ("config.php"); ?>
<?php
if((isset($_GET['VisMer']))&&(!empty($_GET['VisMer'])))
{
  //Vis mer her! :)
}
?>
<?php


  # Funksjon som skriver ut $errarr variabelen i form av en liste
  function errarr($array)
  {
     if(count($array))
     {
        print("<ul>");
        for($i = 0;$i < count($array);$i++)
           print("<li>" . $array[$i] . "</li>");
        print("</ul>");
     }
  }

  if(isset($_POST["submit"]))
  {
     # Opprette et array som beskjeder kan lagres i
     $errarr = array();

     if($_POST["overskrift"] == "" || $_POST["tekst"] == "")
        array_push($errarr,"Du må fylle ut begge feltene.");

     # Ingen feil har skjedd. Sett inn nyhet i databasen
     if(!count($errarr))
     {
        $query = "insert into nyheter(
           overskrift,
           tekst,
           tidspunkt
        ) values(
           '" . $_POST["overskrift"] . "',
           '" . $_POST["tekst"] . "',
           '" . time() . "'
        )";

        if(!@mysql_query($query))
           array_push($errarr,"Et eller annet gikk galt. Nyheten ble ikke lagt til. Feilmeldingen fra mysql er: " . mysql_error());

        else
           array_push($errarr,"Nyheten ble lagt til.");
     }
  }
?>
<html>
  <head>
     <title>Nyhetsform</title>
  </head>
  <body>
  
     <?php errarr($errarr); ?>
<?php
function hyperlink(&$text)
{
  // match protocol://address/path/
  $text = ereg_replace("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\">\\0</a>", $text);

  // match www.something
  $text = ereg_replace("(^| )(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\">\\2</a>", $text);
}
?>
     <form action="<?php print($_SERVER["PHP_SELF"]); ?>" method="post">
  
        <table cellpadding="2" cellspacing="0">
           <tr>
              <td>Overskrift</td>
              <td><input type="text" name="overskrift" maxlength="255" /></td>
           </tr>
           <tr>
              <td>Tekst</td>
              <td><textarea name="tekst" rows="8" cols="30"></textarea></td>
           </tr>
           <tr>
              <td colspan="2" align="center">
                 <p>
                   <input type="submit" name="submit" value="Legg til" />
                </p>
                 <p align="left">                  
                 <h3></h3>                        </p></td>
           </tr>
        </table>
     </form>

  </body>
</html>

 

Og her er koden som jeg bruker der nyhetene skal ligge:

<?php
if((isset($_GET['VisMer']))&&(!empty($_GET['VisMer'])))
{
  //Vis mer her! :)
}
?>
<?php
  $query = "select * from nyheter order by id desc";
  $result = mysql_query($query);
  if(!mysql_num_rows($result))
     print("Ingen nyheter er lagt til.");

  else
  {
     while($row = mysql_fetch_array($result))
     {
        print("
           <table width=\"100%\" cellpadding=\"2\" cellspacing=\"0\">
              <tr>
                 <td>" . $row["overskrift"] . " - " . date("d.m.Y - H:i:s",$row["tidspunkt"]) . "</td>
              </tr>
              <tr>
                 <td>" . nl2br($row["tekst"]) . "</td>
              </tr>
           </table>
           <hr />
        ");
     }
  }
?> 

 

Også lurte jeg på hva jeg skulle legge inn på de dær for at feks bare de 5 første poster ble vist og en link hvor det evt. sto Arkiv elns som man kan trykke på for å se de 5 neste osv...Og at det bare vistes litt av hver nyhet og at man måtte trykke på en Les mer knapp for å lese alt hvis det er mulig? Takk.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...