Antworten auf deine Fragen:
Neues Thema erstellen

Daten in die Datenbank mit PHP bei AJAX

ms2002

Nicht mehr ganz neu hier

Hallo zusammen,
ich wollte eigentlich eine schnelle kleine Webapp für meine Frauenmannschaft programmieren, aber irgendwie komm ich immernoch nicht ganz mit AJAX klar und hoffe ihr könnt mir bei meinem Problem ein wenig weiter helfen.

Situation:
Ich erzeuge nach erfolgreichem Login eine beliebige, von mir mittels Variablen eingestellte Reihe an Checkboxen mit dazugehörigen Textfeldern. Diese kann man nun so einstellen, wie man es für richtig hält. Anschließend sollen mit einem klick auf den senden-Button alles kontrolliert und anschließend in die DB eingetragen werden. Ich habe in dem AJAX-Part eine Schleife erstellt, worin er die Daten der einzelnen Checkboxen und Textfeldern Zeilenweise in die Datenbank eingeben soll.

Nun zu meinem Problem:
Er trägt immer nur die letzte Reihe an Checkboxen und Textfelder in die Datenbank und überspringt scheinbar alle anderen. Woran kann das liegen? Wie kann ich es besser machen?

Folgend noch der Code zu dem Problem:
js-Datei
Code:
function abmelden(){
    // damit die Liste nicht ewig lang wird an Fehlermeldungen und immer wieder von vorn beginnt
    //document.getElementById("fehlermeldungen").innerHTML="";
    // damit geschaut werden kann, ob auch etwas gewählt wurde TODO
    // wenn gewaehlt = true -> kann etwas in die Datenbank geschrieben werden TODO
    for (i=0; i<5; i++){
        if (document.getElementById("ch_"+i).checked){
            if(document.getElementById("grund_"+i).value == ""){
                document.getElementById("fehlermeldungen").innerHTML = document.getElementById("fehlermeldungen").innerHTML +"<br/> Du hast vergessen einen Grund in der "+(i+1)+". Trainingseinheit anzugeben, obwohl du nicht kommst!";
                break;
            }
            else
            {
                 //eintragen in die DB
                resObjekt.open('get','phpsnippets/absage_eintragen.php?tid='+document.getElementById("ch_"+i).value+'&sid='+document.getElementById("spieler_id").value+'&grund='+document.getElementById("grund_"+i).value,true);
                resObjekt.onreadystatechange = eintragung_komplett;
                resObjekt.send(null);
            }
        }    
    }

}

function eintragung_komplett(){
    if(resObjekt.readyState == 4){
        
        document.getElementById("fehlermeldungen").innerHTML= resObjekt.responseText+"<br/>";

    }
}
hier noch die php-Datei zum Eintragen in die DB:
Code:
include("../connection/db_user.php");
// Variablen deklarieren
$sid = $_REQUEST['sid'];
$tid = $_REQUEST['tid'];
$grund = $_REQUEST['grund'];

// nun wird überprüft, ob es den Eintrag schon gibt und zunächst danach gesucht
$vorhanden = "SELECT sid, tid FROM abmelden WHERE sid = '$sid' AND tid = '$tid'";
$ausgabe_vorhanden = mysql_query($vorhanden);
if (mysql_num_rows($ausgabe_vorhanden) > 0){
    // nun soll die vorhandene Absage in der Tabelle aktualisiert werden
    $eintrag_absage = "UPDATE abmelden SET grund = '$grund' WHERE sid = '$sid' AND tid = '$tid'";
    $eintragen = mysql_query($eintrag_absage);
    //echo $eintrag_absage;
}
else
{
    // nun soll die Absage in die Datenbank eingetragen werden
    $eintrag_absag = "INSERT INTO abmelden (sid, tid, grund) VALUES ('$sid', '$tid', '$grund')";
    $eintrag_a = mysql_query($eintrag_absag);
    echo $eintrag_absag;
    
}

Vielen Lieben Dank für die Mühe schonmal,
Liebe Grüße,
Maik
 

ms2002

Nicht mehr ganz neu hier

AW: Daten in die Datenbank mit PHP bei AJAX

Ich konnte eben das Problem selbst lösen.
Für alle, die das gleiche Problem haben, kann ich nur sagen, dass man bei dem
""resObjekt.open('get','url',true);" -Befehl darauf aufpassen muss, den letzten Parameter auf false zu setzen, damit das Script wartet, bis diese Anfrage bearbeitet ist und nicht alle Anfragen überschreibt, sodass letztendlich nur das letzte ausgeführt wird.

Liebe Grüße
 

ChrisvA

Aktives Mitglied

AW: Daten in die Datenbank mit PHP bei AJAX

Noch eine kleine Sicherheitsinfo, alles was in die Datenbank eingetragen werden soll und vom Benutzer kommt. (Also über Get/Post/Cookie) mit mysql_real_escape_string() maskieren. Sonst können findige Leute dir die Ganze Datenbank auseinander nehmen, falls sie den Fehler entdecken.

PS Du bist dir hoffentlich im klaren darüber, dass man JS beliebig manipulieren kann und damit jeden Prüfung außer Kraft setzen kann, oder?
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben