Avatar billede cardinale Nybegynder
16. oktober 2002 - 16:26 Der er 3 kommentarer og
1 løsning

Puha!

Jeg sidder med en WYSIWYG-editor der skal skrive til min SQL2000 server. Og det går også fint - men ved tryk på submit skal siden vises i HTML og det gør den ikke.
Den skriver til DB og det hele som den skal men den viser ikke det indtastede.

Browseren brokker sig over følgende linje:
objRS.Open "select * from newsAuthors order by name asc"

Den siger:
Error Type:
ADODB.Recordset (0x800A0E7D)
The connection cannot be used to perform this operation. It is either closed or invalid in this context.

Håber der er nogen derude der kan hjælpe.

/Woo

Her er hele koden...

<!-- #INCLUDE file="db.asp" -->
<%
dim objConn
dim objRS
set objConn = Server.CreateObject("ADODB.Connection")
set objRS = Server.CreateObject("ADODB.Recordset")

objConn.Open dbConnString
objRS.ActiveConnection = objConn

dim action
action = Request.Form("action")

if action = "addNews" then
addNews()
else
showNewsForm()
end if

sub showNewsForm()

%>

<%

end sub

sub addNews()

dim author
dim title
dim topics
dim newsPost

author = Request.Form("author")
title = Replace(Request.Form("title"), "'", "''")
topics = Request.Form("topics")
newsPost = Replace(Request.Form("newsPost"), "'", "''")

objConn.Execute "insert into newsPosts(title,topics,newsPost,authorId) values('" & title & "', '" & topics & "','" & newsPost & "'," & author & ")"

Response.Write "<b>New news post added OK, here's what you added:<br><br></b>"
Response.Write Request.Form("newsPost")

objConn.Close
set objConn = nothing

end sub

%>


<html>
<head>
<title> Browser Based HTML Editor </title>
<form onSubmit="return ProcessNews()" name="frmNews" action="newsposts.asp" method="post">
<input type="hidden" name="action" value="addNews">
<input type="hidden" name="newsPost" value="">
<table width="415px" height="30px" border="0" cellspacing="0" cellpadding="0" bgcolor="#D6D3CE">
<tr>
<td width="10%" height="30" class="title" colspan="2">
<h2>&nbsp;Add News Post</h2>
</td>
</tr>

<tr>
<td width="20%" height="22" class="title">
<p style="margin-left:5">
Author:
</p>
</td>
<td width="80%" height="22" class="title">
<select name="author" style="width:335px">
<option value="NULL" checked>-- Select an Author --</option>

<%

objRS.Open "select * from newsAuthors order by name asc"

while not objRS.EOF
Response.Write "<option value='" & objRS("authorId") & "'>"
Response.Write objRS("name") & "</option>"
objRS.MoveNext
wend

%>


</select>
</td>
</tr>
<tr>
<td width="20%" height="22" class="title">
<p style="margin-left:5">
Title:
</p>
</td>
<td width="80%">
<input type="text" name="title" maxlength="50" style="width:335px">
</td>
</tr>
<tr>
<td width="20%" height="22" class="title">
<p style="margin-left:5">
Topic(s):
</p>
</td>
<td width="80%" height="22">
<select name="topics" style="width:335px" multiple size="5">

<%

objRS.Close
objRS.Open "select * from newsTopics order by topic asc"

while not objRS.EOF
Response.Write "<option value='" & objRS("topicId") & "'>"
Response.Write objRS("topic") & "</option>"
objRS.MoveNext
wend

%>

</select>
</td>
</tr>
<tr>
<td width="10%" height="22" colspan="2">
<hr width="98%" size="1" noshade color="gray">
</td>
</tr>
</table>


