Ein bereits beschriebenes Feld in einer dynamischen Seite sperren

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

  • Ein bereits beschriebenes Feld in einer dynamischen Seite sperren

    Hallo
    Ich versuche, in meiner dynamischen Tabelle, die ich mit einem Formular aktualisieren kann ein bereits beschriebenes Feld zu sperren, damit es nicht mehr überschrieben werden kann. ich vermute es in dem folgenden Bereich einstellen zu können, weiß aber nicht wie. kann mir da jemand weiterhelfen?

    PHP-Code:
    ?><?php
    function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      
    $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;

    Gruß

  • #2
    Hm...

    Hi.

    Bin mir nicht sicher, ob ich die Problematik richtig verstehe. Habe zwei Lösungsansätze:

    1. Wenn du über ein Formular arbeitest, kannst Du (z.B.) das Eingabe Textfeld danach einfach sperren (einfach auf readonly setzen)
    2. extra Spalte in der DB mit einem Bolleaschen Wert, der nach einem Update geändert wird und bei einem SQL Befehl geprüft wird.

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Ja ich du hast mich richtig verstanden :-)
      die 1. Variante scheint die richtige für mich zu sein, weil ich das feld über ein anderes Forlulad dann wieder löschen muss.
      An welcher Stelle setze ich das Textfeld denn auf readonly?
      Das wären zwei Ausschnitte, aus meiner Formular.

      PHP-Code:
      if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
        $updateSQL = sprintf("UPDATE christines_termine_1 SET fehlt=%s WHERE Trainer=%s",
                             GetSQLValueString($_POST['fehlt'], "text"),
                             GetSQLValueString($_POST['Trainer'], "text"));
        mysql_select_db($database_christines_termine_1, $christines_termine_1);
        $Result1 = mysql_query($updateSQL, $christines_termine_1) or die(mysql_error());
       
       
       
      <input type="text" name="fehlt" value="<?php echo $row_christines_termine_1['fehlt']; ?>" size="32">
      Zuletzt geändert von Alain_S_; 14.08.2009, 13:37.

      Kommentar


      • #4
        Zitat von Alain_S_ Beitrag anzeigen
        An welcher Stelle setze ich das Textfeld denn auf readonly?
        Wie wär's denn mit der, an der du's ausgibst?

        http://de.selfhtml.org/html/formular...e.htm#nurlesen
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Gut! Geht es darum, dass das Textfeld insgesamt nicht mehr bearbeitbar ist, oder nur temporär (für die aktuelle Session)? Wenn nur für die Session, füllst du ein Hidden Feld mit einem Parameter und fragst ab, ob der existiert, wenn ja setzt du das Textfeld auf "readonly" (oder disabled), oder du füllst ne Session Variable.
          Wenn das dauerhaft (bei jedem Aufruf) sein soll, kommst du um eine Hinterlegung eines Wertes (z.B.in eine Datenbank) nicht drumherum. Beim Update setzt du dann in einer extra Spalte einen Booleaschen Wert (z.B. "1", "ja"...etc.) und lässt ihn bei einer SELECT Anweisung auslesen und befüllst damit ein Variable. Mit if fragst du dann im Textfeld, ab ob die Variable folgenden Wert hat...!

          Beispiel:

          PHP-Code:
          $qry = mysql_query("SELECT meinepruefungsspalte FROM meineTabelle, $datenbankconnection);

          while ($row = mysql_fetch_array($qry, MYSQL_ASSOC)){
           $meinepruefvariable = $row["meinepruefspalte"];
          }
          //...

          //Beispiel
          <input type="text" name="fehlt" value="<?php echo $row_christines_termine_1['fehlt']; ?>" size="32" <?php if ($meinepruefvariable == "1"){ echo "readonly"; } ?>>
          mfg streuner
          Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
          der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

          "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

          Kommentar


          • #6
            Ok, dann muss ich das doch bisschen genauer erklären.
            Ich habe eine Seite, auf der die Felder mit einem Formular beschrieben werden können. Auf dieser Seite dürfen die bereits beschriebenen Felder nicht überschrieben werden.
            Und dann habe ich eine zweite Seite für den "Admin", auf der er die Einträge verändern und löschen kann.
            Dashalb muss ich die sperre in das Fromular der ersten Seite einsetzen.
            Gruß

            Kommentar


            • #7
              Zitat von Alain_S_ Beitrag anzeigen
              Ich habe eine Seite, auf der die Felder mit einem Formular beschrieben werden können. Auf dieser Seite dürfen die bereits beschriebenen Felder nicht überschrieben werden.
              Dann stellt sich zuerst mal die Frage, ob sie dann überhaupt Formularfelder sein müssen.
              Und dann habe ich eine zweite Seite für den "Admin", auf der er die Einträge verändern und löschen kann.
              Dashalb muss ich die sperre in das Fromular der ersten Seite einsetzen.
              Dass diese "Sperre" aber für die Katz' ist, wenn du die übergebenen Werte dann trotzdem auswertest, ist dir hoffentlich bewusst.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Es geht mir auf der ersten Seite nur darum, dass die Felder von dieser Seite nicht überschrieben werden können. Das gibt ein Terminkalender, und sonst könnten die Leute Termine einfach überschreiben. Aber die Mitarbeiter benötigen eine Möglichkeit, falsche Termine zu löschen oder zu ändern. Wenn ich dich richtig verstanden habe, müsste dein Hinweis entkräftet sein oder?

                Kommentar


                • #9
                  Kommt darauf an, ob du die Werte, die ggf. beim Server ankommen und die du für unverändert hältst, verarbeitest oder nicht.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    " Es geht mir auf der ersten Seite nur darum, dass die Felder von dieser Seite nicht überschrieben werden können. Das gibt ein Terminkalender, und sonst könnten die Leute Termine einfach überschreiben. Aber die Mitarbeiter benötigen eine Möglichkeit, falsche Termine zu löschen oder zu ändern."

                    Wenn du die Daten nur darstellen willst, kannst dus als Tabelle ohne Textfelder oder sonstige Eingabemöglichkeit machen. (siehe auch Kommentar wahsaga!) Wenn irgendwo ein Termin (Datensatz) in einem Datumsfeld angezeigt wird, machst du einfach noch 2 links darunter (als Beispiel) einmal löschen und einmal bearbeiten. Das wertest du dann mit ner Funktion jeweils aus! Kannst auch 2 allg. Buttons unter dem Formular machen (löschen, bearbeiten) und man wählt durch klicken von Radio Boxen das entsprechende Datum/Eintrag aus. Ist es das?

                    mfg streuner
                    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
                    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

                    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

                    Kommentar


                    • #11
                      Zitat von streuner Beitrag anzeigen
                      "
                      Wenn du die Daten nur darstellen willst, kannst dus als Tabelle ohne Textfelder oder sonstige Eingabemöglichkeit machen. (siehe auch Kommentar wahsaga!) Wenn irgendwo ein Termin (Datensatz) in einem Datumsfeld angezeigt wird, machst du einfach noch 2 links darunter (als Beispiel) einmal löschen und einmal bearbeiten. Das wertest du dann mit ner Funktion jeweils aus! Kannst auch 2 allg. Buttons unter dem Formular machen (löschen, bearbeiten) und man wählt durch klicken von Radio Boxen das entsprechende Datum/Eintrag aus. Ist es das?

                      mfg streuner

                      Ja das mit Radio Boxen ist sehr praktisch, werde es übernehmen und den Anmeldenamen bis dahin durchschleusen, dass sich die Leute nur mit ihrem Anmeldenamen anmelden können.

                      Mein Problem, dass die Leute auch mit diesen Radio Boxen ein bereits beschriebenes Terminfeld überschreiben können besteht trotzdem noch. Das Formuler mit Radio boxen darf ein Terminfeld, in das sich bereits eine andere Person eingetragen hat nicht überschreiben können. Es darf also nur leere Terminfelder beschreiben und bereits beschreibene nicht überschreiben.
                      Gruß

                      Kommentar


                      • #12
                        Zitat von Alain_S_ Beitrag anzeigen
                        Mein Problem, dass die Leute auch mit diesen Radio Boxen ein bereits beschriebenes Terminfeld überschreiben können besteht trotzdem noch.
                        Ja dann gebe ihnen diese Möglichkeit halt einfach nicht!

                        Das Formuler mit Radio boxen darf ein Terminfeld, in das sich bereits eine andere Person eingetragen hat nicht überschreiben können. Es darf also nur leere Terminfelder beschreiben und bereits beschreibene nicht überschreiben.
                        Zu prüfen, ob ein "Terminfeld" bereits belegt ist, oder einen hereinkommenden Belegungswunsch akzeptieren darf, ist letztendlich Aufgabe des serverseitigen Scriptes - ganz egal, wie auch immer die clientseitige Darstellung aussehen mag.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Zitat von wahsaga Beitrag anzeigen
                          Ja dann gebe ihnen diese Möglichkeit halt einfach nicht!


                          Zu prüfen, ob ein "Terminfeld" bereits belegt ist, oder einen hereinkommenden Belegungswunsch akzeptieren darf, ist letztendlich Aufgabe des serverseitigen Scriptes - ganz egal, wie auch immer die clientseitige Darstellung aussehen mag.
                          Und wie verweigere ich ihnen dies? Es sollte aber eine formularbedingte Sperre sein, weil ich dann über ein anderes Formular auch keine änderungen mehr machen kann.
                          So wie ich dich verstanden habe, würde ich diese Einstellung auf dem Server machen und dann kann ich selbst über ein anderes Formular auch keine änderungen mahr machen oder?

                          Kommentar


                          • #14
                            Es gibt keine "formularbedingte" Sperre.

                            Du kannst nicht davon ausgehen, dass die Daten, die an verarbeitendes Script geschickt werden, überhaupt von "deinem" Formular kommen - sie kommen irgendwo her. Woher, weisst du nicht im geringsten.

                            Jedes serverseitige Script hat bei jedem Aufruf zu überprüfen, ob die Daten, die ihm übermittelt wurden, legitim sind.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Zitat von wahsaga Beitrag anzeigen
                              Es gibt keine "formularbedingte" Sperre.

                              Du kannst nicht davon ausgehen, dass die Daten, die an verarbeitendes Script geschickt werden, überhaupt von "deinem" Formular kommen - sie kommen irgendwo her. Woher, weisst du nicht im geringsten.

                              Jedes serverseitige Script hat bei jedem Aufruf zu überprüfen, ob die Daten, die ihm übermittelt wurden, legitim sind.
                              mit dem serverseitigen Script habe ich keine Erfahrung.
                              Ich verwende XAMPP also Apache. Ist das sehr schwierig? Und wie ist das dann, wenn die Seite fertig ist mit dem hochladen der Seite auf den Webserver?
                              Wenn die Sperre des Feldes beim Server ist, wie kann ich als Administrator dann die Felder bearbeiten? nur noch direkt in der Datenbank?

                              Kommentar

                              Lädt...
                              X