Christian_123: PHP Formular value

Ist es möglich bei meinem Formular

<label for="seite">Seite:</label>  
<input name="seite" id="seite" type="text" value="<?php echo htmlspecialchars($seite);?>">

den Wert value nur zu setzten wenn in $_GET['seite'] etwas drin steht? Möchte mein Formular für das Insert und Update verwenden. Oder ist es PHP egal?

Dachte auch schon an so eine Aktion

  
if(isset($_GET['seite'])) {?>  
value="<?php echo htmlspecialchars($seite);?>"	  
<?php }?>  

  1. Hi,

    wenn nix drinn steht, wird auch nix gezeigt !?

    Viele Grüße aus LA

    --
    ralphi
    1. Hallo aus Deutschland,

      wenn nix drinn steht, wird auch nix gezeigt !?

      Das ist natürlich korrekt aber die Variable existiert demzufolge auch nicht. Also bekomme ich eine unschöne Meldung angezeigt wenn die Fehlermeldungen aktiviert sind.

      1. Das ist natürlich korrekt aber die Variable existiert demzufolge auch nicht. Also bekomme ich eine unschöne Meldung angezeigt wenn die Fehlermeldungen aktiviert sind.

        wenn du die form absendest mit
        <input name="seite"

        müsste doch $_GET['seite'] existieren, egal ob ausgefüllt oder nicht?
        kann mich auch irren ;-)

        Viele Grüße aus LA

        --
        ralphi
        1. müsste doch $_GET['seite'] existieren, egal ob ausgefüllt oder nicht?

          Nein $_GET['seite'] ist nur da wenn das Formular zum Bearbeiten aufgerufen wird.
          Wenn ein neuer Eintrag kommt ist $_GET['seite'] natürlich nicht da.

          1. Nein $_GET['seite'] ist nur da wenn das Formular zum Bearbeiten aufgerufen wird.
            Wenn ein neuer Eintrag kommt ist $_GET['seite'] natürlich nicht da.

            ahh verstehe - die seite ruft sich selber auf. Beim ersten Mal gibts noch keine $_Get.
            Dann fällt mir auch nur isset() ein.
            Bin gespannt, was die erfahrenen Progger hierzu schreiben :-)

            Viele Grüße aus LA

            --
            ralphi
            1. ahh verstehe - die seite ruft sich selber auf. Beim ersten Mal gibts noch keine $_Get.
              Dann fällt mir auch nur isset() ein.

              Könnte mir mein Leben auch einfach machen aber dann müsste der Grafiker zwei Seiten entwerfen und in html und css umsetzten. Ist alles unnötige Arbeit für diesen wo sich später in der Wartung schon zweimal nicht lohnt.

              Deshalb möchte ich gerne alles in eine Datei packen.
              Dadurch habe ich selber zwar mehr Arbeit aber das ist erstmal egal.

      2. Hi nach Deutsche Land,

        Hallo aus Deutschland,

        :-)
        Viele Grüße aus LA / Freistaat Bayern (Regierungssitz Niederbayern)

        --
        ralphi
        1. :-)
          Viele Grüße aus LA / Freistaat Bayern (Regierungssitz Niederbayern)

          Und ich dachte LA heißt bei dir Los Angeles :-)

          1. Mahlzeit,

            Und ich dachte LA heißt bei dir Los Angeles :-)

            Das haben die Amis nur geklaut und feiern es als Innovation. Wie bei Apple :D

            --
            eigentlich ist mir bewusst, dass ich hin und wieder einfach mal die Klappe halten sollte. Doch genau in den unpassendsten Momenten erwische ich mich dabei, wie ich dennoch etwas sage ...
  2. Tach!

    Ist es möglich bei meinem Formular [...] den Wert value nur zu setzten wenn in $_GET['seite'] etwas drin steht?
    Dachte auch schon an so eine Aktion

    if(isset($_GET['seite'])) {?>

    value="<?php echo htmlspecialchars($seite);?>"
    <?php }?>

      
    Ja, aber das kann man einfacher notieren.  
      
    `<input name="seite" id="seite" type="text" value="<?php echo htmlspecialchars(isset($_GET['seite']) ? $_GET['seite'] : $seite); ?>">`{:.language-php}  
      
    $seite muss natürlich auch existieren, damit es keine Notice-Meldung gibt.  
      
      
    dedlfix.
    
    1. Ja, aber das kann man einfacher notieren.

      <input name="seite" id="seite" type="text" value="<?php echo htmlspecialchars(isset($_GET['seite']) ? $_GET['seite'] : $seite); ?>">

      $seite muss natürlich auch existieren, damit es keine Notice-Meldung gibt.

      Danke. Das heißt also ich lege wenn das Formular ohne GET aufgerufen wird eine leere Variable mit dem Namen $seite an?. Wenn die Seite mit GET aufgerufen wird, wird $seite mit einem Wert aus der Datenbank gefüllt. Verstehe ich das richtig?

      1. Tach!

        Das heißt also ich lege wenn das Formular ohne GET aufgerufen wird eine leere Variable mit dem Namen $seite an?

        Ich nahm an, dass der Inhalt von $seite aus der Datenbank kommt. Wenn das nicht der Fall ist, kannst du stattdessen einen Leerstring nehmen. (Dann braucht sich das htmlspecialchars() auch nur um $_GET['seite'] zu kümmern.)

        Wenn die Seite mit GET aufgerufen wird, wird $seite mit einem Wert aus der Datenbank gefüllt.

        Oder auch nicht.

        • Du hast Create mit GET, da existiert kein Wert, weil nur ein leeres Formular angezeigt wird (Erstaufruf).
        • Du hast Create mit POST, da existieren $_POST-Werte, wenn die Validierung gesagt hat, dass das Formular in eine neue Runde gehen muss (Affenformular).
        • Du hast Update mit GET, da existiert nichts in $_GET (außer der Datensatz-ID o.ä.), aber die Datenbankwerte sollen angezeigt wird. Die stehen vielleicht in einem Array oder Objekt.
        • Du hast Update mit POST, da existieren $_POST-Werte, wenn die Validierung gesagt hat, dass das Formular in eine neue Runde gehen muss (Affenformular).

        In $_GET sollten keine Formularwerte stehen, weil datenverändernde Requests mit POST und nicht mit GET ausgelöst werden sollen. Sonst kommt mal ein Link-Checker oder ein Suchmaschinen-Crawler vorbei und folgt allen GET-Links, auch denen die Daten löschen.

        dedlfix.

  3. Ich schreib mein Problem mal hier dazu hat zwar kein direkten Zusammenhang passt aber zum Thema. Komme irgendwie mit den ifs durcheinander oder ich bin auf einem falschen Weg?

      
    <?php  
    if($header == "") {  
    	 if(isset($_GET['leistungID'])) {  
    ?>  
              [......]  
    <?php } }?>  
    
    

    Damit wollte ich erreichen wenn $header leer ist, soll der ganze Bereich nicht angezeigt werden.
    Es wird allerdings _immer_ der Bereich angezeigt auch wenn $header leer ist.

    Wo liegt mein Fehler?

    1. Hallo

      <?php
      if($header == "") {
      // bla
      }

      
      >   
      > Damit wollte ich erreichen wenn $header leer ist, soll der ganze Bereich nicht angezeigt werden.  
      >   
      > Es wird allerdings \_immer\_ der Bereich angezeigt auch wenn $header leer ist.  
      >   
      > Wo liegt mein Fehler?  
        
      Deine Bedingung sagt, wenn `$header`{:.language-php} leer (bzw. ein Leerstring) ist, gehe in diesen Block hinein. Wenn du das nicht willst, verneine dies (!=). Abhängig vom Datentyp von `$header`{:.language-php} könnte es auch andere, bessere Bedingungen geben.  
        
      Tschö, Auge  
      
      -- 
      Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.  
      Terry Pratchett, "Wachen! Wachen!"  
        
      ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}  
        
      [Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)
      
      1. Deine Bedingung sagt, wenn $header leer (bzw. ein Leerstring) ist, gehe in diesen Block hinein. Wenn du das nicht willst, verneine dies (!=). Abhängig vom Datentyp von $header könnte es auch andere, bessere Bedingungen geben.

        Danke. Hab es auf if(!$header == "") geändert und es funktioniert.

        1. Aloha ;)

          Danke. Hab es auf if(!$header == "") geändert und es funktioniert.

          Das ist jetzt aber wirklich von hinten durch die Brust ins Auge :D Aber okay, solange du glücklich bist ;)

          (Es wäre doch soviel verständlicher mit "≠" a.k.a. "!=")

          Grüße,

          RIDER

          --
          Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
          ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
          1. Aloha ;)

            Du kommst nicht zufällig von der Südsee? :D

            Das ist jetzt aber wirklich von hinten durch die Brust ins Auge :D Aber okay, solange du glücklich bist ;)

            (Es wäre doch soviel verständlicher mit "≠" a.k.a. "!=")

            Immer nur von vorne einen Angriff zu starten ist doch langweilig oder? Aber danke für deine Aufklärung, jetzt habe ich es auch richtig verstanden.

            1. Aloha ;)

              Du kommst nicht zufällig von der Südsee? :D

              Das hab ich neulich schonmal erklärt :D

              Immer nur von vorne einen Angriff zu starten ist doch langweilig oder?

              Stimmt ;)

              Aber danke für deine Aufklärung, jetzt habe ich es auch richtig verstanden.

              Keine Ursache. Dachte mir schon halb, dass noch nicht alles klar war^^

              Grüße,

              RIDER

              --
              Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
              ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
        2. Tach!

          Hab es auf if(!$header == "") geändert und es funktioniert.

          Das ist wirklich nicht günstig. Die Laufzeit wird im Rauschen untergehen, aber: $header ist ein String. Wenn du dem ein ! davorsetzt, wird der in den booleschen Kontext gebracht. Das ! negiert den Wert und dann vergleichst du das false oder true mit einen String. Dazu wird der String auch nochmal nach boolean konvertiert.

          Du kannst gleich if ($header) verwenden, das kommt auf's selbe raus. '0' ist ebenso false, aber das ist auch bei deinem Konstrukt der Fall.

          Außerdem:

          $header = '0';  
          var_dump(!$header == ''); // false  
          var_dump($header != ''); // true
          

          dedlfix.