Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 13:58 Der er 20 kommentarer og
1 løsning

servlet (problem med vinduer)

Hej Eksperter

Hej har en klasse som jeg bruger til at editerer i min database

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Editpage extends HttpServlet
    {
      // doPost is used to alter the content on the edit page
        public void doPost (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
       
        PrintWriter        out;
          String page = request.getParameter("page");
             
                   
          System.out.println(page);
          if (page == null) {
              page = "start";
          }
   
          out = response.getWriter();
       
        response.setContentType("text/html");
           
        Databaseforbindelsemysql d = new Databaseforbindelsemysql("jdbc:mysql://URL/DB?user=USER&password=PASS","org.gjt.mm.mysql.Driver");
         
          try {
          ResultSet rs = d.select("SELECT content,content1 FROM pages WHERE name = '"+page+"'");
         
        if (rs.next())
          {
              String content  = rs.getString("content");
              String content1  = rs.getString("content1");
             
              out.println("<HTML><HEAD><TITLE></TITLE>");
            out.println("<link rel='stylesheet' type='text/css' href='../style/styles.css'>");
            out.println("<style type='text/css'>");
            out.println("body{ margin: 80px,0px,0px,0px;}");
            out.println("</style>");
            out.println("</head>");
           
            out.println("<body onload='self.focus();' bgcolor='#000000'>");
            out.println("<center>");
            out.println("<table border='1' style='width:700px;' cellpadding=0' cellspacing='0'><tr style='height:30px;'><td>");
            out.println("<form method='post' name='editpage' action='Editpage' style='display:inline;'>");
            out.println("<select name='page' onChange='document.editpage.submit();'>");
            out.println("<option value='start' "+(page.equals("start")?"Selected":"")+">Start");
            out.println("<option value='news' "+(page.equals("news")?"Selected":"")+">News");
            out.println("<option value='mrtls' "+(page.equals("mrtls")?"Selected":"")+">the Mrtls");
            out.println("<option value='credit' "+(page.equals("credit")?"Selected":"")+">Credit");
            out.println("<option value='contact' "+(page.equals("contact")?"Selected":"")+">Contact");       
            out.println("</select>");
            out.println("</form>");
            out.println("</td></tr>");
           
                if(page.equals("news")){
                ResultSet rsnews = d.select("SELECT * FROM news ORDER BY id DESC");
               
                    out.println("<tr><td>");
                    //,'newentry', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,height=400,width=750,top=150,left=100,screenY=150,screenX=100')\"
                    out.println("<input type='button' class='button1' value='New entry' onclick=\"window.open('../index/editnews.html')\">");
                    out.println("<table border='1' style='width:100%;' cellpaddig='0' cellspacing='0'>");
                                   
                    while(rsnews.next()) {
               
                    int    id  = rsnews.getInt(1);
                    String date = rsnews.getString(2).replaceAll("\n","<BR>");
                    String news = rsnews.getString(3).replaceAll("\n","<BR>");;
                   
                    out.println("<tr><td class='celltext' style='width:30%;'>");
                      out.println(date);
                    out.println("</td><td class='celltext' style='width:60%;'>");
                    out.println(news);
                    out.println("</td><td style='width:10%;vertical-align:top;text-align:right;'>");
                    out.println("<form method='post' name='delnews"+id+"' action='Edit' style='display:inline;'>");
                    out.println("<input type='hidden' name='page' value='news'>");
                    out.println("<input type='hidden' name='newsid' value='"+id+"'>");
                    out.println("<input type='hidden' name='doedit' value='delete'>");
                    out.println("<input type='button' class='button1' name='delete' value='Delete' onClick='document.delnews"+id+".submit();'>");
                    out.println("</form>");
                    out.println("</td></tr>");
                    }
                   
                    out.println("</table>");
                                   
                }
                else
                {
                out.println("<tr><td>");
                out.println("<form method='post' name='form' action='Edit' style='display:inline;'>");
                out.println("<table border='0' cellspacing='0' cellpadding='0'><tr><td>");
                out.println("<input type='hidden' name='page' value='"+page+"'>");
                out.println("<textarea name='content' cols='42' rows='13'>");
                out.println(content);
                out.println("</textarea>");
                out.println("</td><td>");
                out.println("<input type='hidden' name='page' value='"+page+"'>");
                out.println("<textarea name='content1' cols='42' rows='13'>");
                out.println(content1);
                out.println("</textarea>");
                out.println("</td></tr></table>");
                out.println("<input type='submit' class='button1' name='Update' value='Update'>");
                out.println("</form>");
               
        }
        out.println("</td></tr></table>");
        out.println("</center>");
        out.println("</BODY></HTML>");
        }
       
        else
        {
        System.out.println("No records in resultset");
        }
       
        } catch (SQLException s) {
                out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
   
        out.close();
        d.close();
        }
   
       
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
        }
}

Mit problem er at hvis page=news, så skal der komme en knap som henviser til en form hvor man kan skrive news ind. Tingen er bare at jeg så åbner et nyt vindue. Det vil jeg gerne undgå.

Hvis jeg ikke er præcis nok i min beskrivelse af problemet kan give URL'en så I kan se det :-)
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:03 #1
Formen som jeg bruger ser sådan ud

<html>
<head>
<style type="text/css">
body {
background-color: #555555;
margin:0,10,10,10;
}

</style>
</head>

