Fabian St.: /MySQL: Datensätze bearbeiten und wieder abspeichern

Hi!

Um die in einer Tabelle vorhandenen Datensätze zu ändern, bin ich bisher immer folgendermaßen vorgegangen:

1. Ich lasse mir alle Datensätze einer Tabelle durch eine SELECT-Abfrage anzeigen, zudem erscheint neben jedem Datenstz ein Radio-Button mit dem Namen "auswahl", wobei der das/der (?) Value des Radiobuttons gleich der ID des Datensatzes ist. Durch einen Submit-Button wird die ausgewählte ID der Datei site2.php übermittelt.

2. Eine erneutete Datenbank-Anfrage

$sql = "SELECT
          ID, name, titel, inhalt
        FROM
          news
        WHERE ID = '".$_POST['auswahl']."';";
$result = mysql_qeury($sql);
$rows = mysql_fetch_assoc($result);

schreibt nun die verschiedenen Werte des Arrays $rows in die value-Felder eines Formulars, mit Hilfe dessen die Werte nun geändert werden können. Ein erneuter Klick auf einen Submit-Button schickt die Daten an site3.php.

3. Die über POST/GET übermittelten Variablen werden mittels des SQL-Befehls UPDATE in der Tabelle gespeichert.

Mir erscheint das Ganze ziemlich mühsam, immerhin sind dazu 3-Seiten nötig. Geht das nicht einfacher?
Ist es den ratsam z.B. den ersten und zweiten Schritt in einer Seite zu machen, also z.B. im Formular action="<?php echo $_SERVER['PHP_SELF'] ?>" zu schreiben und danach eine If-Abfrage

if($_POST['auswahl']) //ggf. GET
  {
   ...
  }

zu platzieren? Wie macht Ihr das?

Grüße,
Fabian St.