<script language="JavaScript">

  var viewMode = 1; // WYSIWYG

  function Init()
  {
    iView.document.designMode = 'On';
  }
 
  function selOn(ctrl)
  {
    ctrl.style.borderColor = '#000000';
    ctrl.style.backgroundColor = '#B5BED6';
    ctrl.style.cursor = 'hand';   
  }
 
  function selOff(ctrl)
  {
    ctrl.style.borderColor = '#D6D3CE'; 
    ctrl.style.backgroundColor = '#D6D3CE';
  }
 
  function selDown(ctrl)
  {
    ctrl.style.backgroundColor = '#8492B5';
  }
 
  function selUp(ctrl)
  {
    ctrl.style.backgroundColor = '#B5BED6';
  }
   
  function doBold()
  {
    iView.document.execCommand('bold', false, null);
  }

  function doItalic()
  {
    iView.document.execCommand('italic', false, null);
  }

  function doUnderline()
  {
    iView.document.execCommand('underline', false, null);
  }
 
  function doLeft()
  {
    iView.document.execCommand('justifyleft', false, null);
  }

  function doCenter()
  {
    iView.document.execCommand('justifycenter', false, null);
  }

  function doRight()
  {
    iView.document.execCommand('justifyright', false, null);
  }

  function doOrdList()
  {
    iView.document.execCommand('insertorderedlist', false, null);
  }

  function doBulList()
  {
    iView.document.execCommand('insertunorderedlist', false, null);
  }
 
  function doForeCol()
  {
    var fCol = prompt('Enter foreground color', '');
   
    if(fCol != null)
      iView.document.execCommand('forecolor', false, fCol);
  }

  function doBackCol()
  {
    var bCol = prompt('Enter background color', '');
   
    if(bCol != null)
      iView.document.execCommand('backcolor', false, bCol);
  }

  function doLink()
  {
    iView.document.execCommand('createlink');
  }
 
  function doImage()
  {
    var imgSrc = prompt('Enter image location', '');
   
    if(imgSrc != null)   
    iView.document.execCommand('insertimage', false, imgSrc);
  }
 
  function doRule()
  {
    iView.document.execCommand('inserthorizontalrule', false, null);
  }
 
  function doFont(fName)
  {
    if(fName != '')
      iView.document.execCommand('fontname', false, fName);
  }
 
  function doSize(fSize)
  {
    if(fSize != '')
      iView.document.execCommand('fontsize', false, fSize);
  }
 
  function doHead(hType)
  {
    if(hType != '')
    {
      iView.document.execCommand('formatblock', false, hType); 
      doFont(selFont.options[selFont.selectedIndex].value);
    }
  }
 
  function doToggleView()
  { 
    if(viewMode == 1)
    {
      iHTML = iView.document.body.innerHTML;
      iView.document.body.innerText = iHTML;
     
      // Hide all controls
      tblCtrls.style.display = 'none';
      selFont.style.display = 'none';
      selSize.style.display = 'none';
      selHeading.style.display = 'none';
      iView.focus();
     
      viewMode = 2; // Code
    }
    else
    {
      iText = iView.document.body.innerText;
      iView.document.body.innerHTML = iText;
     
      // Show all controls
      tblCtrls.style.display = 'inline';
      selFont.style.display = 'inline';
      selSize.style.display = 'inline';
      selHeading.style.display = 'inline';
      iView.focus();
     
      viewMode = 1; // WYSIWYG
    }
  }

function ProcessNews()
{
// Assign the HTML code to a hidden form variable
var htmlCode = iView.document.body.innerHTML;
document.frmNews.newsPost.value = htmlCode;

// Make sure that all fields are completed
if(document.frmNews.author.selectedIndex == 0)
{
alert('Please select an author for this news post.');
document.frmNews.author.focus();
return false;
}

if(document.frmNews.title.value == '')
{
alert('This news post must contain a title.');
document.frmNews.title.focus();
return false;
}

if(document.frmNews.topics.selectedIndex == -1)
{
alert('Please select a topic for this news post.');
document.frmNews.topics.focus();
return false;
}

if(document.frmNews.newsPost.value == '')
{
alert('Please enter some content for this news post.');
iView.focus();
return false;
}

return true;
}



</script>
<style>

  .butClass
  {   
    border: 1px solid;
    border-color: #D6D3CE;
  }
 
  .tdClass
  {
    padding-left: 3px;
    padding-top:3px;
  }

</style>

