Avatar billede bodhisatva Nybegynder
17. maj 2002 - 11:04 Der er 31 kommentarer og
1 løsning

<br> ved getString() fra MySql

Jeg har en form hvor der findes flere <textarea> og ved submit får jeg også flere linier og afsnit med text i databasen, men ved kald af databasen for at få vist resultater, får jeg ikke linieskift vist.

<%@page language="java" import="java.sql.*,java.util.*" session="true" errorPage="MyError.jsp" isErrorPage="false" %>
<HTML>
  <HEAD>
    <TITLE>guestbookinfo.jsp</TITLE>
   
  </HEAD>

<link rel="stylesheet" href="css.css" type="text/css">
 
  <BODY>
  <center><h1>Rapporter i databasen</H1></CENTER>
<%
Class.forName("org.gjt.mm.mysql.Driver");
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost/guestbook","","");
Statement stmt = myConn.createStatement();
ResultSet myResultSet = stmt.executeQuery("select * from guestbook");
if(myResultSet !=null)
{
while(myResultSet.next())
{

String Navn = myResultSet.getString("Navn");
String Email = myResultSet.getString("Email");
String Url = myResultSet.getString("Url");
String Overskrift = myResultSet.getString("Overskrift");
String Kommentar = myResultSet.getString("Kommentar");
%>

<table border="0">
<tr>
    <td width="10%" align="left">Navn</td><br>
    <td width="60%" align="left"><%= Navn %></td>
</tr>
<tr>
    <td width="10%" align="left">Email</td>
      <td width="60%" align="left"><%= Email %></td>
</tr>
<tr>
    <td width="10%" align="left">Url</td>
      <td width="60%" align="left"><%= Url %> </td>
</tr>
<tr>
    <td width="10%" align="left">Overskrift</td>
      <td width="60%" align="left"><%= Overskrift %></td>
</tr>
<tr>   
<td width="10%" align="left">Kommentar</td><br>
<td width="60%" align="left">  <%= Kommentar %></td>
</tr>
<tr>   
<br><br>
<hr width="100%" size="2">
<%
}
}
stmt.close();
myConn.close();
%>
</table>
</BODY>
</HTML>
Avatar billede disky Nybegynder
17. maj 2002 - 11:34 #1
inden du gemmer det i databasen skal du udskifte
\n med <br>

Altså linieskift skal udskiftes med <br>
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 12:01 #2
Hvordan checker man om en char og dens makker er \n ?
Avatar billede disky Nybegynder
17. maj 2002 - 12:29 #3
Hvis du har en String der hedde text så siger du:

StringBuffer out=new StringBuffer();
int length=text.length();
char tmp;
for(int x=0;x<length;x++)
{
tmp=text.charAt(x);
if(tmp.charAt(x)=='\n')
{
  out.append("<br>");
}
else
{
  out.append(tmp);
}
}

Noget i den retning
Avatar billede bodhisatva Nybegynder
17. maj 2002 - 12:38 #4
kan man evt. bruge:

<td width="10%" align="left">Kommentar</td><br>
<td width="60%" align="left">  <%= Kommentar.length() %></td>

---> for at få hele strengen med, eller hvordan?
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 12:47 #5
Jeg synes ikke den virker Disky. kan man identificer \n bare ved at sammenligne strengen?
den kommer jo fra et textarea så den er lige igennem HTML før den kommer til java er der ikke en forskel så?
Avatar billede disky Nybegynder
17. maj 2002 - 13:14 #6
bodhisatva: det gør ingen forskel

tmomas_yde:
Der var en lille fejl.

det skal være text.charAt(x) ikke tmp.charAt(x)

Se dette eksempel som virker:
/*
* LavBR.java
*
* Created on 17. maj 2002, 13:11
*/

/**
*
* @author  thygesen
* @version
*/
public class LavBR
{
   
