• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

JSP datenbankschleife einbauen aber wie ? :(

Status
Für weitere Antworten geschlossen.
O

Only4

Guest
Hey Leute hab ein Problem und zwar habe ich ein JSP programm entworfen wo man Kundennummer amuell eingeben muss und dieses dann in der Datenbank geprüft wird. Nun will ich aber das Programm so änderen damit es erkennt in der datenbank welche kundennummer schon vorhanden sind und sozusagen immer eins dazuzählt bis die nächste frei ist. Mir ist klar das ich eine lesende bzw schreibende while schleife einbauen muss aber wie ich das genauer machen soll ist mir etwas schleierhaft :/ ok es kann auch gerade sein das ich total auf dem schlauch stehe. ich lass euch noch meine JSP datei und HTML datei da. HOffe ihr könnt es mir bisschen verständlcher machen

HTML:

PHP:
<html>
<head>
<title>Kundenregistration</title>
<meta name="author" content="administrator">
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
 <h2>Kundenregistration</h2>
  <br />
  <form action="registration.jsp" method = "post">
   Bitte geben Sie eine belibige Kundennummer ein:<br />
   <input type="text" name="tfkdn"><br />
   Bitte geben Sie Ihren Namen an: <br />
   <input type="text" name="tfname"><br />
   Bitte geben Sie Ihre Strasse ein: <br />
   <input type="text" name="tfstr"><br />
   Bitte geben Sie Ihre PLZ ein:<br />
   <input type="text" name="tfplz"><br />
   Bitte geben Sie Ihren Ort ein: <br />
   <input type="text" name="tfort"><br />
   Bitte legen Sie Ihr Passwort fest!<br />
   <input type="password" name="pw"><br/>
   <input type="submit" name=""  value="Daten versenden">
   <input type="reset" name="" value="Felder löschen">
  </form>
</body>
</html>


JSP


PHP:
<%@ page language = "Java"%>
<%@ page import="java.sql.*"%>

<html>
<head>
<title>Ihre Daten</title>
<meta name="author" content="administrator">
<meta name="editor" content="html-editor phase 5">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
 <%
    // Variablen anlegen
    String mName, mStrasse, mPlz, mOrt, mPassword, mkdn, mSQL, mDKdnr;

    String mDB;
    Connection mdbHaro = null;
    Statement stmtSQL = null;
    ResultSet rsKunde = null;

    // Felder auslesen
    mkdn = request.getParameter("tfkdn");
    mName = request.getParameter("tfname");
    mStrasse = request.getParameter("tfstr");
    mPlz = request.getParameter("tfplz");
    mOrt = request.getParameter("tfort");
    mPassword = request.getParameter("pw");




    // Verbindung zur Datenbank
      try{
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         mDB="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D:/xampp/tomcat/webapps/jsp/Regi/DB/HARO.MDB";
         mdbHaro = DriverManager.getConnection(mDB,"","");
         stmtSQL = mdbHaro.createStatement();
      }
        catch (ClassNotFoundException err){
           // Verbindung zur Datenbank fehlgeschlagen!
           System.err.println(err);
        }

        // Auslesender SQL Befehl
         mSQL = "SELECT KdNr, PW ";
         mSQL = mSQL+"FROM Kunde " ;
         mSQL = mSQL+"WHERE KdNr = '" + mkdn + "' ;";
     // Resultset Bilden
      try{
          rsKunde = stmtSQL.executeQuery(mSQL);
      }
         catch(SQLException err){
                                 System.err.println(err);
      }
        if(rsKunde.next()){
           // Kunde ist vorhanden
              mDKdnr = rsKunde.getString("KdNr");

               if(mkdn.equals(mDKdnr)){
                  out.println("Diese Kundennummer ist schon vergeben! Bitte geben Sie eine neue ein!");
               }

               else{
                // Kundennnummer stimmt nicht übereien
                  rsKunde.close();
               }
        }
        else{


         // Reistratur-Statement bilden
         mSQL = "INSERT INTO KUNDE (KdNr, Name, Strasse, PLZ, Ort, PW) " +
          "VALUES ('"+ mkdn + "','" + mName + "', '" + mStrasse + "', '" + mPlz + "', '" + mOrt + "', '"+ mPassword + "');";

                   if(stmtSQL.executeUpdate(mSQL)==1) {
                               out.println("Sie wurden Registiert!");
                               out.println("Ihre Kundennummer lautet:" + mkdn + " ");
                   }
                   else{
                               out.println("Sie konnten nicht registiert werden!");
                   }

         }


     //Verbindung schlie&szlig;en
     mdbHaro.close();
 %>
</body>
</html>
 
Ich sehe, dass du eine MS Access Datei verwendest. Dass du dir die letzte freie Kundennummer raussuchen willst ist ja ganz gut, dennoch würde es wesentlich leichter gehen, wenn du einen Auto Increment auf die Kundennummer (Die wahrscheinlich auch der PK ist) legst, so dass sich die Kundennummer automatisch beim nächsten Eintrag um 1 erhöht. Der Datentyp in Access dafür ist "AutoNumber". Hoffe das hilft dir :)
------
Grade erst gesehen mit der manuellen Kundennummer.
Dafür liest du dir alle Kunden aus, deren id größer als die ingegebene ist.
Code:
 "SELECT `KdNr` from KUNDE WHERE `KdNr` >= " + kdNr +";"