<body onLoad="Init()">
    <table id="tblCtrls" width="415px" height="30px" border="0" cellspacing="0" cellpadding="0" bgcolor="#D6D3CE">   
    <tr>
        <td class="tdClass">
            <img alt="Bold" class="butClass" src="bold.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doBold()">
            <img alt="Italic" class="butClass" src="italic.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doItalic()">
            <img alt="Underline" class="butClass" src="underline.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doUnderline()">
           
            <img alt="Left" class="butClass" src="left.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doLeft()">
            <img alt="Center" class="butClass" src="center.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doCenter()">
            <img alt="Right" class="butClass" src="right.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doRight()">
                       
            <img alt="Ordered List" class="butClass" src="ordlist.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doOrdList()">
            <img alt="Bulleted List" class="butClass" src="bullist.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doBulList()">
           
            <img alt="Text Color" class="butClass" src="forecol.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doForeCol()">
            <img alt="Background Color" class="butClass" src="bgcol.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doBackCol()">
           
            <img alt="Hyperlink" class="butClass" src="link.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doLink()">
            <img alt="Image" class="butClass" src="image.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doImage()">
            <img alt="Horizontal Rule" class="butClass" src="rule.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doRule()">
           
        </td>
    </tr>
    </table>
    <iframe id="iView" style="width: 415px; height:205px"></iframe>

    <table width="415px" height="30px" border="0" cellspacing="0" cellpadding="0" bgcolor="#D6D3CE">   
    <tr>
        <td class="tdClass" colspan="1" width="80%">
          <select name="selFont" onChange="doFont(this.options[this.selectedIndex].value)">
            <option value="">-- Font --</option>
            <option value="Arial">Arial</option>
            <option value="Courier">Courier</option>
            <option value="Sans Serif">Sans Serif</option>
            <option value="Tahoma">Tahoma</option>
            <option value="Verdana">Verdana</option>
            <option value="Wingdings">Wingdings</option>
          </select>
          <select name="selSize" onChange="doSize(this.options[this.selectedIndex].value)">
            <option value="">-- Size --</option>
            <option value="1">Very Small</option>
            <option value="2">Small</option>
            <option value="3">Medium</option>
            <option value="4">Large</option>
            <option value="5">Larger</option>
            <option value="6">Very Large</option>
          </select>
          <select name="selHeading" onChange="doHead(this.options[this.selectedIndex].value)">
            <option value="">-- Heading --</option>
            <option value="Heading 1">H1</option>
            <option value="Heading 2">H2</option>
            <option value="Heading 3">H3</option>
            <option value="Heading 4">H4</option>
            <option value="Heading 5">H5</option>
            <option value="Heading 6">H6</option>
          </select>
        </td>
        <td class="tdClass" colspan="1" width="20%" align="right">
          <img alt="Toggle Mode" class="butClass" src="mode.gif" onMouseOver="selOn(this)" onMouseOut="selOff(this)" onMouseDown="selDown(this)" onMouseUp="selUp(this)" onClick="doToggleView()">
          &nbsp;&nbsp;&nbsp;
        </td>
    </tr>
    </table>
<table width="415px" height="30px" border="0" cellspacing="0" cellpadding="0" bgcolor="#D6D3CE">
<tr>
<td width="10%" height="50" class="title" colspan="2">
<input type="submit" name="submit" style="width: 415px" value="Add News Post >>">
</td>
</tr>
</table>
</form>
</body>
</html>
Avatar billede eagleeye Praktikant
16. oktober 2002 - 16:39 #1
prøv at fjerne disse to linier fra din function addNew

og lig den ned i bunden af filen efter </html> sådan her:

<%
objConn.Close
set objConn = nothing
%>
Avatar billede eagleeye Praktikant
16. oktober 2002 - 16:42 #2
det er disse to linier som skal fjerne hvis det ikke fremgår så tydeligt i mit svar:

objConn.Close
set objConn = nothing


Det ser ud som om fejlen vil komme når siden skal vises efter addNew er blevet kaldt da connection i addNew bliver lukket.
Avatar billede cardinale Nybegynder
16. oktober 2002 - 17:26 #3
Hmm - den viser godt nok siden - og det var hvad jeg spurgte om - men den viser også WYSIWYG-editoren. Hvorfor det? Kan man ikke fjerne den, når den nye side med den genererede kode vises?

/Woo
Avatar billede cardinale Nybegynder
16. oktober 2002 - 17:32 #4
Nm - har fundet ud af det!
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
Kurser inden for grundlæggende programmering

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