    public String filtrer(String text)
    {
        StringBuffer out=new StringBuffer();
        int length=text.length();
        char tmp;
        for(int x=0;x<length;x++)
        {
            tmp=text.charAt(x);
            if(text.charAt(x)=='\n')
            {
                out.append("<br>");
            }
            else
            {
                out.append(tmp);
            }
        }
        return out.toString();
    }
   
    /** Creates new LavBR */
    public LavBR()
    {
        String fraTextArea="Dette\ner\ntest\n\nAf Disky";
        String tilDatabasen=filtrer(fraTextArea);
        System.out.println("Før  = "+fraTextArea);
        System.out.println("efter = "+tilDatabasen);
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new LavBR();
    }
   
}
Avatar billede disky Nybegynder
17. maj 2002 - 13:15 #7
Det metoden gør er at den løber alle karakterer fra textArea igennem, og kopier indholdet over i en ny streng. hvis den møde linieskift (\n) så indsætter den <br> istedet.
Avatar billede bodhisatva Nybegynder
17. maj 2002 - 13:30 #8
det kan da ikke passe der ikke findes en nemmere måde at hente hele indholdet fra cellen i databasen ud inkl. linieskift, uden at skulle kode hver en lille ting. Se nu bare dette "forum" for eksempel. Hver gang der er et indlæg skal man anvende metoden lavBr();
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 13:46 #9
jeps :)
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 13:47 #10
hvad tror du der sker når du laver et spørgsmål her på eksperten :)
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 13:48 #11
Disky hvorfor virker det her ikke?
Den tager kun den første if og så er det om den returner
            if(text.charAt(x)=='<')
            {
                out.append("&lt;");
            }
            if(text.charAt(x)=='>')
            {
                out.append("&gt;");
            }
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 13:59 #12
hvis jeg taster <br> ind så kommer dette ud &lt;<br&gt;
Kan du give mig forklaring :)
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 14:00 #13
det kommer ikke ud på siden men som kildekode.
det eneste den skrive ud er '<'
Avatar billede bodhisatva Nybegynder
17. maj 2002 - 18:31 #14
Ok Disky, hvis jeg bruger din lavBR.class, hvordan implementerer jeg den så?

<td width="10%" align="left">Kommentar</td><br>
<td width="60%" align="left">  <%= Kommentar.lavBR() %></td>


???
Avatar billede thomas_yde Nybegynder
17. maj 2002 - 20:10 #15
lig java filen i web-inf classes
så skal du bare
LavBR lavBr = new LavBR();
String text = lavBr.filtre(dintekst);
så bliver text til din filtrede kommentar
Avatar billede kolzie Nybegynder
18. maj 2002 - 15:47 #16
Undskyld, at det her ikke hører hjemme til dette spm.
Thomas_yde>
Spiller du ikke tilfældigvis fodbold på Roskildes 1.hold (eller har gjort) jeg synes at jeg kan huske dit navn fra en kamp mellem "mit" hold VFF og så Roskilde tilbage i 1.division...
Avatar billede thomas_yde Nybegynder
18. maj 2002 - 20:20 #17
kolzie  nej det er desværre ikke mig :)
Avatar billede kolzie Nybegynder
18. maj 2002 - 22:19 #18
thomas_yde>
Ok, det kan jo også bare være min hukommelse der svigter ;)
Avatar billede thomas_yde Nybegynder
19. maj 2002 - 00:58 #19
Ellers er det bare en anden Thomas Yde. Sådan en findes der nemmerlig :) Jeg har søgt på det, ved ikke om han spiller fodbold.
Avatar billede disky Nybegynder
19. maj 2002 - 14:55 #20
thomas ud fra den kode du har lidt højere oppe kan jeg ikke sige hvad problemmet er, men sæt lige en else foran sidste if, begge kan aldrig være opfyldt samtidigt.

Post lidt mere kode tak.
Avatar billede bodhisatva Nybegynder
20. maj 2002 - 00:54 #21
Disky, jeg skal nok lige have en forklaring på koden i et eksempel, hvis det kan lade sig gøre? Evt. med min egen side som indsat i toppen af denne post.

