Claudia: IP Adresse + Zeit

Hallo,

1. Frage

wie kann ich beim Eintrag in die Datenbank gleich die IP Adresse mit eintragen?

2. Frage

Wie kann ich nur die Zeit in ein Feld schreiben lassen. Also das Datum mache ich mit NOW() wie kann ich das mit der Zeit machen? Also ich will nicht das Datum mit der Zeit machen es soll wirklich beides in einer extra Tabelle Spalte in der Tabelle in der DB stehen  :-)

Gruß Claudia

  1. Hi Claudia,

    1. Frage

    wie kann ich beim Eintrag in die Datenbank gleich die IP Adresse mit eintragen?

    Mache dir eine Spalte für die IP (Varchar 15) und schreibe dort den Wert aus $_SERVER['REMOTE_ADDR'] rein.

    1. Frage

    Wie kann ich nur die Zeit in ein Feld schreiben lassen. Also das Datum mache ich mit NOW() wie kann ich das mit der Zeit machen? Also ich will nicht das Datum mit der Zeit machen es soll wirklich beides in einer extra Tabelle Spalte in der Tabelle in der DB stehen  :-)

    Was bringt dir das? Mache eine Spalte DATETIME, in die lässt du mit NOW() den Zeitpunkt reinschreiben. Beim Auslesen kannst du das dann mittels DATE_FORMAT (weiter unten auf der Seite) mal in ein Datum oder mal in eine Zeit umwandeln - ganz nach belieben.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
    Antworten per E-Mail gibts hier nicht!
    1. Hi Dennis,

      Mache dir eine Spalte für die IP (Varchar 15) und schreibe dort den Wert aus $_SERVER['REMOTE_ADDR'] rein.

      danke für deine Hilfe werde das gleich mal versuchen ob das auch geht, wenn nicht dann melde ich mich nochmals :-)

      Was bringt dir das? Mache eine Spalte DATETIME, in die lässt du mit NOW() den Zeitpunkt reinschreiben. Beim Auslesen kannst du das dann mittels DATE_FORMAT (weiter unten auf der Seite) mal in ein Datum oder mal in eine Zeit umwandeln - ganz nach belieben.

      Na ja was bringt mir das das kann ich dir sagen, dann habe ich einfach alles in einer Extra spalte denn ich will wirklich das Datum und auch die Zeit in einer Extra spalte haben denn ich will dann damit auch noch mehr machen und dafür brauch ich das :-(

      Gruß Claudia

      1. Hi Claudia,

        Was bringt dir das? Mache eine Spalte DATETIME, in die lässt du mit NOW() den Zeitpunkt reinschreiben. Beim Auslesen kannst du das dann mittels DATE_FORMAT (weiter unten auf der Seite) mal in ein Datum oder mal in eine Zeit umwandeln - ganz nach belieben.

        Na ja was bringt mir das das kann ich dir sagen, dann habe ich einfach alles in einer Extra spalte denn ich will wirklich das Datum und auch die Zeit in einer Extra spalte haben denn ich will dann damit auch noch mehr machen und dafür brauch ich das :-(

        Ich bin mir sicher, dass du das alles auch mit einer Spalte machen könntest. Du solltest sowieso immer schauen, dass du nicht mehr Spalten als nötig hast - braucht alles nur Speicherplatz und raubt bei größeren Sachen Performance.

        Hier mal ein Beispiel wie du an Datum und Uhrzeit aus einem DATETIME Feld kommst:

        SELECT
          DATE_FORMAT(datumsspalte, "%Y-%m-%d") AS datum
          DATE_FORMAT(datumsspalte, "%H:%I") AS uhrzeit
        FROM
          meinetabelle

        Nutzt du dann z.B.
        $_data = mysql_fetch_assoc(...)

        So solltest du in $_data['datum'] das Datum und in $_data['uhrzeit'] die Uhrzeit haben.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
        Das Motto des SELFForums ist das _self_made, also das selbermachen. Deshalb sollte man bevor man irgendetwas fragt, immer erst öffentliche Quellen zu Rate ziehen!
        1. Hi Dennis,

          Ich bin mir sicher, dass du das alles auch mit einer Spalte machen könntest. Du solltest sowieso immer schauen, dass du nicht mehr Spalten als nötig hast - braucht alles nur Speicherplatz und raubt bei größeren Sachen Performance.

          hmm ich denke wir haben so ca. 1500 Einträge dann drin wenn alles fertig ist. Das dürfte ja für eine DB noch nicht groß sein oder?

          Hier mal ein Beispiel wie du an Datum und Uhrzeit aus einem DATETIME Feld kommst:

          SELECT
            DATE_FORMAT(datumsspalte, "%Y-%m-%d") AS datum
            DATE_FORMAT(datumsspalte, "%H:%I") AS uhrzeit
          FROM
            meinetabelle

          Nutzt du dann z.B.
          $_data = mysql_fetch_assoc(...)

          So solltest du in $_data['datum'] das Datum und in $_data['uhrzeit'] die Uhrzeit haben.

          Danke für das Beispiel. Hmm muss ich mal mit meinem Kollegen reden ob ich das so machen kann oder ob er wirklich zwei Spalten braucht. Ach ja aber wenn ich das so mache wie du mir das gerade mit der IP gesagt hast dann kommt eine Felhermeldung siehe Oben in einem anderen Posting im gleichen Tread

          Gruß Claudia

        2. Hallo,

          ich habe das nun mal so geamcht, wie Dennis mir das gerade geschrieben hat, aber leider geht das nicht. Wenn ich das so mache, dann kommt folgende Meldung:

          Parse error: parse error, unexpected '%' in /www/htdocs/v148718/Test/interaktiv/gaestebuch.php on line 183

          So meine Abfrage mich ich nun so:

          <?php // auslesen der Daten//
          $sql = "SELECT
          name,
          email,
          url,
          text,
          betreff,
          DATE_FORMAT(datum, "%Y-%m-%d") AS datum,
          DATE_FORMAT(datum, "%H:%I") AS uhrzeit

          FROM
          gastebuch
          ORDER BY
          datum DESC
          ";
          $return = mysql_query($sql) OR die(mysql_error());
          ?>
          <?php
          while($_data = mysql_fetch_assoc($return))
          {
          ?>

          wo mache ich denn was falsch?

          Gruß Claudia

          1. wo mache ich denn was falsch?

            Du stolperst immer wieder über die gleichen einfachen Fehler

            $string = "bla "fasel" bla";

            Lerne endlich, wie man mit String in PHP umgeht!

            1. Was meinst du denn damit wo habe ich das was vergessen? also wenn ich das oben drüber ansehen dann habe ich doch nichts falsch gemacht :-(

              1. Ok hab es hin bekommen, danke für eure Hilfee :-)

              2. Hi Claudia,

                Was meinst du denn damit wo habe ich das was vergessen? also wenn ich das oben drüber ansehen dann habe ich doch nichts falsch gemacht :-(

                Ein einfacher Syntax Highlighter würde dir das Problem doch schon zeigen - mit welchem Editor arbeitest du denn? Ein kostenloser, zu empfehlender wäre Weaverslave.

                Was diesmal dein Fehler war, du hast geschrieben:

                  
                $sql = "blabla DATE_FORMAT("%Y") blabla";  
                
                

                ^ Hier fängt        ^ Hier hört er
                       ein String          wieder auf
                       an                     ^ und hier fängt
                                              wieder ein ganz
                                              neuer an.

                Also es wäre genau das gleiche wie:

                  
                $sql = "blablabla" % "blablabla";  
                
                

                Da % aber ein mathematisches Rechenzeichen ist, welches hier natürlich nicht angewandt werden kann, da man mit Zeichenketten (Buchstaben) ja nicht rechnen kann, beschwert sich PHP.

                Sag mal, du kennst aber schon die offizielle PHP Seite und das deutsche PHP Handbuch?

                Warum kannst du dann nicht einfach da nachlesen??

                Vielleicht solltest du mal anfangen mit Grundlagen der PHP Syntax, dann Grundlagen der Variablendefinition und jetzt ganz speziell für diesen Fall: Strings und Zeichenketten - früher oder später wirst du dann auch noch die Operatoren, Kontrollstrukturen  und selbstdefinierte Funktionen benötigen.

                Dann fängst du mal mit einem einfachen Script an:

                  
                <?php  
                //Definition einer Variablen  
                $name = "Dennis";  
                //Verschiedene Ausgaben  
                echo "Hallo" . $name . "<br>\n";  
                echo "Hallo $name"   . "<br>\n";  
                echo 'Hallo' . $name . "<br>\n";  
                echo 'Hallo $name'   . "<br>\n";  
                ?>  
                
                

                Lasse dieses Script mal laufen und versuche zu begreifen was, wie und warum das passiert, was du siehst.

                  
                <?php  
                echo "<span style=\"color:blue;\">Blauer Text</span><br>\n";  
                echo '<span style="color:green">Grüner Text</span><br>\n";  
                ?>  
                
                

                Verdeutliche dir die beiden Methoden hier so etwas ausgeben zu lassen - überlege dir, was du besser bzw. praktischer findest - was haben die verschiedenen zwei Arten für Vor- und Nachteile?

                So, wenn du mein Posting jetzt aufmerksam gelesen hast und dir auch alle verlinkten Seiten zu Gemüte geführt hast, bist du bestimmt ein ganzen Stück schlauer als vorher. ;-)

                MfG, Dennis.

                --
                Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
                Probleme mit Formularen? http://tutorial.riehle-web.com hilft weiter.
                1. Hi Claudia,

                  <?php
                  echo "<span style="color:blue;">Blauer Text</span><br>\n";
                  echo '<span style="color:green">Grüner Text</span><br>\n";
                  ?>

                    
                  Und jetzt sag mir noch, was ich hier für einen Fehler gemacht habe ;-)  
                    
                  So wäre es richtig:  
                    
                  ~~~php
                    
                  <?php  
                  echo "<span style=\"color:blue;\">Blauer Text</span><br>\n";  
                  echo '<span style="color:green">Grüner Text</span><br>\n';  
                  ?>  
                  
                  

                  MfG, Dennis.

                  --
                  Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
                  Schon gewusst, dass Bugs und Feature Vorschläge für das CForum ins Entwicklerforum oder in den BugTracker gehören und nicht hier her?
                  1. hi,

                    So wäre es richtig:
                    echo '<span style="color:green">Grüner Text</span><br>\n';

                    wenn man am ende hinter dem <br> die beiden zeichen \ und n ausgeben wollte - ja, _dann_ wäre das als richtig anzusehen ;-)

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Hi wahsaga,

                      So wäre es richtig:
                      echo '<span style="color:green">Grüner Text</span><br>\n';

                      wenn man am ende hinter dem <br> die beiden zeichen \ und n ausgeben wollte - ja, _dann_ wäre das als richtig anzusehen ;-)

                      Stimmt, ich habs nur kopiert *g*

                        
                      echo '<span style="color:#0000ff;">Hallo!!</span><br>' . "\n";  
                      
                      

                      Der Vollständigkeit halber ;-)

                      MfG, Dennis.

                      --
                      Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
                      That's life - Es gibt im Leben[tm] keine Zurück-Taste. (Fabian Transchel)
    2. Hallo,

      so wenn ich das so mache, wie Dennis das gerade geschrieben habe, dann kommt folgende Meldung:

      Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

      An was liegt das denn?

      So habe ich das geamcht:

      $sql = "INSERT INTO buch_gaeste
          (
           name,
                  IP
          )
          VALUES
          (
             addslashes($_POST["name"]) . "',

      $_SERVER['REMOTE_ADDR'],
             NOW()

      )
          ";
        mysql_query($sql) OR die(mysql_error());

      Gruß Claudia

      1. $_SERVER['REMOTE_ADDR'],

        Versuchs mal mit "$REMOTE_ADDR"

        1. Hallo,

          Versuchs mal mit "$REMOTE_ADDR"

          Wenn ich das so mache, wie du mir das gerade gesagt hast, dann kommt folgende Meldung:

          Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in

          Gruß Claudia

        2. Ⓗⓐⓛⓛⓞ Bummi!

          Versuchs mal mit "$REMOTE_ADDR"

          Nö. Das ist falsch.

          ℆, ℒacℎgas

          --
          Keine Verbesserung ist zu klein oder geringfügig, als dass man
          sie nicht durchführen sollte. (Adorno)
          1. Versuchs mal mit "$REMOTE_ADDR"

            Wieso? Ich benutz es doch auch...

            1. Hi!

              Versuchs mal mit "$REMOTE_ADDR"

              Wieso? Ich benutz es doch auch...

              Weil bei dir vielleicht noch register_globals auf on steht, was man tunlichst unterlassen sollte.

              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. Ⓗⓐⓛⓛⓞ Claudia!

        $sql = "INSERT INTO buch_gaeste
            (
             name,
                    IP
            )
            VALUES
            (
               addslashes($_POST["name"]) . "',

        *****                         ****

        $_SERVER['REMOTE_ADDR'],

        ***************************

        Konterkariere!

        ℆, ℒacℎgas

        --
        Keine Verbesserung ist zu klein oder geringfügig, als dass man
        sie nicht durchführen sollte. (Adorno)
        1. Hi,

          nee auch wenn ich das hin mache, dann kommt immer noch diese Meldung:

          Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in

          Gruß Claudia

          1. Ⓗⓐⓛⓛⓞ Claudia!

            So ist es richtig:

            $sql = "INSERT INTO buch_gaeste (name, IP) VALUES ('".mysql_escape_string($_POST['name'])."', ". $_SERVER['REMOTE_ADDR'].", NOW())";

            ℆, ℒacℎgas

            --
            Keine Verbesserung ist zu klein oder geringfügig, als dass man
            sie nicht durchführen sollte. (Adorno)
            1. $sql = "INSERT INTO buch_gaeste (name, IP) VALUES ('".mysql_escape_string($_POST['name'])."', ". $_SERVER['REMOTE_ADDR'].", NOW())";

              Wenn du den String schon in doppelte Anführungszeichen einschließt, dann kannst du auch gleich im String drinbleiben, wenn du nur eine einfache Variable einfügen willst.

              $string = "bla $foo fasel";

              und wenns doch etwas komplexer werden soll:

              $string = "bla {$foo['bar']} fasel";

              Und

              192.168.0.1

              ist auch kein gültiger MySQL-Ausdruck...

      3. So habe ich das geamcht:

        $sql = "INSERT INTO buch_gaeste
            (
             name,
                    IP
            )
            VALUES
            (
               addslashes($_POST["name"]) . "',

        Du bist hier immer noch innerhalb des Strings, der erst am " eingeschlossen von [ und name endet...
        Zum maskieren von innerhalb von MySQL-Statements ist mysql_real_escape_string() besser geeignet als addslashes()

        $_SERVER['REMOTE_ADDR'],

        Hier fehlen auch noch ein paar '' drumherum

        1. Hallo,

          $_SERVER['REMOTE_ADDR'],

          Hier fehlen auch noch ein paar '' drumherum

          ach danke nun geht das ist mir gerade so gar nicht aufgefallen  :-)

          Gruß Claudia

  2. Ich nehme an, du meinst MySQL.

    wie kann ich beim Eintrag in die Datenbank gleich die IP Adresse mit eintragen?

    Wessen IP? Die vom Webserver, die vom Datenbankserver, die vom User, die vom Proxy des Users, ...?

    Schau dir phpinfo() an, ganz unten den Abschnitt "PHP Variables".

    Wie kann ich nur die Zeit in ein Feld schreiben lassen. Also das Datum mache ich mit NOW() wie kann ich das mit der Zeit machen? Also ich will nicht das Datum mit der Zeit machen es soll wirklich beides in einer extra Tabelle Spalte in der Tabelle in der DB stehen  :-)

    NOW() liefert Datum und Zeit und kann auch einem Feld vom Typ TIME zugewiesen werden. Ansonsten gibt's noch:

    CURTIME()
    CURRENT_TIME
    CURRENT_TIME()