PHPNeuling: Wie muss ich das angehen?

Moin,

hab hier eine Ausgabe:

<?php echo nl2br(htmlentities(stripslashes($_data['hobbies']))); ?>

jetzt wurde ich gerne noch eine Funktion einbauen, wenn er in derDB unter Hobbies nichts finden, dann soll via echo ausgegeben werden:

keine Angaben geamcht

Wie kann ich das umsetzten?

MFG,
PHPNeuling

  1. Hallo,

    <?php echo nl2br(htmlentities(stripslashes($_data['hobbies']))); ?>
    jetzt wurde ich gerne noch eine Funktion einbauen, wenn er in derDB unter Hobbies nichts finden, dann soll via echo ausgegeben werden:

    sowas:
    echo empty($_date['hobbies'])?'keine Angabe':nl2br(htmlentities(stripslashes($_data['hobbies'])));
    ?
    Was es mit dem ?: aufsich hat, steht auf http://de.php.net/language.operators.comparison. Allerdings würde ich stripslashes anwenden bevor die Daten in die Datenbank kommen ...

    Grüße aus Nürnberg
    Tobias

    1. Hi Tobias!

      Allerdings würde ich stripslashes anwenden bevor die Daten in die Datenbank kommen ...

      Nö, eben beim Eintragen sollten die Daten maskiert werden, um SQL-Injections zu vermeiden: mysql_real_escape_string()

      Grüße,
      Fabian St.

      --
      Meine Website: http://fabis-site.net
      --> XHTML, CSS, PHP-Formmailer, Linux
      ---------------------
      fabi@erde ~# whatis spam
      spam: nothing appropriate
      ---------------------
      Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
      1. Hallo Fabian,

        Allerdings würde ich stripslashes anwenden bevor die Daten in die Datenbank kommen ...
        Nö, eben beim Eintragen sollten die Daten maskiert werden,

        natürlich, aber wenn beim Holen der Daten aus der Datenbank stripslashes notwendig ist, wurden die Daten maskiert gespeichert - und _das_ würde ich nicht machen. Wenn man mysql_real_escape_string() verwendet (und voher ggf. stripslashes, je nach Rückgabe von get_magic_quotes_gpc()) braucht man beim Ausgeben aber kein stripslashes, da die Daten ja dann unmaskiert in der Datenbank stehen.

        Grüße aus Nürnberg
        Tobias

        1. Hi Tobias!

          natürlich, aber wenn beim Holen der Daten aus der Datenbank stripslashes notwendig ist, wurden die Daten maskiert gespeichert - und _das_ würde ich nicht machen. Wenn man mysql_real_escape_string() verwendet (und voher ggf. stripslashes, je nach Rückgabe von get_magic_quotes_gpc()) braucht man beim Ausgeben aber kein stripslashes, da die Daten ja dann unmaskiert in der Datenbank stehen.

          Achso meintest du das ;-) Da du nicht erwähnt hast, die Eingabe noch einmal beim Eintragen mit einer Funktion wie mysql_escape_string() zu bearbeiten, dachte ich eben, du wolltest sie ganz ohne "Behandlung" abspeichern...

          Grüße,
          Fabian St.

          --
          Meine Website: http://fabis-site.net
          --> XHTML, CSS, PHP-Formmailer, Linux
          ---------------------
          fabi@erde ~# whatis spam
          spam: nothing appropriate
          ---------------------
          Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
          1. echo $begrueszung;

            Achso meintest du das ;-) Da du nicht erwähnt hast, die Eingabe noch einmal beim Eintragen mit einer Funktion wie mysql_escape_string() zu bearbeiten, dachte ich eben, du wolltest sie ganz ohne "Behandlung" abspeichern...

            <genau>Eben, sie werden ohne "Behandlung" abgespeichert. Nur zur "Übergabe" müssen sie maskiert werden.</genau>

            echo "$verabschiedung $name";

            1. Hi Felix!

              <genau>Eben, sie werden ohne "Behandlung" abgespeichert. Nur zur "Übergabe" müssen sie maskiert werden.</genau>

              Mit "Behandlung" meine ich eben das Anwenden von mysql_escape_string(). Das "Behandeln" findet also bei der "Übergabe" statt.

              Ich hoffe, hiermit sind jetzt alle Unstimmigkeiten geklärt ;-) Wir meinen dasselbe, reden jedoch aneinander vorbei *g*

              Grüße,
              Fabian St.

              --
              Meine Website: http://fabis-site.net
              --> XHTML, CSS, PHP-Formmailer, Linux
              ---------------------
              fabi@erde ~# whatis spam
              spam: nothing appropriate
              ---------------------
              Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
  2. Hi!

    jetzt wurde ich gerne noch eine Funktion einbauen, wenn er in derDB unter Hobbies nichts finden, dann soll via echo ausgegeben werden:

    keine Angaben geamcht

    Wie kann ich das umsetzten?

    Du holst dir ganz einfach aus deiner Datenbank (hier am Beispiel von MySQL) den Wert für $_data['hobbies'] (z.B. mit mysql_fetch_assoc) und überprüfst dann mittels einer If-Bedingung, ob den Wert leer ist. Trifft dies zu, dann gibst du eben deinen gewünschten String aus.

    Beispiel:

      
      
    $sql = "SELECT  
                  hobbies  
            FROM  
                  menschen  
            WHERE  
                  User = '".$user."';";  
    $res = mysql_query($sql);  
    $_data = mysql_fetch_assoc($res);  
      
    if(strlen(trim($_data['hobbies'])) <= 0)  
    {  
        echo 'keine Angaben gemacht';  
    }  
    else  
    {  
        echo $_data['hobbies'];  
    }  
      
    
    

    Grüße,
    Fabian St.

    --
    Meine Website: http://fabis-site.net
    --> XHTML, CSS, PHP-Formmailer, Linux
    ---------------------
    fabi@erde ~# whatis spam
    spam: nothing appropriate
    ---------------------
    Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
    1. Hallo Fabian.

      (...)

      if(strlen(trim($_data['hobbies'])) <= 0)

      (...)

        
      Das geht aber einfacher, oder?  
      -> [empty()](http://de2.php.net/manual/de/function.empty.php)  
        
        
        
      Gruß, Ashura  
      
      -- 
      Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|  
      Try it: [Become an Opera Lover in 30 days](http://tntluoma.com/opera/lover/7/)
      
      1. Hi Ashura!

        Das geht aber einfacher, oder?
        -> empty()

        Alles hat seinen Grund hier, Ashura ;-)

        Zitat von php.net:

        "Diese Funktion liefert TRUE, wenn eine Variable nicht definiert, leer oder gleich 0 ist, ansonsten FALSE."

        D.h. empty() würde auch TRUE liefern, wenn $_data['hobbies'] den Wert 0 hätte. Dies trifft in diesem Fall mit _hoher_ Wahrscheinlichkeit nicht zu, aber manchmal ist es doch besser, wenn man obige Methode anwendet, weil man sich dann wirklich sicher sein kann, dass eine Variable keinen Wert enthält.

        Der Vollständigkeit halber sollte noch erwähnt werden, dass auch ich dies nicht bemerkt habe, sondern von Tom darauf hingewiesen worden bin ;-)

        Grüße,
        Fabian St.

        --
        Meine Website: http://fabis-site.net
        --> XHTML, CSS, PHP-Formmailer, Linux
        ---------------------
        fabi@erde ~# whatis spam
        spam: nothing appropriate
        ---------------------
        Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
        1. Hallo Fabian.

          Alles hat seinen Grund hier, Ashura ;-)

          Ernsthaft? ;)

          "Diese Funktion liefert TRUE, wenn eine Variable nicht definiert, leer oder gleich 0 ist, ansonsten FALSE."

          Das heißt also, dass ich mir isset() sparen kann?

          D.h. empty() würde auch TRUE liefern, wenn $_data['hobbies'] den Wert 0 hätte.

          Und dann würde also der Wert "0" anstelle des "kein..." ausgegeben..?

          Der Vollständigkeit halber sollte noch erwähnt werden, dass auch ich dies nicht bemerkt habe, sondern von Tom darauf hingewiesen worden bin ;-)

          Man lernt nie aus. ;)

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          Try it: Become an Opera Lover in 30 days
          1. Hi Ashura!

            Alles hat seinen Grund hier, Ashura ;-)

            Ernsthaft? ;)

            Zumindest das meiste :-)

            Und dann würde also der Wert "0" anstelle des "kein..." ausgegeben..?

            Ja genau!

            Man lernt nie aus. ;)

            ACK *g*

            Grüße,
            Fabian St.

            --
            Meine Website: http://fabis-site.net
            --> XHTML, CSS, PHP-Formmailer, Linux
            ---------------------
            fabi@erde ~# whatis spam
            spam: nothing appropriate
            ---------------------
            Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
    2. Hallo Fabian St.,

      danke dir!

      Gruß PHPNeuling

    3. Hello,

      $sql = "SELECT
                    hobbies
              FROM
                    menschen
              WHERE

      User = '".mysql_escape_string($user)."';";

      $res = mysql_query($sql,$con));

      if (!$res or mysql_errno($con) > 0)
      {
        $ausgabe = "Fehler bei der Abfrage: ".mysql_error($con);
      }
      else
      {
        $_data = mysql_fetch_assoc($res);

      if(strlen(trim($_data['hobbies'])) <= 0)
        {
          $ausgabe = 'keine Angaben gemacht';
        }
        else
        {
          $ausgabe = $_data['hobbies'];
        }
      }

      ################

      HTML-Ausgabe

      ################

      echo htmlentities($ausgabe);

        
      Immer hübsch Datenbeschaffung / -veränderung von den Ausgaben trennen. Dann bleibt alles übersichtlich.  
        
        
        
      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!

        [...]
        Immer hübsch Datenbeschaffung / -veränderung von den Ausgaben trennen. Dann bleibt alles übersichtlich.

        War ja auch nur als Beispiel für die Lösung seines Problems gedacht. Die Fehlerbehandlung müsste sich der Fragesteller eben selber programmieren.

        Wenn man das bei solch kleinen Codefragmenten auch noch berücksichtigen sollte, kann man eigentlich gleich das gesamte Skript schreiben... ;-)

        Ich werde jedoch in Zukunft zumindest darauf hinweisen.

        Grüße,
        Fabian St.

        --
        Meine Website: http://fabis-site.net
        --> XHTML, CSS, PHP-Formmailer, Linux
        ---------------------
        fabi@erde ~# whatis spam
        spam: nothing appropriate
        ---------------------
        Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
  3. auch Moin,

    <?php echo nl2br(htmlentities(stripslashes($_data['hobbies']))); ?>

    kannst du nicht einfachschreiben:

    <?php
    if ($_data['hobbies']) echo nl2br(htmlentities(stripslashes($_data['hobbies'])));
    else echo "...";
    ?>

    andy

    1. Hallo

      kannst du nicht einfachschreiben:

      <?php
      if ($_data['hobbies']) echo nl2br(htmlentities(stripslashes($_data['hobbies'])));
      else echo "...";
      ?>

      Nur der Vollständigkeit halber:
      1. Darf eine selbstdefinierte Variable in PHP überhaupt mit einem Unterstrich beginnen ($_data['hobbies'])?

      2. @Andy: Da die Variable aus einer Datenbankabfrage stammt, gibt es sie immer. Daher löst deine Bedingung das Problem nicht, da immer "if", aber nie "else" ausgeführt wird.

      Tschö, Auge

      --
      Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
      (Victor Hugo)
      Veranstaltungsdatenbank Vdb 0.1
      1. echo $begrueszung;

        if ($_data['hobbies']) ...

        Nur der Vollständigkeit halber:

        1. Darf eine selbstdefinierte Variable in PHP überhaupt mit einem Unterstrich beginnen ($_data['hobbies'])?

        Ja, schaust du da: http://de3.php.net/manual/de/language.variables.php

        1. @Andy: Da die Variable aus einer Datenbankabfrage stammt, gibt es sie immer. Daher löst deine Bedingung das Problem nicht, da immer "if", aber nie "else" ausgeführt wird.

        if ($var) prüft nicht auf die Existenz einer Variable (das macht isset()). Die Bedingung ist wahr, wenn der Inhalt der Variable von PHP als true interpretiert werden kann, also alles andere als: false, '', '0', 0, null

        echo "$verabschiedung $name";