Var en idé at bruge outputStream() eller lign. istedet? Jeg kender ikke metoden, derfor spørger jeg ...
Avatar billede bodhisatva Nybegynder
20. maj 2002 - 01:30 #22
Ok disky, det virker, og takker mange gange. Dette er svar på mit sidste spørgsmål  v. eksempel:

<%@page language="java" import="java.sql.*,java.util.*, disky.*" session="true" isErrorPage="false" %>
<jsp:useBean id="LavBR" scope="session" class="dss.LavBR">
<HTML>
  <HEAD>
    <TITLE>guestbookinfo.jsp</TITLE>
   
  </HEAD>

<link rel="stylesheet" href="css.css" type="text/css">
 
  <BODY>
  <center><h1>Indlæg i Gæstbogen</H1></CENTER>





  <%
Class.forName("org.gjt.mm.mysql.Driver");
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost/guestbook","","");
Statement stmt = myConn.createStatement();
ResultSet myResultSet = stmt.executeQuery("select * from guestbook");
if(myResultSet !=null)
{
while(myResultSet.next())
{

String Navn = myResultSet.getString("Navn");
String Email = myResultSet.getString("Email");
String Url = myResultSet.getString("Url");
String Overskrift = myResultSet.getString("Overskrift");
String Kommentar = myResultSet.getString("Kommentar");






%>



<table border="0">
<tr>
    <td width="10%" align="left">Navn</td><br>
    <td width="60%" align="left"><%= Navn %></td>
</tr>
<tr>
    <td width="10%" align="left">Email</td>
      <td width="60%" align="left"><%= Email %></td>
</tr>
<tr>
    <td width="10%" align="left">Url</td>
      <td width="60%" align="left"><%= Url %> </td>
</tr>
<tr>
    <td width="10%" align="left">Overskrift</td>
      <td width="60%" align="left"><%= Overskrift %></td>
</tr>
<tr>   
<td width="10%" align="left">Kommentar</td><br>
<td width="60%" align="left">  <%= LavBR.filtrer(Kommentar) %></td>
</tr>
<tr>   


<br><br>

<hr width="100%" size="2">




<%
}
}
stmt.close();
myConn.close();

%>
</table>


 

 
</BODY>
</HTML>
</jsp:useBean>
Avatar billede disky Nybegynder
20. maj 2002 - 01:47 #23
det glæder mig det virker
Avatar billede bodhisatva Nybegynder
25. juni 2002 - 22:42 #24
Hey Disky,

Jeg har en lille fejl eller fænomen jeg godt kunne tænke mig forklaret. Når jeg via ovenstående henter data fra databasen virker det fint den første gang jeg vil have data vist. Det virker fint den første gang jeg prøver at få fat i siden, men anden gang viser den kun en blank side i min frame.
Hvordan det?
Avatar billede bodhisatva Nybegynder
25. juni 2002 - 22:47 #25
Det skal lige tilføjes at det sjove er, at når jeg sletter din flotte class og usebean sker der ingen fejl... ;)
Avatar billede disky Nybegynder
25. juni 2002 - 22:47 #26
hmmm det kan jeg ikke lige svare på umiddelbart.

så skal jeg se lidt kode først
Avatar billede bodhisatva Nybegynder
25. juni 2002 - 22:58 #27
Ok, første side læser fra databasen:

<%@page language="java" import="java.sql.*,java.util.*" session="true" isErrorPage="false" %>
<jsp:useBean id="LavBR" scope="session" class="dss.LavBR">
<HTML>
  <HEAD>
    <TITLE>guestbookinfo.jsp</TITLE>
   
  </HEAD>

<link rel="stylesheet" href="css.css" type="text/css">
 
  <BODY>
  <center><h1>Indlæg i Gæstbogen</H1></CENTER>





  <%