--
Endlich online: http://fabis-site.net
--> XHTML, CSS, PHP-Formmailer, Linux
Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
  1. Hello,

    Mir erscheint das Ganze ziemlich mühsam, immerhin sind dazu 3-Seiten nötig. Geht das nicht einfacher?

    suche: "Affenformular"

    Außerdem habe ich über "academic Locking" hier auch schon mal was geschreiben und im Thread
    http://forum.de.selfhtml.org/archiv/2004/5/82138/ sind diese Techniken auch beschreiben.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi Tom!

      suche: "Affenformular"

      Habe ich gemacht - im Forumsarchiv von 2003/04. Ich weiß, dass mit "Affenformular" Formulare bezeichnet werden, die sich an sich schicken und nach Abhandlung bestimmter Funktionen einer anderen Funktion zur weiteren Überarbeitung übergeben werden.

      Außerdem habe ich über "academic Locking" hier auch schon mal was geschreiben und im Thread
      http://forum.de.selfhtml.org/archiv/2004/5/82138/ sind diese Techniken auch beschreiben.

      Was hat academic Locking mit meiner Frage zu tun?

      Grüße,
      Fabian St.

      --
      Endlich online: http://fabis-site.net
      --> XHTML, CSS, PHP-Formmailer, Linux
      Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
      1. Hello,

        Was hat academic Locking mit meiner Frage zu tun?

        Das hat etwas mit Multiuser-Betrieb und Client Server-Technik zu tun. Häufig vergessen die Programmierer von Scripten, dass sie nicht alleine auf der Welt sind. Wenn Du keinen Multi-User-Betrieb brauchst, brauchst Du eigentlich auch keine Scripte für Client-Server-Technik. Dann kannst Du Deine Applikation als Einzelplatzanwendung auf deinem Desktop laufen lassen.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hi!

          Das hat etwas mit Multiuser-Betrieb und Client Server-Technik zu tun. Häufig vergessen die Programmierer von Scripten, dass sie nicht alleine auf der Welt sind. Wenn Du keinen Multi-User-Betrieb brauchst, brauchst Du eigentlich auch keine Scripte für Client-Server-Technik. Dann kannst Du Deine Applikation als Einzelplatzanwendung auf deinem Desktop laufen lassen.

          Vorerst soll der Admin-Bereich(wobei meine obige Ausgangsfrage ein Teil davon ist) nur mir zugänglich sein. Der Multi-User-Betrieb kommt - wenn überhaupt - erst später, wodurch ich mich darum eigentlich jetzt nicht kümmern möchte.
          Wenn ich das Grundgerüst fertig programmiert habe, kann ich mich daran nochmal setzen.

          Grüße,
          Fabian St.

          --
          Endlich online: http://fabis-site.net
          --> XHTML, CSS, PHP-Formmailer, Linux
          Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
          1. Hello,

            Das hat etwas mit Multiuser-Betrieb und Client Server-Technik zu tun. Häufig vergessen die Programmierer von Scripten, dass sie nicht alleine auf der Welt sind. Wenn Du keinen Multi-User-Betrieb brauchst, brauchst Du eigentlich auch keine Scripte für Client-Server-Technik. Dann kannst Du Deine Applikation als Einzelplatzanwendung auf deinem Desktop laufen lassen.

            Vorerst soll der Admin-Bereich(wobei meine obige Ausgangsfrage ein Teil davon ist) nur mir zugänglich sein. Der Multi-User-Betrieb kommt - wenn überhaupt - erst später, wodurch ich mich darum eigentlich jetzt nicht kümmern möchte.

            Das verstehe ich jetzt nicht.
            Welche Dateien "administrierst" Du denn da? Wenn keine User mittels Script auf dieselben Dateien zugreifen, kannst Du Dir doch das ganze "Administrieren" sparen. Oder habe ich d jetzt was falsch verstanden? Befindest sich das ganze Projekt noch auf einem Testserver, auf den immer garantiert nur ein Client zur selben Zeit zugreift?

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hi Tom!

              Das verstehe ich jetzt nicht.
              Welche Dateien "administrierst" Du denn da? Wenn keine User mittels Script auf dieselben Dateien zugreifen, kannst Du Dir doch das ganze "Administrieren" sparen. Oder habe ich d jetzt was falsch verstanden? Befindest sich das ganze Projekt noch auf einem Testserver, auf den immer garantiert nur ein Client zur selben Zeit zugreift?

              Irgendwie reden wir aneinander vorbei... ;-)

              Zur Klärung der Ausgangssituation:
              Wie du vielleicht mitbekommen hast, habe ich vor kurzen meine Website fertiggestellt (Adresse siehe Signatur). Im Moment bin ich nun eben dabei ein News- sowie Kommentarskript zu schreiben, damit Besucher meiner Seite eventuell Kommentare zu bestimmten Artikeln abgeben können. Dazu gehört natürlich auch ein Admin-Bereich, wo ich dann neue News hinzufügen, oder Werbung, etc. aus den Kommentaren entfernen kann. Hierzu bin ich immer wie im Ausgangspost beschrieben vorgegangen. Nun habe ich mich eben gefragt, ob es keine kürzere Möglichkeit gibt, da das mit den drei Seiten doch ziemlich umständlich ist.
              Aus diesen Gründen verstehe ich Deine Ansätze zu den Multi-User-Fähigkeiten etc. nicht...

              Grüße,
              Fabian St.

              --
              Endlich online: http://fabis-site.net
              --> XHTML, CSS, PHP-Formmailer, Linux
              Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
              1. Hello,

                Aus diesen Gründen verstehe ich Deine Ansätze zu den Multi-User-Fähigkeiten etc. nicht...

                Wenn Du Änderungen vornimmst an der Seite über das Admintool, dann fährst Du also den Webservber vorher runter, damit niemand zugreifen kann, solnage Du änderst, gelle?

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hi Tom!

                  Wenn Du Änderungen vornimmst an der Seite über das Admintool, dann fährst Du also den Webservber vorher runter, damit niemand zugreifen kann, solnage Du änderst, gelle?

                  Nein, natürlich nicht;-)
                  Ich glaube, ich lese mir den Thread nochmal ganz durch - anscheinend bin ich zu dumm, dass zu kapieren...

                  Grüße,
                  Fabian St.

                  --
                  Endlich online: http://fabis-site.net
                  --> XHTML, CSS, PHP-Formmailer, Linux
                  Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
                  1. Hello,

                    Wenn Du Änderungen vornimmst an der Seite über das Admintool, dann fährst Du also den Webservber vorher runter, damit niemand zugreifen kann, solnage Du änderst, gelle?

                    Nein, natürlich nicht;-)
                    Ich glaube, ich lese mir den Thread nochmal ganz durch - anscheinend bin ich zu dumm, dass zu kapieren...

                    Es gibt demnächst mal eine erste Version eines Artikels über konkurrierenden Betrieb. Das ist dann bestimmt noch interessanter für Dich. Aber schau Dir mal die Funktinen zum Locking an. Das wäre der erste Schritt.

                    Harzliche Grüße aus http://www.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
  2. yo,

    Wie macht Ihr das?

    ich benutze dafür immer eine seite, die zwei teile beinhaltet und sich slebst aufruft,wenn man das formular abschickt. der erste bereich fragt ab, ob die variablen via POST/GET gesendet wurde. wenn ja, wird überprüft, was mit ihnen geschehen soll (update/delete/neu), ob sie korrekte inhalte haben und ob der user berechtigt ist, das zu tun.

    der zweite teil gibt das formular aus, in dem die daten angezeigt werden und ausgewählt werden können. um die beiden abschitte voneinder zu trennen, benutze ich eine hilfsvariable, die bei mir aus gewohnheit immer $ok in php heisst.

    am anfang setze ich $ok auf 0, wenn daten übermittelt wurden, setzte ich sie auf 1, wenn die daten fehlerhaft sind schreibe ich eine fehler variable und setze $ok wieder auf 0. wenn alles korrekt ist, schreibe ich die daten bei 1 rein. Schema:

    ...
    $ok=0;
    $fehler="";

    ...

    if (isset($_POST["variable"]))
       {
       $ok=1;
       ....
       Daten und berechtigung überprüfen
       wenn fehler dann $ok=0 und $fehler = "hier ist ein fehler"
       ...
       if ($ok)
          {
           Daten in die datenbank schreiben.
          }
       }
    if (!$ok)
       {
       if($fehler)
         echo $fehler;
       ...
       formular aufbauen und mit daten anzeigen
       ...
       }

    Ilja

    1. Hi!

      Wie macht Ihr das?

      ich benutze dafür immer eine seite, die zwei teile beinhaltet und sich slebst aufruft,wenn man das formular abschickt. der erste bereich fragt ab, ob die variablen via POST/GET gesendet wurde. wenn ja, wird überprüft, was mit ihnen geschehen soll (update/delete/neu), ob sie korrekte inhalte haben und ob der user berechtigt ist, das zu tun.

      Das Formular enthält die Daten eines Datensatzes, oder? Also generiert durch eine vorhergehende Datenbankabfrage?

      ...
      $ok=0;
      $fehler="";

      ...

      if (isset($_POST["variable"]))
         {
         $ok=1;
         ....
         Daten und berechtigung überprüfen
         wenn fehler dann $ok=0 und $fehler = "hier ist ein fehler"
         ...
         if ($ok)
            {
             Daten in die datenbank schreiben.
            }
         }
      if (!$ok)
         {
         if($fehler)
           echo $fehler;
         ...
         formular aufbauen und mit daten anzeigen
         ...
         }

      So ähnlich habe ich das auch mit einem Bool-Flag gelöst.

      Auf deine beschreibene Art und Weise würde man also mit 2 Seiten auskommen. Ich überarbeite mal meine Seiten :-)

      Grüße,
      Fabian St.

      --
      Endlich online: http://fabis-site.net
      --> XHTML, CSS, PHP-Formmailer, Linux
      Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
      1. yo,

        Auf deine beschreibene Art und Weise würde man also mit 2 Seiten auskommen. Ich überarbeite mal meine Seiten :-)

        mit einer seite. das formular der seite ruft sich selbst auf.

        Ilja