Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variablen definieren oder nicht ?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Variablen definieren oder nicht ?

    Moin zusammen,

    ich bin mit meinem php Kenntnissen weiterhin auf dem aufsteigenden Ast, stoße jedoch ab und an natürlich wieder an kleine Grenzen.

    Ich hab da was nicht ganz gerallt.

    Wenn ich aus einem Formular eine Variable an ein Script übergebe, welches den Inhalt dann an eine DB schickt läuft alles.

    Ist auch alles logisch. Checke ich nun mit dem Error Reporting diese „schreibs in die DB“ Datei meckert er über nicht defnierte Variablen.

    Auch klar, wie soll er sie kennen, wenn sie nicht definiert wurden.

    Ich weiß, das das ansich kein Fehler ist aber ich hätte den Code gerne sauber.

    Belege ich die Variablen aber (wo auch immer) mit 0 oder ‘‘ schreibt er nicht mehr die Formluardaten in die DB sondern eben 0 etc.

    Also, wie definiere ich die Variablen damit das error Reporting keinen Fehler mehr ausspuckt ?

    Danke für eure Hilfe,

    Gruß Alex

  • #2
    Na offensichtlich überschreibst du ja die formulardaten wieder mit 0, anstatt die 0 mit den formulardaten.
    Ein beispiel wäre doch mal nicht schlecht.

    Kommentar


    • #3
      Variablen können deklariert und initialisiert werden. Bei PHP macht man das ganze meist in einem Abwasch.
      PHP-Code:
      // Deklariert die Variable $test und initialisiert sie mit dem Wert x
      $test "x"
      Wenn du also "x" reinschreibst, wird auch "x" in die Datenbank geschrieben. "Formularvariablen" werden vor den Scriptvariablen deklariert und initialisiert.

      Das heißt wenn du auf $_POST["test"] zugreifst und es sie nicht gibt, gibts einen Eintrag im Error-Log. Wenn du Sie initialisierst $_POST["test"] = "x"; wird der vorherige Wert überschrieben.


      Du musst also erst mit isset prüfen, ob es die Variable gibt.

      PHP-Code:
      if(!isset($_POST["test"]))
          
      $_POST["test"] = "x"
      Tutorials zum Thema Technik:
      https://pilabor.com
      https://www.fynder.de

      Kommentar


      • #4
        Hi,

        verstanden.

        Ich habe nun in meiner Datei, die alles in die DB schreibt, folgendes vermerkt:

        PHP-Code:
        if (isset($_POST['email']))     $email $_POST['email'];
        if (isset(
        $_POST['telefon']))   $telefon $_POST['telefon']; 
        Funzt auch. Die Fehlermeldungen sind weg. Aber heißt das nicht übersetzt folgendes:

        Wenn $_POST['email'] existiert dann $email = $_POST['email'] ???

        Mir fehlt da son bissl das "dann", also wenn die VAriable eben NICHT gesetzt ist oder war. Oder führt php dann irgendein Standard aus?

        Gruß Alex

        Kommentar


        • #5
          Oder führt php dann irgendein Standard aus?
          Nein. Im Prinzip hast DU das Problem nur verlängert. Denn jetzt existiert bspw. $email u.U. nicht.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #6
            Da hast du wohl recht. Frag doch lieber:
            PHP-Code:
            if(!isset($_POST['email'])){
                
            $_POST['email'] = 0
            }
            if(!isset(
            $_POST['telefon'])){
                
            $_POST['telefon'] = 0;
            }
            $email $_POST['email'];
            $telefon $_POST['telefon']; 
            Damit hast du dann auf jeden Fall sichergestellt das du auf $_POST was liegen hast.

            Ich weiß nikosch hasst mich jetzt
            einfach alles verraten

            Kommentar


            • #7
              Danke Euch..

              Aber warum schmeißt mir php keine Fehlermeldung mehr raus ? Ich hab doch außer dem isset nix verändert ?

              EDIT: Vergesst bitte meine Frage... Ich hab natürlich das ! eben nicht beachtet.

              Ganz logisch. Wenn $bla nicht existiert dann $bla = 0 Sonst so lassen... Korrekt ?

              Kommentar


              • #8
                Ganz hilfreich ist auch Affenformular (Standardverfahren) - PHP.de Wiki

                Und ehrlichgesagt finde ich es ziemlich komisch, 0 in die DB zu speichern, falls es keine Daten gibt.
                Wie wäre es mit NULL oder zB garnichts?

                Kommentar


                • #9
                  Hab ich mir auch gedacht. Statt 0 hab ich '' genommen. MEin Code sieht nun so aus. Funzt und keine Fehler. Was meint ihr ?

                  PHP-Code:
                    if (!isset($_POST['name']))      $_POST['name'] = '';         
                    if (!isset(
                  $_POST['email']))     $_POST['email'] = '';
                    if (!isset(
                  $_POST['telefon']))   $_POST['telefon'] = '';
                    if (!isset(
                  $_POST['fax']))       $_POST['fax'] = '';
                    if (!isset(
                  $_POST['nachricht'])) $_POST['nachricht'] = '';
                    if (!isset(
                  $_POST['news']))      $_POST['news'] = '';
                    
                    if (!isset(
                  $eintrag)) $eintrag '';
                    
                    
                  $name $_POST['name']; 
                    
                  $email $_POST['email'];
                    
                  $telefon $_POST['telefon'];
                    
                  $fax $_POST['fax'];
                    
                  $nachricht $_POST['nachricht'];
                    
                  $news $_POST['news'];
                    
                    
                  $datum date("d.m.Y");
                    
                  $uhrzeit date("H:i"); 
                  Gruß Alex

                  Kommentar


                  • #10
                    Ich persönlich finde es schlechten Stil, auto-Variablen wie $_POST, $_SERVER etc. Scriptseitig zu verändern. Stell Dir vor, Du willst später auswerten, ob eine bestimmte Eingabe des Users leer war, oder ob überhaupt alle Felder gesetet wurden (oder viell. ein nachgebautes Form verwendet wurde). Du hast keine Möglichkeiten mehr das herauszufinden, wenn Du $_POST abänderst.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Klingt logisch. Aber ich weiß nicht, wie ich das anders hinbekomme. HAbe viel gelesen und probiert. Und entweder gabs nen Fehler oder es wurde nix in die DB geschrieben.

                      Hast Du nen tipp wie Du das machen würdest ?

                      Kommentar


                      • #12
                        Es gibt bspw. als Kurzversion für:

                        PHP-Code:
                        if (isset($_POST['name'])) {
                          
                        $name $_POST['name'];
                        } else {
                          
                        $name '';

                        den Conditional-Operator (Trinäroperator):
                        PHP-Code:
                        $name = isset($_POST['name']) ? $_POST['name'] : ''
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #13
                          Uhh, Kurzversionen find ich ja toll, aber für mich als Anfänger ? Ich glaub das ist nicht so gut.

                          Aber warum wäre denn dann Deine Variation nun anders ? Wird da nicht auch $_POST geändert ?

                          Kommentar


                          • #14
                            Nein, da wird nur $name gesetzt. Siehe ersten Code.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              HI,

                              Deine Kurzversion funzt irgendwie nicht. Es gibt wieder Fehlermeldungen.

                              HAst Du eine Idee?

                              Gruß Alex

                              Kommentar

                              Lädt...
                              X