Class.forName("org.gjt.mm.mysql.Driver");
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost/guestbook","","");
Statement stmt = myConn.createStatement();
ResultSet myResultSet = stmt.executeQuery("select * from guestbook");
if(myResultSet !=null)
{
while(myResultSet.next())
{

String Navn = myResultSet.getString("Navn");
String Email = myResultSet.getString("Email");
String Url = myResultSet.getString("Url");
String Overskrift = myResultSet.getString("Overskrift");
String Kommentar = myResultSet.getString("Kommentar");






%>



<table border="0">
<tr>
    <td width="10%" align="left">Navn</td><br>
    <td width="60%" align="left"><%= Navn %></td>
</tr>
<tr>
    <td width="10%" align="left">Email</td>
      <td width="60%" align="left"><%= Email %></td>
</tr>
<tr>
    <td width="10%" align="left">Url</td>
      <td width="60%" align="left"><%= Url %> </td>
</tr>
<tr>
    <td width="10%" align="left">Overskrift</td>
      <td width="60%" align="left"><%= Overskrift %></td>
</tr>
<tr>   
<td width="10%" align="left">Kommentar</td><br>
<td width="60%" align="left">  <%= LavBR.filtrer(Kommentar) %> </td>
</tr>
<tr>   


<br><br>

<hr width="100%" size="2">




<%
}
}
stmt.close();
myConn.close();

%>
</table>


<a href="guestbookindex.jsp"> Tilbage til gæstebogen</a>

 
</BODY>
</HTML>
</jsp:useBean>
-------------------------------------------------------------------
anden side sætter ind i databasen:

<%@page language="java" import="java.sql.*,java.util.*, disky.*" session="true" scope="request" %>
<HTML>
  <HEAD>
    <TITLE>guestbookoutput.jsp</TITLE>
    </HEAD>

  <link rel="stylesheet" href="css.css" type="text/css">
<BODY>
  <center><h1>Gæstebogen</H1></CENTER>
 
  <%
Class.forName("org.gjt.mm.mysql.Driver");
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost/guestbook","","");


String Navn = request.getParameter("Navn");
String Email = request.getParameter("Email");
String Url = request.getParameter("Url");
String Overskrift = request.getParameter("Overskrift");
String Kommentar = request.getParameter("Kommentar");




Statement stmt = myConn.createStatement();
int rowsAffected = stmt.executeUpdate("insert into guestbook (Navn,Email,Url,Overskrift,Kommentar)  values('" + Navn  + "','" + Email  + "','" + Url  + "','" + Overskrift  + "','" + Kommentar + "')");
if(rowsAffected == 1)
{
%>

<h1>Dit "indlæg" er nu gemt.</h1>

<p>
<a href="guestbookinfo.jsp">Du kan her se alle indlæg i gæstebogen</a><br>
<a href="guestbook.jsp">nyt indlæg i gæstebogn</a><br>
<% }
else
{
%>
<h1>Sorry, men dit indlæg blev ikke opdateret... prøv igen... </h1>

<%
}
stmt.close();
myConn.close();
%>
 
 
 
 
 
 
 
 
</BODY>
</HTML>
Avatar billede disky Nybegynder
25. juni 2002 - 23:03 #28
og det går galt anden gang du henter fra basen ?
Avatar billede bodhisatva Nybegynder
25. juni 2002 - 23:05 #29
jeps, fra anden gang og resten, indtil jeg lukker browseren ned og starter den op igen
Avatar billede disky Nybegynder
25. juni 2002 - 23:11 #30
flyt din </jsp:usebean> op under din <jsp:usebean ...
Avatar billede bodhisatva Nybegynder
25. juni 2002 - 23:15 #31
FOR H.....

tusind tak!
Avatar billede disky Nybegynder
25. juni 2002 - 23:20 #32
:-)

da den havde session scope blev alt imellem dem kun kørt en gang :)

normalt er de lige efter hinanden
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