Checkbox in MySQL Tabelle Updaten

syntax

Mitglied
Hallo Leute,

ich will eine Checkbox in eine MySQL Tabelle Updaten.

Sieht auch alles gut aus, mein Problem ist nur das er es nicht in die Tabelle schreibt nachdem ich auf meinen Update-Button klicke.

Die Spalte für die Checkbox heißt BUCHUNG und ist tinyint / Null: Ja / Standartwert: 0

PHP:
    $sql = "SELECT id, buchung FROM arbeitszeiten";

   $abfrageergebnis = mysql_query( $sql ) or trigger_error(mysql_error(),E_USER_ERROR);

    $id = "id";
    $buchung = "buchung";
    $checked = ($buchung==1) ? 'checked="checked"' : '';
    
    $updated = FALSE;
    if(count($_POST) > 0){
    $buchung = $_POST['buchung'];
    array_map('intval',$buchung);
    $buchung = implode(',',$buchung);
    mysql_query("UPDATE arbeitszeiten SET buchung=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE arbeitszeiten SET buchung=1 WHERE id IN ($buchung)") or trigger_error(mysql_error(),E_USER_ERROR);
    $updated=TRUE;


    while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
    {
    echo '<table>';
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
    echo '<tr>';
    echo '<td><input type="checkbox" name="buchung[]" "value=' . $id .' '.$checked.'/  </td>';
    echo '</tr>';
    echo '</table>';
    }
    ?>

HTML:
    <table>
    <tr>
    <td><input type="submit" name="submit" value="Update"></td>
    </tr>
    </table>

Ich seh den Fehler einfach nicht. Bin für eure hilfe wie immer Dankbar :)
 
Zuletzt bearbeitet:
Also deine Abfrage funktioniert? Der SELECT

SQL:
SELECT id, buchung FROM tabelle

liefert Ergebnisse? Dann ist dein UPDATE falsch:

SQL:
UPDATE arbeitszeiten SET buchung=0
UPDATE arbeitszeiten SET buchung=1 WHERE id IN ($buchung)

Sollte wohl eher so lauten:

SQL:
UPDATE tabelle SET buchung=0
UPDATE tabelle SET buchung=1 WHERE id IN ($buchung)

Besser wäre es allerdings, wenn du

- mysql_error() bei den UPDATE-Queries verwendest
- deiner Tabelle einen vernünftigen Namen gibst

;-)
 
Soryy da hab ich mich im Thread verschrieben. Die Tabelle heißt Arbeitszeiten.

Hab auch oben im Quellcode "or trigger_error(mysql_error(),E_USER_ERROR);" eingefügt.

Wenn ich auf Update klicke kommt:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on)' at line 1 in /homepages.php on line 96
das ist die zeile

PHP:
mysql_query("UPDATE arbeitszeiten SET buchung=1 WHERE id IN ($buchung)") or trigger_error(mysql_error(),E_USER_ERROR);

Finde aber keinen Fehler.
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
 
Hallo Yaslaw,
da ich diesen Thread kenne hab ich ja schon wie oben geschrieben hinter mein SQL-Query "or trigger_error(mysql_error(),E_USER_ERROR); " geschrieben und er hat folgendes gesagt.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on)' at line 1 in /homepages.php on line 96
das ist die zeile

PHP:
mysql_query("UPDATE arbeitszeiten SET buchung=1 WHERE id IN ($buchung)") or trigger_error(mysql_error(),E_USER_ERROR);

Aber ich finde da keinen Fehler auch nicht in den anderen Zeilen.
Wie das manchmal halt so ist, der Wald will sich vor lauter Bäumen einfach nicht zeigen :)
 
Mach es doch mal so:

PHP:
$query = "UPDATE arbeitszeiten SET buchung=1 WHERE id IN ($buchung)";
mysql_query($query) or trigger_error(mysql_error() . "<br/>Bei Ausführung von<br/>'$query'",E_USER_ERROR);
 
Hey Leute,

hab jetzt ewig gesucht und den Fehler einfach nicht gefunden deshalb hab ich das jetzt nochmal anders gemacht.

PHP:
if ($_POST['submit']) {
      // Wenn Checkbox gesetzt = value-Wert sonsten wert 0
      if ($_POST['int01']) $int01 = $_POST['int01'];
      else $int01 = 0;

      mysql_query("UPDATE arbeitszeiten SET buchung = '$int01' WHERE id = '$id'");
      }

      $sql = "SELECT buchung FROM arbeitszeiten WHERE id='$id'";
      $result = mysql_query($sql);

      list($int01) = mysql_fetch_array($result);

PHP:
<?php
    while ($datensatz = mysql_fetch_array( $abfrageergebnis ))
    {
    echo '<table border="1">';
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
    echo '<tr>';
    echo '<td style="width:75px"><input type="checkbox" name="int01" value="1" <?php if ($int01 == "1") echo "checked";?> > </td>';
    echo '</tr>';
    echo '</table>';
    }
    ?>

Hab hier noch ein kleines Problem und komme da nicht recht weiter.
In der Zeile:

echo '<td style="width:75px"><input type="checkbox" name="int01" value="1" <?php if ($int01 == "1") echo "checked";?> > </td>';

Bei:

value="1" <?php ... ?>

weiß ich nicht wie ich da Klammern bzw. Punkte setzen muss.

Hab auch nicht so recht was im Netz dazu gefunden, ich habs aber schon mal gelesen.
Leider find ich das Tut über das Klammern setzen nicht.

Wäre schön wenn Ihr mir nochmal helfen könntet. Danke :)
 
Zurück