Update MySQL Tabelle durch Checkboxhäkchen

buddymaster

Mitglied
Guten Tag,

auf die Gefahr hin, dass es dieses Thema schon tausendmal gibt, versuche ich es trotzdem nochmal.

Ich habe eine Checkbox:
HTML:
<input type="checkbox" onchange="sendRequest()"/>

Nun möchte ich, dass beim Click auf diese Checkbox meine MYSQL- Datenbank sich automatisch updated, ohne dass die Seite neu geladen wird. Ich habe durch Google- Recherche heraus gefunden, dies geht durch AJAX. Nun frage ich mich: Wie?

Meine MYSQL- Tabelle heißt: "uebergabe" und es geht und die Spalte "gelesen_1".

Ich weiß wohl auch schon, dass man einen Javasriptteil, einen HTML- Teil und ein PHP- Teil braucht!

Kann mir jemand helfen? Ich möchte es gern in den Grundzügen verstehen!
 
All' das, was du geschrieben hast, stimmt auch, so vom Prinzip her. Du musst letztendlich darauf achten, dass bei einer Änderung eine AJAX-Anfrage an ein PHP-Skript geschickt wird mit entsprechenden Parametern. Das PHP-Skript nimmt die Werte entgegen, verarbeitet sie und schickt dir am Ende eine Antwort mit beliebigen Inhalt (beliebig heißt, dass du das selber definieren kannst). Die Frage wäre also, ob du beispielsweise nur einen bestimmten Datensatz aktualisieren willst oder die ganze Tabelle, woher die Werte kommen et cetera.
 
Ich möchte nur einen Datensatz ändern. Ich möchte aus erledigt_1 mit dem Wert 0 den Wert 1 machen (boolean).
Wie genau funktioniert das mit dem Javascript und Php- Teil. "onchange='sendRequest()' hat doch bestimmt eine wichtige Bedeutung zur Sendung an Javascript!
 
Das hatte ich wohl falsch verstanden. Der Aufbau meiner Tabelle ist folgendermaßen:
id|zeitpunkt_eintrag|text|gelesen_1|erledigt

Nun sehe ich auf meiner Seite die verschiedenen Einträge "text". Dahinter dann ein Häkchen "gelesen". Wenn ich auf "gelesen" drücke, soll in der Tabelle gelesen_1 der Wert von 0 auf 1 gesetzt werden. Dies soll mit Ajax geschehen, da es sehr viele Einträge "text" geben kann. Außerdem kann ich mich nicht darauf verlassen, das der User nach der Checkbox noch einen Submit- Button drückt.
 
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
}
 
Zuletzt bearbeitet:
HTML:
<td><form id="form-datasets" method="post"><input type="checkbox" name="checkbox" value="<?php $row->id ?>" />gelesen<br /></form></td>
Die Checkbox befindet sich in der Tabelle. Ich glaube so ist es richtig!

Muss in die Datei update.php nur noch das Datenbank-Update?
PHP:
if(isset($_POST['checkbox'])) {
mysql_query("UPDATE uebergabe SET erledigt_1=1 WHERE id=$checkbox");
}

Wäre das so richig?
 
Kleine Änderung:
PHP:
// deine Variante, wird dir aber nichts ausgeben
<?php $row->id ?>

// so müsste es sein
<?php echo $row->id; ?>
Und ja, wenn du zu da schon die Verbindung zur Datenbank aufgebaut hast und die Datenbank ausgewählt hast. Aber du solltest trotzdem noch etwas ändern:
PHP:
if(isset($_POST['checkbox'])) {
  mysql_query('UPDATE uebergabe SET erledigt_1=1 WHERE id=' . (int) $_POST['checkbox']);
}
Außerdem solltest du noch irgendwie überprüfen, ob die Abfrage erfolgreich war et cetera.
 
Hab alles so gemacht! Funktioniert aber nicht. Wo liegt der Fehler? Leider kommt keine Fehlermeldung!

Ich denke mal es liegt am Javascrip-Teil. Denn ich glaube, es geht um checkbox, nicht id. Ich hab es schon abgeändert, aber funtkioniert nicht.
 
Zuletzt bearbeitet:
Dann versuch' es doch zu debuggen! Schau dir erstmal deinen HTML-Quelltext an, ob da auch die IDs drin stehen, wie gewollt. Dann kannst du mal schauen, ob in der Javascript-Konsole irgendwelche Fehlermeldungen stehen. Und dann kannst du einfach mal schauen, was passiert, wenn du normal von einem Formular aus Daten per POST an dein PHP-Skript schickst.
 

Neue Beiträge

Zurück