tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
696
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    Hallo allerseits!
    Ich bin auf der Suche nach einer Möglichkeit, die Werte mehrere Datensätze in einer Liste mit editierbaren Formularfeldern auszugeben und durch einen einzigen Klick zu speichern.
    Eine Liste der Datensätze habe ich bereits vorbereitet: www.fckitz.at/admin/spieler.asp

    Bin für jede Hilfe dankbar.
    MFG redwing78
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    ich habe da schon mal ein Beispiel für ein update einer Spielertabelle hier gepostet, weiss aber nicht mehr wo. Ich hänge das Script mal an.

    Folgende wichtige Dinge muss man berücksichtigen

    Du Formularfeldnamen bekommen alle einen gleichen fortlaufenden Zähler angehängt, wenn Sie in der Schleife aufgerufen werden. Weiterhin wird die komplette Anzahl der Datensätze in ein verstecktes Feld geschrieben. Das wird beim Update als Durchlaufzähler benutzt.

    Die Datensätze lässt man dann nach Aktion in einer For-Schleife updaten. Dies läuft für jeden Datensatz einmal durch. Also, wenn 11 Datensatze vorkommen, wird 11x executet.

    Einfach mal testen.
    Angehängte Dateien Angehängte Dateien
     
    liebe Grüße, die Luzie

  3. #3
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    Hi Luzie!
    Danke für das Skript - ich habe es für meine Zwecke adaptiert.
    Die Spielernamen werden noch nicht angezeigt, das Aktualisieren klappt noch
    nicht.
    Ich habe den Code auf http://www.fckitz.at/admin/spieler2.asp gestellt.
    Was ist noch falsch?
     

  4. #4
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hallo

    er meldet, da ist ein Fehler in der Updateanwiesung. Dies einfach nochmal mit den erstellten Variablen überprüfen. Wenn Du NULL Felder abschickst, solltest Du einen Standardwert zum Einfügen festlegen.

    "S0405GelbRot = " & e4S0405GelbRot & ", " & _
    "S0405GelbRot = " & eS0405GelbRot & " where Kader='1mannschaft' AND SpielerID = " & eSpielerID & "

    Als Spielername wird Dies bei Dir ausgegeben.
    <% = rs(5)%>

    Das ist wohl nicht das Feld für Spielernamen. Ich weiß auch nicht, ab er überhaupt in Deiner SQL existiert.
     
    liebe Grüße, die Luzie

  5. #5
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    Hi Luzie,
    die Updateanweisung habe ich im Skript genau so, wie Du sie definiert hast.
    Es sind genau diese 5 Felder, die aktualisiert werden sollen;
    Spielernamen dienen lediglich zur Orientierung und sollen nicht editierbar sein.

    Anstelle des bisherigen Codes für Spielernamen <% = rs(5)%>
    habe ich natürlich schon <% = rs("Nachname)%> ausprobiert,
    aber das funktioniert nicht.

    LG, redwing78
     

  6. #6
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    meine Anweisung funktioniert ja auch, weil ich die Variablen und die Felder korrekt gesetzt haben.

    Aber schau mal hier:

    "S0405GelbRot = " & e4S0405GelbRot & ", " & _

    erstmal kommt das Feld 2x vor in Deiner Anweisung und die Variable e4S0405GelbRot sehe ich nicht definiert bei Dir.

    Wenn Du den spielernamen mit ausgeben willst, dann musst Du den natürlich auch im Select-Statement mit aufrufen.
     
    liebe Grüße, die Luzie

  7. #7
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    Hi! Danke für den Hinweis - habe das doppelte Feld S0405GelbRot ausgebessert.
    Aber definiert habe ich es - siehe Seitenanfang unter dim; weiters ist es ja auch unter den definierten Formularen (request.form) angegeben.

    Ich habe natürlich schon vor dem Posting versucht, die Variablen Nach- und Vorname in das Select-Statement einzubauen, aber das funktioniert nicht, da dann die Nach- und Vornamen in jeweils das erste und zweite Formularfeld eingesetzt werden, wo ja die fünf Werte pro Spieler zum Editieren stehen sollten!
    So sieht das dann aus: http://www.fckitz.at/admin/spieler2.asp

    LG, redwing
     

  8. #8
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    die Variable war nicht definiert.
    Schau Dir dies nochmal an:

    "S0405GelbRot = " & e4S0405GelbRot & ", " & _
    "S0405GelbRot = " & eS0405GelbRot & " where Kader='1mannschaft' AND SpielerID = " & eSpielerID & "

    einmal heißt es e4SO... und einmal eSO....

    Ansonsten kann ich nix mehr dazu sagen. Du musst schon den Quellcode hier posten.
     
    liebe Grüße, die Luzie

  9. #9
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    Hi Luzie,
    danke für die Feinheit - es stimmt, da war ein Tippfehler ('4') drin.
    Im oberen Bereich der Datei steht als erstes die Datenbankverbindung,
    anschließend die Definitionen und der SQL-Befehl.

    Darunter die Schleife:
    Code :
    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
    
      <%
        sql = "select SpielerID,Nachname,Vorname,S0405Spiele,S0405Tore,S0405Gelb,S0405GelbRot,S0405Rot from Spieler WHERE Kader='1mannschaft'"
        Set RS = Server.CreateObject("ADODB.Recordset")
        RS.Open sql, objCon, 3,3
        dim  a
        counter = rs.recordCount
        a = 1
        %>
    <h3>Tabelle updaten/hinzuf&uuml;gen </h3>
    <form name="form1" method="post" action="<% = pfad %>">
      <table border="1">
        <tr>
          <td colspan="2"><b>Spieler</b></td>
          <td><strong>Felder</strong></td>
        </tr>
        <% while not rs.eof %>
        <tr>
          <td colspan="2">
            <% = rs(5)%><input name="SpielerID<% = a%>" type="hidden" value="<%= rs(0)%>">
      
            
          </td>
          <td>
            <input name="eS0405Spiele<% = a%>" type="text" value="<%= rs(1)%>" size="10">
            <input name="eS0405Tore<% = a%>" type="text" value="<%= rs(2)%>" size="10">
            <input name="eS0405Gelb<% = a%>" type="text" value="<%= rs(3)%>" size="10">
            <input name="eS0405GelbRot<% = a%>" type="text" value="<%= rs(4)%>" size="10">
            <input name="eS0405Rot<% = a%>" type="text" value="<%= rs(5)%>" size="10">
     
          </td>
        </tr>
        <% a = a + 1
        rs.movenext
        wend
        rs.close
        Set RS = Nothing
        %>

    Ziel ist eigentlich (nur), in jeder Zeile links den Spielernamen anzuzeigen und rechts daneben die fünf Eingabeformulare zum Editieren anzubieten.
    Wie kann man das arrangieren?
    LG, redwing78
     

  10. #10
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    ich glaube, Du hast den Sinn des Aufrufs eines indexes noch nicht richtig verstanden.

    Also am Beispiel Deines Select-Statements:

    sql = "select SpielerID,Nachname,Vorname,S0405Spiele,S0405Tore,S0405Gelb,S0405GelbRot,S0405Rot from Spieler WHERE Kader='1mannschaft'"

    im Select-Statement ruftst Du alle Felder auf, mit welchen Du später arbeiten möchtest.
    Jedes Feld hat einen Namen und gleichzeitig auch einen index (fortlaufende Nummer, beginnend mit 0)

    spielerID = 0
    Nachname = 1
    Vorname = 2
    etc.

    Das richtet sich IMMER danach, wie die Felder im Statement aufgeführt sind, also der Reihenfolge nach.. Nimmst Du anstelle dessen das berühmte *, dann richtet sich der index nach der Reihenfolge der in der Tabellen liegenden Felder.

    Ein index beginnt mit 0, also das 1. Feld ist immer rs(0), wenn Dein Recordset rs heißt. Anstelle von rs(0) kannst Du auch den Namen des Feldes nehmen, hier rs("spielerid"), (auf Dein Beispiel bezogen). das kommt auf das geleiche heraus.

    Was und wie man es letztlich programmiert, ist situationsbedingt. Ich z.B. nutze meist den Index, da meine Strukturen meist gleich sind und ich net so viel verändern muss, wenn ich sie woanders anwende.

    Nochmal zur Lösung Deines Problems:
    Das Feld Nachname könntest Du jetzt entweder mit rs(1) aufrufen oder mit rs("nachname"), Feld vorname mit rs(2) oder mit rs("vorname"), Feld S0405Spiele entweder mit rs(3) oder mit rs("S0405Spiele") etc.

    Ich denke mal, Du wirst jetzt sehen, wo Dein Fehler genau liegt.
    Geändert von Luzie (16.07.05 um 20:55 Uhr)
     
    liebe Grüße, die Luzie

  11. #11
    redwing78 redwing78 ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Beiträge
    75
    Hallo Luzie,
    danke vielmals für deine ausführlichen Anweisungen bzw. Deine Engelsgeduld.
    Die Sache scheint jetzt zu funktionieren - ich werde das Ganze in den nächsten Tagen ausführlich testen, um sicherzugehen, daß die Daten verlässlich gespeichert werden.
    Danke - LG,
    redwing78
     

Ähnliche Themen

  1. Update mehrerer Datensätze gleichzeitig
    Von jack007 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 13.08.08, 19:35
  2. Datensätze aktualisieren
    Von jack007 im Forum PHP
    Antworten: 11
    Letzter Beitrag: 17.07.07, 11:50
  3. Freischaltfunktion/Update mehrerer Datensätze
    Von baeckerjunge im Forum PHP
    Antworten: 1
    Letzter Beitrag: 19.02.07, 09:38
  4. Datensätze zwei oder mehrerer Tabellen zusammenzählen
    Von LV2005 im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 27.06.06, 07:29
  5. Aktualisierung mehrerer Datensätze
    Von redwing78 im Forum ASP
    Antworten: 0
    Letzter Beitrag: 25.02.06, 11:56