<body onload='self.focus();'>
<p align='center'>Edit news</p>

<FORM METHOD='POST' NAME='FORM' ACTION='../servlet/Edit'>
<input type='hidden' name='page' value='news'>
<input type='hidden' name='doedit' value='newentry'>

<table border='0' cellpadding='0' cellspacing='0'>
<tr>
<tr><td>Date</td><td><input type='text' name='date' value='' size='20'></td></tr>
<tr><td>News</td><td><textarea name='news' cols='42' rows='13'></textarea></td></tr>
<tr><td><input type='submit' class='button1' value='Submit'></td></tr>
</form>

</table>
</body>
</html>
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:05 #2
og delen i Edit klassen som jeg bruger ser således ud

else if (page.equals("news") && doedit.equals("newentry")){
             
              d.insertUpdate("INSERT INTO news (datee,news) VALUES ('"+date+"','"+news+"')");
             
              System.out.println(date+news);
              out.println("<HTML><body onload='document.shownews.submit();'>");
            out.println("<form method='post' name='shownews' action='Editpage'>");
            out.println("<input type='hidden' name='page' value='news'>");
            out.println("</form>");
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:06 #3
Jeg forstår godt hvorfor det sker, men jeg kan ikke se hvordan jeg undgår det
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:16 #4
Kan jeg på en eller anden måde give den side jeg åbner med Editpage et ID som jeg kan henvise til?
Avatar billede jakoba Nybegynder
17. januar 2003 - 14:17 #5
din onclick her siger jo netop at der skal åbnes et nyt vindue når der klikkes på den knap:
out.println("<input type='button' class='button1' value='New entry' onclick=\"window.open('../index/editnews.html')\">");

du kan evt undgå det ved at angive et rammenavn på den ramme (eller det vindue) edit-siden skal åbnes i:

out.println("<input type='button' class='button1' value='New entry' onclick=\"window.open('../index/editnews.html','dinIndholdsRamme')\">");
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:27 #6
Det kan jeg altså ikke rigtigt se hvordan jeg slipper afsted med
Avatar billede arne_v Ekspert
17. januar 2003 - 14:28 #7
Spørgsmålet er reelt i HTML/JavaScript og ikke i Java/servlet.
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:29 #8
Jo hvis jeg nu bare ligger formen ind i Editpage. Det prøver jeg lige ;-)
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:39 #9
Det virker jo ikke rigtigt :-( Det skal jo være sådan at formen kommer frem når man trykker på knappen. Hvis jeg ligger den ind i EditPage vil den jo være der hele tiden.

Hvis I har tid/lyst kan I se problemet her

http://www.web-oasen.dk/mortallovetest/adm

user: adm
pass: adm

vælg news
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 14:41 #10
Jeg håber I har en ide til hvordan jeg løser det :-)
Avatar billede jakoba Nybegynder
17. januar 2003 - 14:51 #11
Desværre, jeg forstår ikke din ønskede sekvens af hændelser og funktionalitet godt nok til forslå noget.

Kan du evt beskrive mere udførligt.
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 18:27 #12
Jeg kan prøve :-). Jeg bruger Editpage.java til vise indholdet af en given side, med mulighed for at ændre det. F.eks hvis man vælger start så kalder siden sig selv og page er lig start, med det rigtige DB kald

ResultSet rs = d.select("SELECT content,content1 FROM pages WHERE name = '"+page+"'");

Det virker også efter hensigten. Sagen er bare den at når man så vælger news skal den så finde de news som der er, og vise en knap som giver mulighed for at oprette en ny. Det er her det kikser for mig for hvis jeg skal vise en form er jeg vel nød til at vise den i et andet vindue og når jeg så submitter den bliver den vist i det "forkerte" vindue.
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 18:31 #13
Jeg vil have den til at åbne i det vindue som den allerede er i
Avatar billede jakoba Nybegynder
17. januar 2003 - 18:35 #14
out.println("<input type='button' class='button1' value='New entry' onclick=\"self.location.href='../index/editnews.html';\">");
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 18:40 #15
Perfekt. Hvad kan jeg sige. Du styrer for vildt
Avatar billede jakoba Nybegynder
17. januar 2003 - 18:42 #16
takker. men hør også lige efter arne_v. det var ikke et java-spørgsmål det her :-)
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 18:51 #17
Kan jeg flytte det over i en anden kategori?
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 18:54 #18
for I har naturligvis ret i at det er irriterende at der bliver stillet spørgsmål i de forkerte kategorier. I det her tilfælde var det mest fordi det var en servlet jeg sad og arbejdede på, men jeg lkan da godt se at det er JS
Avatar billede arne_v Ekspert
17. januar 2003 - 19:11 #19
Mit standard råd, når i et tilfællde som dette er, at
åbne siden i browseren, view source og copy paste den
over i et spørgsmå i HTML eller JavaScript kategorien.
Der kan de så svare på det uden at blive forvirret over
out.println - og du skal bare kliste løsningen ind i
din servlet.

Nu har du jo fået løsningen, så jeg synes bare at du skal give
Jakob hans velfortjente point.
Avatar billede mikmakmuk Nybegynder
17. januar 2003 - 19:27 #20
med største fornøjelse, men så skal Jacob lige lægge et svar :-)
Avatar billede jakoba Nybegynder
17. januar 2003 - 19:36 #21
ups. sorry
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