tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
473
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sos sos ist offline Mitglied Silber
    Registriert seit
    Feb 2011
    Beiträge
    50
    Hallo liebe Leute,
    Ich kann mich erfolgreich mit einer Db verbinden die folgend aufgebaut ist:
    Abteilungsleiter(leiter ID)---->(id)Angestellter(personID)---->(id)Personen.
    mit anderen worten jeder Abteilungsleiter ist Angesteller und Person ...usw..aber nicht umgekehrt.

    dafür habe ich folgende Methode, die bislang unterschied zwischen einer Person und Angestellten macht, allerdings noch nicht festellen kann ob der Angestellter auch Abteilungsleiter ist.
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    
        private boolean anmelden(){
            // teste Vollständigkeit der Eingabedaten
            String message = "";
            if (txtVorname.getText().trim().equals(""))
                message = " Vorname";
            if(txtNachname.getText().trim().equals(""))
                message += " Nachname";
            // keine Passwort-Prüfung, denn dies Feld kann auch leer sein
            if(message.length() > 0){
                statusleiste.setText("Fehlende Eingabe:" + message);
            }
            else {
                this.getDbManager(); // DbManager sicherstellen
                person = new Person(txtVorname.getText().trim(), txtNachname.getText().trim());
                /* Wiederholungsaufgabe 4.3: */
                
                dbManager.startTransaction();
                angestellter = new Angestellter(person);
                abteilung = new Abteilung(angestellter);
                
            
                if(person.retrieveObject(dbManager)) {
                    
                    
                     
                
                            if(angestellter.retrieveObject(dbManager)){
                                
                            // Lesen des Kunden war erfolgreich
                            statusleiste.setText("Angestellter "
                                +  person.getVorname() + " " + person.getNachname() + "!");
                             this.setAnmeldungErfolgreich(true);
                        
                        
                            dbManager.endTransaction(true);
                            statusleiste.setText("ZUGANG VERWEIGERT:"
                                +  person.getVorname() + " " + person.getNachname() + " ist kein Abteilungsleiter!"); 
                            return true;
                         }else{
            
                    
                    // Lesen des Kunden war erfolgreich
                    statusleiste.setText("Angestellter "
                            +  person.getVorname() + " " + person.getNachname() + "!");
                    this.setAnmeldungErfolgreich(true);
                    
                    dbManager.endTransaction(true);
                    statusleiste.setText("  :"
                            +  person.getVorname() + " " + person.getNachname() + " ist kein Angestellter");
                    
                }
                    return true;
                    
                        
                }else
                statusleiste.setText("Person"
                        +  person.getVorname() + " " + person.getNachname() + " existiert nicht in der DB");
            
            dbManager.endTransaction(true);
            /* "endTransaction(f a l s e)"-Aufruf nicht erforderlich, da keine Änderungen
             * in der Datenbank erfolgen und lediglich das serielle (isolierte) Lesen
             * sichergestellt werden muss. */
            return true;
        }
        return false;
    }

    Die SQL-Abfragen sowie Spreicherung des Resultselts ist in der Klassen Person, Angesteller , Abteilung, die eine PersistenzInterface implementieren
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    
     
    import java.sql.ResultSet; 
    import java.sql.SQLException;
     
     
    public class Angestellter implements PersistenzInterface {
     
        /* ****** PI-Properties ****** */
        private boolean persistent;
        public boolean isPersistent() { return persistent; }
        public void setPersistent(boolean newValue) { this.persistent = newValue; }
     
        private boolean modified;
        public boolean isModified() { return modified; }
        public void setModified(boolean newValue) { this.modified = newValue; }
     
        /* Konstruktoren */
        public Angestellter(int id) {
            this.id = id;
        }
     
        public Angestellter(Person person) {
            this.person = person;
        }
        /* ausgewählte Properties Angestelltendaten, ausreichend für Kunden-Client */
        private int id;     // auch von PI gefordert
        public int getId() { return id; }
        public void setId(int id) { this.id = id;  this.setModified(true); }
     
        private Abteilung abteilung;
        public Abteilung getAbteilung() { return abteilung; }
        public void setAbteilung(Abteilung abteilung) { this.abteilung = abteilung;  this.setModified(true); }
     
        private String geschlecht;
        public String getGeschlecht() { return geschlecht; }
        public void setGeschlecht(String geschlecht) { this.geschlecht = geschlecht;  this.setModified(true); }
     
        private Person person;
        public Person getPerson() { return person; }
        public void setPerson(Person person) { this.person = person;  this.setModified(true); }
     
        /* weitere Felder */
        private String message;
        public String getMessage() { return message; }
     
        /* ****** Datenbankoperationen ****** */
        public boolean retrieveObject(DbManager dbManager) {
            if(this.isPersistent()) {
                message = "ausDbLesen: Der Angestellte wurde schon aus der DB gelesen";
                return true;
            } else {
                if(!dbManager.executeRetrieve(this)) { // alternative Suche nach id oder Name in
                    message = "ausDbLesen: Kein Angestellter in der Datenbank";
                    return false;
                } else {
                    return true;
                }
            }
        }
        public boolean deleteObject(DbManager dbManager) {
            // TODO Auto-generated method stub
            return false;
        }
        public boolean updateObject(DbManager dbManager) {
            // TODO Auto-generated method stub
            return false;
        }
        public boolean insertObject(DbManager dbManager) {
            // TODO Auto-generated method stub
            return false;
        }
        /* ****** SQL-Anweisungen erstellen ****** */
        public String getDeleteSQL() {
     
            // TODO Auto-generated method stub
            return null;
        }
        public String getInsertSQL() {
            // TODO Auto-generated method stub
            return null;
        }
        public String getRetrieveSQL() {
            String queryString = null;
            if(this.getId() > 0) {  // noch nicht gelesen, aber schon in DB (id ist dann > 0)
                queryString = "SELECT id, abtID, geschlecht, personID FROM angestellte WHERE id=" + this.getId();
            } else {                // Objekt ist transient
                if(this.getPerson().getId() > 0)
                    queryString = "SELECT id, abtID, geschlecht, personID FROM angestellte WHERE personID=" + this.getPerson().getId();
                else
                    message = "Angestellter.ausDbLesen: PersonID muss gesetzt sein (ist aber 0)";
            }
            return queryString;
        }
        public String getUpdateSQL() {
            // TODO Auto-generated method stub
            return null;
        }
        public boolean loadObjProps(ResultSet rs) {
            try {
                if(rs != null && rs.next()) {
                    this.setId(rs.getInt(1));
                    int newID = rs.getInt(2);
                    if(abteilung == null)   //für temporäre Objekte
                        abteilung = new Abteilung(rs.getInt(2));
                    if(newID != this.getAbteilung().getId()) // sonst würde das eingebettete Person-Objekt als "verändert" markiert!
                        this.getAbteilung().setId(newID);
                    this.setGeschlecht(rs.getString(3));
                    newID = rs.getInt(4);
                    if(person == null)  //für temporäre Objekte
                        person = new Person(newID);
                    if(newID != this.getPerson().getId()) // sonst würde das eingebettete Person-Objekt als "verändert" markiert!
                        this.getPerson().setId(newID);
                    return true;
                }
            } catch (SQLException sqle) {
                System.out.println("Angestellter.ladeObjekt - " + sqle.toString());
            }
            return false;
        }
     
        /* ******* sonstige Hilfsmethoden ****** */
        @Override
        public boolean equals(Object object){
            // TODO implement
            return false;
        }
        @Override
        public String toString() {
            return "Angestellter id=" + id + " " + this.getPerson() + ", Abteilung " + abteilung;//.getId();//this.getAbteilung().getName();
        }
        @Override
        public String getPufferKey() {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public void setPufferKey(String pufferKey) {
            // TODO Auto-generated method stub
            
        }
    }

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    import java.sql.ResultSet;
     
     
     
    /* Das Interface muss auch in dieses Projekt aufgenommen werden,
     * da es den DbManager dieser Projektversion verwendet. Daher ist kein
     * Import aus "lektion4" möglich.  */
     
     
    public interface PersistenzInterface extends Cloneable {
     
        /* Persistenzeigenschaften */
        boolean isPersistent();
        void    setPersistent( boolean newValue );
     
        boolean isModified();
        void    setModified( boolean newValue );
     
        /* id-Eigenschaft für ale PI-Objekte ab Lektion 4 */
        void setId(int id);
        int getId();
     
        /* Fügt das aktuelle Objekt in die Datenbank ein (SQL-INSERT). */
        boolean insertObject(DbManager dbManager);
     
        /* Liest ein Objekt aus der Datenbank (SQL-SELECT).
         * In Lektion 5 erhält die Methode eine andere Rückgabe, um alternativ das
         * Original oder das Pufferobjekt durchreichen zu können. */
        boolean retrieveObject(DbManager dbManager);
     
        /* Ändert den Objektzustand in der Datenbank (SQL-UPDATE).  */
        boolean updateObject(DbManager dbManager);
     
        /* Löscht das aktuelle Objekt aus der Datenbank (SQL-DELETE). */
        boolean deleteObject(DbManager dbManager);
     
        /* SQL-String- und Verwaltungsmethoden - ab Lektion 4 */
        String getInsertSQL();
        String getRetrieveSQL();
        String getUpdateSQL();
        String getDeleteSQL();
     
        /* Läd die Properties (Eigenschaften) eines perssistenzfähigen Objekts aus
         * dem übergebenen ResaultSet-Objekt - Ergebnis einer Datenbankabfrage.
         * Der Methodenname kürzt "loadObjectProperties" ab. */
        boolean loadObjProps(ResultSet rs);
     
        /* Ergänzung in Lektion 5:
         * Das mapping dient der S u c h e ("find" - bzw. "retrieve" aus CRUD)
         * im Puffer - also muss ein Wert erzeugt werden, mit dem typischerweise
         * gesucht wird. Die Schlüsseldefinition sollte auf die angebotenen
         * Konstruktoren (bzw. deren Parameter) abgestimmt werden.  */
        String getPufferKey();
        void setPufferKey(String pufferKey);
     
        
        
        /****WAS SOLL DAS ***/
        //PersistenzInterface clone() throws CloneNotSupportedException;
     
        String getMessage();
    }

    Die Klasse Abteilung habe ich soweit geschrieben und habe die anmelden() so umgeändert
    mit dem Ergebnis :
    DbManager.executeSelect - java.sql.SQLException: Can not issue NULL query.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    
        private boolean anmelden(){
            // teste Vollständigkeit der Eingabedaten
            String message = "";
            if (txtVorname.getText().trim().equals(""))
                message = " Vorname";
            if(txtNachname.getText().trim().equals(""))
                message += " Nachname";
            // keine Passwort-Prüfung, denn dies Feld kann auch leer sein
            if(message.length() > 0){
                statusleiste.setText("Fehlende Eingabe:" + message);
            }
            else {
                this.getDbManager(); // DbManager sicherstellen
                person = new Person(txtVorname.getText().trim(), txtNachname.getText().trim());
                /* Wiederholungsaufgabe 4.3: */
                
                dbManager.startTransaction();
                angestellter = new Angestellter(person);
                abteilung = new Abteilung(angestellter);
                if(angestellter.retrieveObject(dbManager)){
                    
                    if(abteilung.retrieveObject(dbManager)){
                        statusleiste.setText("Angestellter "
                                +  person.getVorname() + " " + person.getNachname() + "!");
                             this.setAnmeldungErfolgreich(true);
                        
                        
                            dbManager.endTransaction(true);
                         System.out.println("Hopla");
                         return true;
                     }
                    else{
                        
                        
                        // Lesen des Kunden war erfolgreich
                        statusleiste.setText("Angestellter "
                                +  person.getVorname() + " " + person.getNachname() + "!");
                        this.setAnmeldungErfolgreich(true);
                        
                        dbManager.endTransaction(true);
                        statusleiste.setText("  :"
                                +  person.getVorname() + " " + person.getNachname() + " ist kein Abteildjhf");
                        
                    }
                        return true;
                        
                            
                    }
                else
            
                if(person.retrieveObject(dbManager)) {
                    
                    
                     
                
                            if(angestellter.retrieveObject(dbManager)){
                                
                                
                                
                            // Lesen des Kunden war erfolgreich
                            statusleiste.setText("Angestellter "
                                +  person.getVorname() + " " + person.getNachname() + "!");
                             this.setAnmeldungErfolgreich(true);
                        
                        
                            dbManager.endTransaction(true);
                            statusleiste.setText("ZUGANG VERWEIGERT:"
                                +  person.getVorname() + " " + person.getNachname() + " ist kein Abteilungsleiter!"); 
                            return true;
                         }else{
            
                    
                    // Lesen des Kunden war erfolgreich
                    statusleiste.setText("Angestellter "
                            +  person.getVorname() + " " + person.getNachname() + "!");
                    this.setAnmeldungErfolgreich(true);
                    
                    dbManager.endTransaction(true);
                    statusleiste.setText("  :"
                            +  person.getVorname() + " " + person.getNachname() + " ist kein Angestellter");
                    
                }
                    return true;
                    
                        
                }else
                statusleiste.setText("Person"
                        +  person.getVorname() + " " + person.getNachname() + " existiert nicht in der DB");
            
            dbManager.endTransaction(true);
            /* "endTransaction(f a l s e)"-Aufruf nicht erforderlich, da keine Änderungen
             * in der Datenbank erfolgen und lediglich das serielle (isolierte) Lesen
             * sichergestellt werden muss. */
            return true;
        }
        return false;
    }

    Ich wäre euch sehr dankbar für jeden Tipp oder Anregung.
    Geändert von sos (10.12.11 um 11:36 Uhr)
     

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Man man man, den Code muss ja erst umformatieren...

    Aber egal. Wenn ich das richtig verstanden habe, dann willst du herausfinden, ob ein Angestellter auch ein Abteilungsleiter ist. In der Klasse Angestellter lädst du aber nur den Kram für den Angestellten, jedenfalls habe ich sonst nix gefunden, auch nicht in den SQLs. Wo wird denn die Information zum Abteilungsleiter hinterlegt? Gibt es dafür eine weitere Tabelle oder wie oder was.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  3. #3
    sos sos ist offline Mitglied Silber
    Registriert seit
    Feb 2011
    Beiträge
    50
    Danke Abteilung ist eine Weiter Tabelle ja, hier ist die Klasse Abteilung :
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    
     
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
     
     
    public class Abteilung implements PersistenzInterface {
     
        /* ****** PI-Properties ****** */
        private boolean persistent;
        public boolean isPersistent() { return persistent; }
        public void setPersistent(boolean newValue) { this.persistent = newValue; }
     
        private boolean modified;
        public boolean isModified() { return modified; }
        public void setModified(boolean newValue) { this.modified = newValue; }
     
        /* Konstruktoren */
        public Abteilung(int id) {
            this.id = id;
        }
        private Angestellter angestellter;
     
        public Abteilung(Angestellter angestellter) {
            this.angestellter = angestellter;
        }
     
        /* Properties zu Abteilungsdaten */
        private int id;
        public int getId() { return id; }
        public void setId(int id) { this.id = id; this.setModified(true); }
     
        private String name;
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
     
        private String message;
        public String getMessage() {    return message;}
        
        private String geschlecht;
        public String getGeschlecht() { return geschlecht; }
        public void setGeschlecht(String geschlecht) { this.geschlecht = geschlecht;  this.setModified(true); }
     
        private Person person;
        
        public Angestellter getAngestellter() { return angestellter; }
        public void setAngestellter(Angestellter angestellter) { this.angestellter = angestellter; this.setModified(true);}
     
        /* ****** Datenbankoperationen ****** */
        public boolean retrieveObject(DbManager dbManager) {
            if(this.isPersistent()) {
                message = "ausDbLesen: Der Angestellte wurde schon aus der DB gelesen";
                return true;
            } else {
                if(!dbManager.executeRetrieve(this)) { // alternative Suche nach id oder Name in
                    message = "ausDbLesen: Kein Angestellter in der Datenbank";
                    return false;
                } else {
                    return true;
                }
            }
        }
        public boolean deleteObject(DbManager dbManager) {
            // TODO Auto-generated method stub
            return false;
        }
        public boolean updateObject(DbManager dbManager) {
            // TODO Auto-generated method stub
            return false;
        }
        public boolean insertObject(DbManager dbManager) {
            // TODO Auto-generated method stub
            return false;
        }
        /* ****** SQL-Anweisungen erstellen ****** */
        public String getDeleteSQL() {
            // TODO Auto-generated method stub
            return null;
        }
        public String getInsertSQL() {
            // TODO Auto-generated method stub
            return null;
        }
        public String getRetrieveSQL() {
            
            String queryString = null;
            if(this.getId() > 0) {  // noch nicht gelesen, aber schon in DB (id ist dann > 0)
                queryString =  "SELECT id, name, leiterID FROM abteilung WHERE id=" + this.getId();
            } else {                // Objekt ist transient
                if(this.getAngestellter().getId()> 0)
                    queryString = "Select abteilungen.id ,abteilungen.name, abteilungen.leiterID , vorname, " +
                            "nachname from personen left JOIN (Select personID,id from angestellte) A " +
                               "on personen.id=A.personID Left join abteilungen on A.id=abteilungen.leiterID " +
                               "where A.id in (SELECT leiterID FROM abteilungen) =" + this.getAngestellter().getId();
                else
                    message= ("Angestellter.ausDbLesen: PersonID muss gesetzt sein (ist aber 0)");
            }
            
            return queryString;
        }
     
        public String getUpdateSQL() {
            // TODO Auto-generated method stub
            return null;
        }
        public boolean loadObjProps(ResultSet rs) {
            try {
                if(rs != null && rs.next()) {
                    id = rs.getInt(1);
                    int newID = rs.getInt(2);
                    this.setGeschlecht(rs.getString(3));
                    newID = rs.getInt(4);
                    if(person == null)  //für temporäre Objekte
                        person = new Person(newID);
                    if(newID != this.getAngestellter().getId()) // sonst würde das eingebettete Person-Objekt als "verändert" markiert!
                        this.getAngestellter().setId(newID);
                    return true;
                }
            } catch (SQLException sqle) {
                System.out.println("Kunde.loadObjProps - " + sqle.toString());
            }
            return false;
        }
     
     
        /* ******* sonstige Hilfsmethoden ****** */
        /* "equals" wird überschrieben, um zwei Abteilungsobjeke auf Gleichheit
         * zu testen. */
        @Override
        public boolean equals(Object object){
            // TODO implement
            return false;
        }
        @Override
        public String toString() {
            return  new Integer(id).toString();
        }
        @Override
        public String getPufferKey() {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public void setPufferKey(String pufferKey) {
            // TODO Auto-generated method stub
            
        }
        
        
    }
    Geändert von sheel (10.12.11 um 14:17 Uhr) Grund: Codetags
     

  4. #4
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Ähm... Du hast die Tags vertauscht. Das erste Tag ist ohne Slash (/), das muss in das zweite Tag, um das Ende zu kennzeichnen.

    EDIT:
    Bei deinem SQL sieht was komisch aus:
    Code java:
    1
    
    "where A.id in (SELECT leiterID FROM abteilungen) =" + this.getAngestellter().getId();
    Das müsste eigentlich so aussehen:
    Code java:
    1
    
    "where A.id = " + this.getAngestellter().getId();
    Geändert von Akeshihiro (11.12.11 um 14:32 Uhr)
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

Ähnliche Themen

  1. Java Server Pages Status 500 Unable to find a javac compiler
    Von dananudel im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 11
    Letzter Beitrag: 17.05.10, 16:11
  2. Ajax Java Upload Status
    Von Sziebeck im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 26.02.10, 14:04
  3. MySQL Status
    Von AZUBI09 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 25.09.09, 12:28
  4. Antworten: 20
    Letzter Beitrag: 08.05.05, 17:41
  5. Antworten: 0
    Letzter Beitrag: 17.02.05, 15:50