Avatar billede bodhisatva Nybegynder
22. november 2001 - 00:31 Der er 18 kommentarer og
1 løsning

søgning i mysql ?

Som så mange andre er jeg ved at lave et testsite. Der kan indtastes oplysninger af diverse oprindelse via en form, der lagres i en MySQL-database.
Spørgsmålet går så på:

\"Hvordan søger man i en tabel efter eksempelvis en bestemt kunde, og får returneret alle oplysninger om kunden/kunderne??\"

Det skal lige nævnes at der godt kan returneres flere kunder med det samme navn, men ikke samme stamoplysninger.
Avatar billede disky Nybegynder
22. november 2001 - 08:21 #1
select * from kunder where navn like \'%bodhi%

Så finder mysql alle kunder i \'kunder\' tabellen hvis der indgår \'bodhi\' i deres navn.

du kan også sige

select * from kunder where name=\'disky\'

Så finder den kun kunder der hedder \'disky\'

% er wildcard.
Avatar billede bodhisatva Nybegynder
22. november 2001 - 11:01 #2
Ehm, disky, kan du ikke lige smide et eksempel i tråden?

noget med:
<form action=\"output.jsp\" method=\"post\">¨
bla bla bla <table.......>
<TR>
<TD WIDTH=\"25%\">Navn
</TD>
<TD WIDTH=\"60%\" bgcolor=\"#336699\">
<textarea cols=\"80%\" rows=\"1\" name=\"Navn\"> </textarea>
</TD>
</TR>
<TR>
<TD WIDTH=\"25%\">E-mail adresse
</TD>
<TD WIDTH=\"60%\" bgcolor=\"#336699\">
<textarea cols=\"80%\" rows=\"1\" name=\"Email\"> </textarea>
</TD>
</TR>
</table>
<INPUT TYPE=\"SUBMIT\">

og output.jsp ser nogenlunde således ud:

  <%
