Datenbank + Checkboxen

DB auslesen und Checkbox erstellen - Rückspeichern

  • Checkbox automatisch

    Abstimmungen: 0 0,0%
  • Datenbank

    Abstimmungen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    0

Grandpapit

Grünschnabel
Hallo zusammen,
ich habe folgendes Problem.
Ich möchte Daten aus Datenbank auslesen was auch kein Problem darstellt.
Beim Auslesen muß sich automatisch für jeden Datensatz eine Checkbox erstellen.
Hier kann ich die Datensätze auswählen die ich möchte.
Wenn ich auf dann auf speichern gehe, sollen alle markierten Datensätze eine Änderung in einer Datensatzspalte bekommen
z.B. Spalte "abgerechnet" von Wert "0" auf Wert "1".
Einzelne Datensätze auslesen und ändern ist kein Problem das funktioniert enwandfrei.
Danke schon einmal für euere Hilfe.
 

Grandpapit

Grünschnabel
Hallo, ich hatte dieses Problem noch nicht. Ich habe dazu keinen Ansatz wie ich das realisieren kann, das ich die DB auslese, und bei der Anzeige automatisch eine Checkbox erstelle. Da ich nicht jeden Datensatz einzeln aufrufen möchte benötige ich eben diese Möglickeit da ich in der Anzeige die einzelnen Sätze auswählen kann und auf einmal mehrere Datensätze auf einmal ändern kann.
 

Sempervivum

Erfahrenes Mitglied
Das findet ja in mehreren Stufen statt:

Eine Tabelle erstellen mit den Checkboxen in einer Spalte. Und diesen einen geeigneten Namen geben. Hast Du da schon einen Ansatz oder weißt Du überhaupt nicht, wie man das angeht?

Nach dem Abschicken des Formulars den Zustand der Checkboxen lesen und entspr. die Änderungen in der Datenbank durchführen. Letzteres scheinst Du zu beherrschen.
 

bdt600

Mitglied
UNGETESTET
PHP:
<?php
   // script1.php
  
   // DB-Connect
   $mysqli = mysqli_connect("host", "user", "passwort", "datenbank");
  
   if (mysqli_connect_errno())
    die ("Cannot connect to database: " . mysqli_connect_error());

   // Daten auslesen
   $query = "select `id`, `description`, `value` from `tabelle` order by `id`";
  
   $result = mysqli_query($mysqli, $query)
               or die("MySQL-Error: " . mysqli_error($mysqli));

   // Formular mit Tabelle
   echo "<form action='script2.php' method='post'>
           <table>\n";
  
   while ($data = mysqli_fetch_assoc($result))
   {
      // ID
      $id = $data['id'];
      
      // Checked ja/nein
      $checked = $data['value'] ? 'checked' : '';
      
      // Zeile ausgeben
      echo "<tr>
             <td>"  . $data['id'] . "</td>
             <td>"  . $data['description'] . "</td>
             <td><input type='checkbox' name='checkbox[$id]' $checked></td>
            </tr>\n";
   }
  
   echo "</table>
         <input type='submit' name='submit' value='Speichern'>
         </form>\n";
?>

PHP:
<?php
   // script2.php
  
   if (isset($_POST['submit']))
   {
      // DB-Connect
      $mysqli = mysqli_connect("host", "user", "passwort", "datenbank");
  
      if (mysqli_connect_errno())
        die ("Cannot connect to database: " . mysqli_connect_error());
      
      // Array für verarbeitet ID's     
      $ids = array();
      
      foreach ($_POST['checkbox'] as $id => $value)
      {
          // Update der DB
          $query = "update `tabelle` set `value`=1 where `id`=$id;";
          
          mysqli_query($mysqli, $sql)
            or die("MySQL-Error: " . mysqli_error($mysqli));
        
         // Id speichern         
         $ids[] = $id;
      }
      
      // Alle nicht gesetzten Werte auf 0 setzen
      $query = "update `tabelle` set `value`=0 where `id` not in (" . implode(',', $ids) . ")";
      
      mysqli_query($mysqli, $query)
        or die("MySQL-Error: " . mysqli_error($mysqli));     
  }
?>

Das ist jetzt einfach mal so runtergeschrieben und vermutlich nicht fehlerfrei. Aber das Prinzip sollte klar werden.