Update MySQL Tabelle durch Checkboxhäkchen

ich finde den Fehler nicht. Ich habe jetzt mal den "name" der Checkbox in "id" umbenannt. Es funktioniert aber nicht. Sende ich die Checkbox normal mit POST und submit-Button wird meine Tabelle aktualisiert.
Ich verstehe den Javascript-Teil aber nicht, so dass ich da nicht viel ändern/ probieren kann!
 
Fehler gefunden: lade dir jQuery mal runter und binde es dann als externes Skript ein – und zwar vor das andere Skript.
 
HTML:
<form id="form-datasets">
  <input type="checkbox" value="1" />Datensatz mit ID 1<br />
  <input type="checkbox" value="2" />Datensatz mit ID 2<br />
  <!-- ... -->
</form>
Code:
$(document).ready(function () {
  $('#form-datasets input[type=checkbox]').click(function () {
    var element = $(this);
    var id = element.attr('value');
    element.attr('disabled', 'disabled');
    $.post('update.php', { id: id })
      .complete(function () {
        element.attr('disabled', null);
      })
      .success(function () {
        element.remove();
      })
      .error(function () {
        alert('Abfrage fehlgeschlagen.');
        element.attr('checked', (element.attr('checked') === 'checked') ? null : 'checked'); 
      });
  });
});
PHP:
if(isset($_POST['id'])) {
  // Datenbankkrams
}

Hallo,

klasse Löung. Bin gerade darauf gestoßen und kann sie super verwenden.

2 Fragen dazu aber:

1) Was bedeutet das hier genau?
PHP:
    .complete(function () {
        element.attr('disabled', null);

2) Kannst Du auch noch sowas einbauen, dass alle anderen Checkboxen für den Zeitraum des Ajax-Requests ausgegraut werden?

Oder, dass solange der Request läuft, ein Ladesymbol angezeigt wird?

Ach, ne 3. Frage noch:

3) Kann man auch von der update.php eine Antwort verwerten? Also bspw. "Artikel wurde eingetragen" oder "Artikel wurde ausgetragen", je nachdem, was die checkbox bewirkt hat?

Mir ist noch ne 4. Frage eingefallen:

4) Kann ich dem updatescript noch weitere Parameter mitgeben, außer der ID?
Und wenn ja, wie?

Und kann ich auch der JQuery-Funktion bei anklicken der Checkbox den aktuellen Zustand der Checkbox mitgeben (also checked oder nicht checked, und zwar VOR dem Ajax-Request)

Gruß, Kurt
 
Zuletzt bearbeitet:
Oh. Ich vermute, zu viele Fragen auf ein mal. Das schreckt eher ab?

Oder ich bin zu ungeduldig ;-)

Kurt
 
Ich habe deine Fragen schon gelesen, hatte bisher aber keine Zeit (und keine Motivation) sie zu beantworten.

Also gehen wir mal durch:

Was bedeutet das hier?
Code:
.complete(function () {
  element.attr('disabled', null);
Wenn die Anfrage abgeschlossen wurde, wird die Eigenschaft disabled auf null gesetzt, also ist das Auswahlkästchen danach nicht mehr gesperrt.

Kannst Du auch noch sowas einbauen, dass alle anderen Checkboxen für den Zeitraum des Ajax-Requests ausgegraut werden?
Klar kann ich:
Code:
$(document).ready(function () {
  $('#form-datasets input[type=checkbox]').click(function () {
    var element = $(this);
    var id = element.attr('value');
    $('input[type=checkbox]').attr('disabled', 'disabled');
    $.post('update.php', { id: id })
      .complete(function () {
        $('input[type=checkbox]').attr('disabled', null);
      })
      .success(function () {
        element.remove();
      })
      .error(function () {
        alert('Abfrage fehlgeschlagen.');
        element.attr('checked', (element.attr('checked') === 'checked') ? null : 'checked'); 
      });
  });
});

Kann man auch von der update.php eine Antwort verwerten? Also bspw. "Artikel wurde eingetragen" oder "Artikel wurde ausgetragen", je nachdem, was die checkbox bewirkt hat?
Ja, kann man:
Code:
$.post('update.php', { id: id }, function (data) {
  alert(data);
  // in "data" sind jetzt die Antwortdaten des Servers enthalten
});

Kann ich dem updatescript noch weitere Parameter mitgeben, außer der ID?
Und wenn ja, wie?

Ja, natürlich geht das. An der Stelle wo { id: id } steht, übergibst du ein Objekt, das alle gewünschten Parameter enthält, und dort kannst du so viele Parameter definieren, wie du möchtest:
Code:
{ arg1: value1, arg2: value2, arg3: value3 }

Und kann ich auch der JQuery-Funktion bei anklicken der Checkbox den aktuellen Zustand der Checkbox mitgeben (also checked oder nicht checked, und zwar VOR dem Ajax-Request)
Wie jetzt?
 
Oh. Ich vermute, zu viele Fragen auf ein mal. Das schreckt eher ab?


Ich habe deine Fragen schon gelesen, [...] keine Motivation sie zu beantworten.


Lach. Sagte ich ja ;-)

Also, erstmal 1000 Dank für Deine Antwort, Du bist echt ein Crack :-)

Das remove element habe ich wieder raus genommen, das wollte ich nicht.

Also gehen wir mal durch:


Ja, kann man:
Code:
$.post('update.php', { id: id }, function (data) {
  alert(data);
  // in "data" sind jetzt die Antwortdaten des Servers enthalten
});

?

Und wie schicke ich die Daten von update.php los?

Ich habe es so versucht, das klappte aber nicht:

Code:
<?php
$data = "Tralalalala";
echo json_encode($data);
?>
Und kann ich auch der JQuery-Funktion bei anklicken der Checkbox den aktuellen Zustand der Checkbox mitgeben (also checked oder nicht checked, und zwar VOR dem Ajax-Request)
Wie jetzt?


Ist nicht wirklich so wichtig. ich dachte, es könnte wichtig sein, den zustand der Checkbox clientseitig abzufragen, das kann aber auch der Server selber übernehmen.

Gruß, kurt
 
Zurück