Class.forName(\"org.gjt.mm.mysql.Driver\");
Connection myConn = DriverManager.getConnection(\"jdbc:mysql://localhost/database\",\"bla bla bla\",\"bla bla bla\");

String Navn = request.getParameter(\"Navn\");
String Email = request.getParameter(\"Email\");


Statement stmt = myConn.createStatement();
int rowsAffected = stmt.executeUpdate(\"select * from database where navn like \'%navn%
\");

.... ????? ....

Avatar billede disky Nybegynder
22. november 2001 - 11:06 #3
hvis du vil søge både på navn og email samtidig skal du lave en sql der gør det.

altså:

byt
Statement stmt = myConn.createStatement();
int rowsAffected = stmt.executeUpdate(\"select * from database where navn like \'%navn%
\");



ud med:

Statement stmt = myConn.createStatement();
ResultSet rs = stmt.executeQuery(\"select * from database where navn like \'%\"+navn+\"%\' and email like \'%\"+email+\"%\'\");

while(rs.next())
{
%>
navn = <%=rs.getString(\"navn\")%><br>
email = <%=rs.getString(\"email\")%><br>
<%
}




Avatar billede bodhisatva Nybegynder
23. november 2001 - 12:52 #4
Æwkaj, jeg får nu kun én fejl:
500 Servlet Exception
/web/testdiverse.jsp:39: Missing term.
      pageContext.write(_jsp_string2, 0, _jsp_string2.length);
                                                              ^
1 error

Mine sider ser således ud:

<HTML>
  <HEAD>
    <TITLE>test af diverse.jsp</TITLE>
    </HEAD>
    <%@ page language=\"java\" import=\"java.sql.*\" %>
  <link rel=\"stylesheet\" href=\"css.css\" type=\"text/css\">
<BODY>
  <center><h1>testside</H1></CENTER>
 
  <%
Class.forName(\"org.gjt.mm.mysql.Driver\");
Connection myConn = DriverManager.getConnection(\"jdbc:mysql://localhost/dss\",\"\",\"\");
Statement stmt = myConn.createStatement();
ResultSet rs = stmt.executeQuery(\"select * from dss where Navn like \'%\"+Navn+\"%\' and Email like \'%\"+Email+\"%\'\");

String Navn = request.getParameter(\"Navn\");
String Email = request.getParameter(\"Email\");




while(rs.next())
{
%>
navn = <% =rs.getString(\"Navn\")%><br>
email = <%=rs.getString(\"Email\")%><br>

<%
}

System.out.print(\" <h1>Du kan nu se data med søgte indhold.</h1>\");
  %>
<!-- <p>
<br> -->



<!-- System.out.print(\"sowwy, men din soegning er ikke accepteret eller indeholder ingen poster\"); -->



<%
stmt.close();
myConn.close();
%>
 
 
 
  </body>
  </html>
 
  --------------------------------------------
og:


    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
    <%@ page language=\"java\" import=\"java.sql.*\" %>
<html>
<head>
<title>testdiversestart.jsp</title>
</head>
<link rel=\"stylesheet\" href=\"css.css\" type=\"text/css\">
<BODY>
    <FORM ACTION=\"testdiverse.jsp\" method=\"post\" enctype=\"application/x-www-form-urlencoded\"><H2>
    <FONT COLOR=\"#ffffff\">søg i databsen</FONT></H2>

<H2><FONT COLOR=\"#ffffff\"></FONT></H2>
<P>
        <TABLE BORDER=\"1\" WIDTH=\"20%\" bgcolor=\"#336699\">
            <TR>
                <TD WIDTH=\"25%\">    Navn
                </TD>
                <TD WIDTH=\"60%\" bgcolor=\"#336699\">
                    <textarea cols=\"80%\" rows=\"1\" name=\"Navn\"></textarea>
                </TD>
            </TR>
            <TR>
                <TD WIDTH=\"25%\">    E-mail adresse
                </TD>
                <TD WIDTH=\"60%\" bgcolor=\"#336699\">
                    <textarea cols=\"80%\" rows=\"1\" name=\"Email\"></textarea>
                </TD>
            </TR>
        </TABLE>
<p align=\"right\">
<P>
        <INPUT TYPE=\"RESET\" NAME=\"Reset\" VALUE=\"Reset\">
        <INPUT TYPE=\"SUBMIT\"><FONT COLOR=\"#ffffff\">                         
    </FOnt></p>
</body>
</html>
Avatar billede disky Nybegynder
23. november 2001 - 12:58 #5
byt
ResultSet rs = stmt.executeQuery(\"select * from dss where Navn like \'%\"+Navn+\"%\' and Email like \'%\"+Email+\"%\'\");

String Navn = request.getParameter(\"Navn\");
String Email = request.getParameter(\"Email\");




ud med
String Navn = request.getParameter(\"Navn\");
String Email = request.getParameter(\"Email\");
ResultSet rs = stmt.executeQuery(\"select * from dss where Navn like \'%\"+Navn+\"%\' and Email like \'%\"+Email+\"%\'\");


hvad står der i linie 39 ?

Lad være med at udskrive til en webside med System.out





Avatar billede bodhisatva Nybegynder
23. november 2001 - 13:06 #6
Der står egentlig ikke noget i linie 39 som nu er blevet til 41, og er efter:

<%
stmt.close();
myConn.close();
%>
 
linie 41 er her

Og så slutter jeg af med endtag for body og html, og that\'s it...
Avatar billede disky Nybegynder
23. november 2001 - 13:08 #7
hvad siger fejlen nu ?
Avatar billede bodhisatva Nybegynder
23. november 2001 - 13:34 #8
500 Servlet Exception
/web/testdiverse.jsp:41: Missing term.
      pageContext.write(_jsp_string2, 0, _jsp_string2.length);
                                                              ^
1 error


Avatar billede disky Nybegynder
23. november 2001 - 13:40 #9
kan jeg ikke lige se,

undersøg om alle dine  {} er i par, og det samme med \'\' og \"\"
Avatar billede bodhisatva Nybegynder
23. november 2001 - 14:09 #10
Ok, det ser ud til den virker nogenlunde, men vil ikke skrive resultatet korrekt ud på skærmen.
Koden tager bare resultatet af det indtastede og skriver ud, ikke alle data i databasen...

<HTML>
  <HEAD>
    <TITLE>test af diverse.jsp</TITLE>
    </HEAD>
    <%@ page language=\"java\" import=\"java.sql.*\" %>
  <link rel=\"stylesheet\" href=\"css.css\" type=\"text/css\">
<BODY>
  <center><h1>testside</H1></CENTER>
 
  <%
Class.forName(\"org.gjt.mm.mysql.Driver\");
Connection myConn = DriverManager.getConnection(\"jdbc:mysql://localhost/guestbook\",\"\",\"\");
Statement stmt = myConn.createStatement();
String Navn = request.getParameter(\"Navn\");
String Email = request.getParameter(\"Email\");
ResultSet rs = stmt.executeQuery(\"select * from guestbook where Navn like \'%\"+Navn+\"%\' \");

if(rs !=null)
{
while(rs.next())
{





%>



<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\">
<tr>
    <td width=\"1%\" align=\"left\">Navn</td>
    <td width=\"60%\" align=\"left\"><%= Navn %></td>
</tr>
<tr>
    <td width=\"1%\" align=\"left\">Navn</td>
    <td width=\"60%\" align=\"left\"><%= Navn %></td>
</tr>
<br><br>

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




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

%>
</table>


 

 
</BODY>
</HTML>


Avatar billede disky Nybegynder
23. november 2001 - 14:13 #11
der er ingen grund til at check om rs!=null, rs er ALTID forskellig fra null, det siger specifikationen.

din while(rs.next())

løkke generere en ny tabel per result, men du lukker kun en tabel, til sidst.

start tabellen inden løkken og luk den bagefter.
Avatar billede bodhisatva Nybegynder
23. november 2001 - 14:39 #12
Ok, det hjalp.

Nu er problemet bare at jeg kun får udskrevet det jeg har indtastet istedet for de data jeg har i databasen.

Jeg har endnu en gang kaldt databasen, men den ved jo ikke hvad den skal sende retur. Altså, de data jeg har forespurgt på...
Avatar billede disky Nybegynder
23. november 2001 - 14:42 #13
byt
tr>
    <td width=\"1%\" align=\"left\">Navn</td>
    <td width=\"60%\" align=\"left\"><%= Navn %></td>
</tr>
<tr>
    <td width=\"1%\" align=\"left\">Navn</td>
    <td width=\"60%\" align=\"left\"><%= Navn %></td>
</tr>


ud med

tr>
    <td width=\"1%\" align=\"left\">Navn</td>
    <td width=\"60%\" align=\"left\"><%=rs.getString(\"Navn\") %></td>
</tr>



forudsat din kolonne i basen hedder \'Navn\'
Avatar billede bodhisatva Nybegynder
23. november 2001 - 15:08 #14
jeg tror mit problem ligger i at jeg ikke kan associere det søgte med det returnerede. Altså, jeg skal finde et navn i databasen, og returnere alle de info der er om personen.
Pt. søger jeg efter navnet, er ikke sikker på jeg findet det, og returnerer det søgte direkte fra formen + alle data om alle personer i databasen:

<HTML>
  <HEAD>
    <TITLE>test af diverse.jsp</TITLE>
    </HEAD>
    <%@ page language=\"java\" import=\"java.sql.*\" %>
  <link rel=\"stylesheet\" href=\"css.css\" type=\"text/css\">
<BODY>
  <center><h1>testside</H1></CENTER>
 
  <%
Class.forName(\"org.gjt.mm.mysql.Driver\");
Connection myConn = DriverManager.getConnection(\"jdbc:mysql://localhost/guestbook\",\"\",\"\");
Statement stmt = myConn.createStatement();
String Navn = request.getParameter(\"Navn\");
ResultSet rs = stmt.executeQuery(\"select * from guestbook where Navn like \'%\"+Navn+\"%\' \");


{
%>
<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\">
<tr>
    <td width=\"50%\" align=\"left\">Du har søgt efter navnet:</td>
    <td width=\"50%\" align=\"left\"><%= Navn %></td>
</tr>
<br><br>

<br><br>
</table>
<%


while(rs.next())
{





%>






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

%>

<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\">
<br>
<tr>
    <td width=\"50%\" align=\"left\">... og fået resultatet:</td>
   
</tr>


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

String Navne = myResultSet.getString(\"Navn\");
String Emaile = myResultSet.getString(\"Email\");
String Urle = myResultSet.getString(\"Url\");
String Overskrifte = myResultSet.getString(\"Overskrift\");
String Kommentare = myResultSet.getString(\"Kommentar\");


%>


<table cellspacing=\"1\" cellpadding=\"1\" border=\"0\">
<tr>
    <td width=\"1%\" align=\"left\">Navn</td>
    <td width=\"60%\" align=\"left\"><%= Navne %></td>
</tr>
<tr>
    <td width=\"1%\" align=\"left\">E-Mail</td>
      <td width=\"60%\" align=\"left\"><a href=\"\"><%= Emaile %></a></td>
</tr>
<tr>
    <td width=\"1%\" align=\"left\">Hjemmeside</td>
      <td width=\"60%\" align=\"left\"><a href=\"\"><%= Urle %></a> </td>
</tr>
<tr>
    <td width=\"1%\" align=\"left\">Overskrift</td>
      <td width=\"60%\" align=\"left\"><%= Overskrifte %></td>
</tr>
<tr>   
<td width=\"1%\" align=\"left\">Kommentar</td>
    <td width=\"60%\" align=\"left\">  <%= Kommentare %></td>
</tr>
<br><br>

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




<%
}
}
statement.close();
con.close();

%>
</table>



 
</BODY>
</HTML>
Avatar billede disky Nybegynder
23. november 2001 - 15:13 #15
det skal nok passe, men din kode ser fin ud
Avatar billede bodhisatva Nybegynder
23. november 2001 - 18:46 #16
Jepper, men hvordan finder jeg lige netop de data om den person jeg søgte efter?? Altså, hvad gør jeg forkert???
Avatar billede bodhisatva Nybegynder
24. november 2001 - 10:26 #17
Men, sig mig lige en gang. Jeg skal vel kalde mit såkaldte \"Wildcard\" altså: \'%\"+Navn+\"%\' et-eller-andet sted i min søgning i databasen??? Men hvor skal jeg implementere det henne???
Avatar billede bodhisatva Nybegynder
25. december 2001 - 00:38 #18
Jeg aner stadig ikke hvor jeg går galt i byen disky... ???
Avatar billede bodhisatva Nybegynder
30. december 2001 - 14:48 #19
lukker spm. idet der intet endegyldig svar var...
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