Du erhälst ja eine schleife.
Jetzt machst du eine Schleife die folgender maßen aussieht (Da ich nicht weiss wie es in Java aussieht schreibe ich es einfach mal so hin, sodass man wenigstens die Logik erkennt)
Code:
int kdStart = kdNr;
boolean eingetragen = false;

for(int i= 0; i < LAENGE.DB.ERGEBNIS; i++) {
 // Wenn kdStart
  if(DB.ERGEBNIS[i].KdNr != kdStart) {
    // Eintragen der Kundennummer in DB (kdStart)
eingetragen = true;    
  }
  kdStart++;
}

if(!eingetragen) {
 // Eintragen mit Kundennummer: DB.ERGEBNIS[LAENGE.DB:ERGEBNIS]
}

Wer irgend welche Logik fehler findet, soll bitte was sagen. Ist noch früh am morgen :D
 
Joa ich hab mir das auch schon überlegt aber ich kann das nicht in access umändern das ist ja der mist :(. Da kommt eine Informationsmeldung das ich es nicht ändern kann weil es teil einer beziehung ist oder so ....

Ok danke für deine Hilfe ich versuch es gleich mal ! :)

Ich sehe, dass du eine MS Access Datei verwendest. Dass du dir die letzte freie Kundennummer raussuchen willst ist ja ganz gut, dennoch würde es wesentlich leichter gehen, wenn du einen Auto Increment auf die Kundennummer (Die wahrscheinlich auch der PK ist) legst, so dass sich die Kundennummer automatisch beim nächsten Eintrag um 1 erhöht. Der Datentyp in Access dafür ist "AutoNumber". Hoffe das hilft dir :)
------
Grade erst gesehen mit der manuellen Kundennummer.
Dafür liest du dir alle Kunden aus, deren id größer als die ingegebene ist.
Code:
 "SELECT `KdNr` from KUNDE WHERE `KdNr` >= " + kdNr +";"
Du erhälst ja eine schleife.
Jetzt machst du eine Schleife die folgender maßen aussieht (Da ich nicht weiss wie es in Java aussieht schreibe ich es einfach mal so hin, sodass man wenigstens die Logik erkennt)
Code:
int kdStart = kdNr;
boolean eingetragen = false;

for(int i= 0; i < LAENGE.DB.ERGEBNIS; i++) {
 // Wenn kdStart
  if(DB.ERGEBNIS[i].KdNr != kdStart) {
    // Eintragen der Kundennummer in DB (kdStart)
eingetragen = true;    
  }
  kdStart++;
}

if(!eingetragen) {
 // Eintragen mit Kundennummer: DB.ERGEBNIS[LAENGE.DB:ERGEBNIS]
}
Wer irgend welche Logik fehler findet, soll bitte was sagen. Ist noch früh am morgen :D
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben