Ankündigung

Einklappen
Keine Ankündigung bisher.

UPDATE in mySql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • UPDATE in mySql

    Hallo Leute
    ich habe in meine kleinen Projekt schon eine ganze Menge geschafft und viel gelernt.
    Aber das Prinzip Datensätze die geändert wurden in die Tabelle zurück zu schreiben krieg ich einfach nicht hin. Habe Grundlagen gelernt und viel gelesen aber ich bin an verzweifeln.
    Kan mir mal jemand einen Denkanstoß geben wie ich in meinen code einen Button einbaue der mir die geänderten Daten zurückschreibt.

    So frage ich meine Tabelle ab und gebe sie in Textboxen aus.

    <html>
    <head>

    <title>updergebniss</title>

    </head>
    <form action="index.html">
    <input style="height: 50px; width: 200px;" type="submit" value="Ausgabe Eingabe">
    </form>
    <?php

    /* Variabele etfangen von Post */
    $au = $_POST["au"];
    $datum1 = $_POST["datum1"];
    $datum2 = $_POST["datum2"];
    //***************************
    // Verbindung zur Datenbank
    //***************************

    $db_server = 'localhost';
    $db_name = ;
    $db_user = ;
    $db_passwort = ;

    /* Erstellt Connect zu Datenbank her */
    $db = @ mysql_connect ( $db_server, $db_user, $db_passwort )
    or die ( 'Keine verbindung' );

    $db_check = @ mysql_select_db ( $db_name );

    if ( $db )



    if (empty($au)) {
    $au = "%";
    }

    $result = mysql_query("SELECT * FROM stunden1 WHERE au = '$au' OR kunde = '$au' OR date >= '$datum1' AND date <= '$datum2'ORDER BY date DESC");

    if($result) {
    echo '<table border="1">';



    while($zeile = mysql_fetch_array($result))


    {
    echo "<tr>";
    echo "<td><input type=\"text\" size=\"10\" name=\"id\" value=\"$zeile[id]\"></td>";
    echo "<td><input type=\"text\" size=\"10\" name=\"datum\" value=\"$zeile[datum]\"></td>";
    echo "<td><input type=\"text\" size=\"10\" name=\"au\" value=\"$zeile[au]\"></td>";
    echo "<td><input type=\"text\" size=\"25\" name=\"kunde\" value=\"$zeile[kunde]\"></td>";
    echo "<td><input type=\"text\" size=\"25\" name=\"mitarbeiter\" value=\"$zeile[mitarbeiter]\"></td>";
    echo "<td><input type=\"text\" size=\"25\" name=\"taetigkeit\" value=\"$zeile[taetigkeit]\"></td>";
    echo "<td><input type=\"text\" size=\"5\" name=\"stunden\" value=\"$zeile[stunden]\"></td>";
    echo "</tr>";
    }
    echo "</table>";



    } else {
    echo mysql_error();
    }
    ?>
    </html>


  • #2
    um datensätze zu ändern:

    PHP-Code:
    $result mysql_query("UPDATE $Tabellenname SET $Zellenname='$neuer_wert' WHERE id = $datensatzID"); 
    Nach "SET" kannst du natürlich beliebig viele name-wert-paare einsetzen.

    Kommentar


    • #3
      Moin.

      Erstmal zu deiner Art des Datenbankzugriffs:
      Die mysql_* Erweiterung ist veraltet und wird in der nächsten PHP-Version entfernt.
      Durch einen Wechsel auf mysqli_* oder PDO greifst du auf die modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections schützen.
      Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm

      Dann entferne bitte noch die @'s aus deinem Script. Du möchtest keine Fehlermeldungen unterdrücken, sondern sie behandeln.

      Als nächstes empfehle ich dir, diese Massenausgabe per echo zu ändern. Das wird sehr schnell unübersichtlich und deine IDE ist eventuelle nicht in der Lage dir Fehler im HTML zu markieren, wenn du es in eine Zeichenkette steckst.
      Ich gebe solche Blöcke z.B. so aus:
      PHP-Code:
      while($zeile = mysql_fetch_array($result))
      {
      ?>
              <tr>
                  <td><input type="text" size="10" name="id" value="<?= $zeile['id'?>"></td>
                  <td><input type="text" size="10" name="datum" value="<?= $zeile['datum'?>"></td>
                  <td><input type="text" size="10" name="au" value="<?= $zeile['au'?>"></td>
                  <td><input type="text" size="25" name="kunde" value="<?= $zeile['kunde'?>"></td>
                  <td><input type="text" size="25" name="mitarbeiter" value="<?= $zeile['mitarbeiter'?>"></td>
                  <td><input type="text" size="25" name="taetigkeit" value="<?= $zeile['taetigkeit'?>"></td>
                  <td><input type="text" size="5" name="stunden" value="<?= $zeile['stunden'?>"></td>
              </tr>
      <?php
      }
      - Kurzform von echo nutzen "<?= ... ?>"
      - Index des Arrays als Zeichenkette übergeben, wenn es denn eine ist. Mit $zeile[stunden] wird erst nach der Konstanten "stunden" gesucht, wird die Konstante nicht gefunden wird eine Notiz verwendet, dass stattdessen der String 'stunden' verwendet wurde.

      Zu deiner eigentlichen Frage, ich empfehle dir, auf eine Tabelle zu verzichten. Du bräuchtest für jede Zeile ein eigenes Formular, dabei würde kein valides HTML rauskommen und die tatsächlich valide Lösung wäre sehr hässlich. (So weit ich weiß, Zweitmeinungen erwünscht.)
      Du kannst allerdings mit anderen Elementen, wie DIVs, arbeiten und das Design einer Tabelle mit CSS ziemlich einfach nachstellen.
      grobes Beispiel:
      PHP-Code:
      <style>
          .tableRow{
              display: inline-table;
          }
          
          .tableColumn{
              display: inline-table;
              border: 1px solid black;
          }
      </style>
      <?php
      while($zeile mysql_fetch_array($result)) 
      {
      ?>
      <fieldset class="tableRow">
          <form method="post" action="doIt.php">
              <div class="tableColumn">
                  <input type="test" name="id">
              </div>
              <div class="tableColumn">
                  <input type="test" name="datum">
              </div>
              <div class="tableColumn">
                  <input type="test" name="au">
              </div>
              <div class="tableColumn">
                  <input type="test" name="kunde">
              </div>
              <div class="tableColumn">
                  <input type="test" name="mitarbeite">
              </div>
              <div class="tableColumn">
                  <input type="test" name="taetigkeit">
              </div>
              <div class="tableColumn">
                  <input type="test" name="stunden">
              </div>
              <div class="tableColumn">
                  <input type="submit" name="senden" value="Update">
              </div>
          </form>
      </fieldset>
      <?php
      }
      War jetzt zu faul die Values auch wieder mit reinzunehmen, aber das kannst du ja dann schnell machen. Und dann passte noch das Design an und die Lösung wäre annehmbar. (nicht vergessen das action-Attribut der Form noch anzupassen)
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        Hallo und vielen Dank.
        Das alles werde ich nun mal in Angriff nehmen.
        Und euch auch mal einen Zwischenstand geben.
        Noch mal vielen Dank

        Kommentar

        Lädt...
        X