Bräuchte ein bisschen hilfe (MySQL-Beginner)



  • hallöchen zusammn!

    kommen wir gleich zur sache:

    ich habe eine MySQL Datenbank bei mir heizen und möchte gerne über ein php formular emailadressen in diese datenbank eintragen lassen.
    bevor die eingetragen werden, werden die erstmal auf richtigkeit geprüft, aber dashabe ich schon.

    jetzt habe ich mir die tabelle dafür erstellt bei meiner db. und die sieht so aus:

    +------------------------+---------------+------------+
    | email | ip | Datum |
    +------------------------+---------------+------------+
    | webmaster@gmx.de | 68.123.53.249 | 26.06.2003 |
    +------------------------+---------------+------------+

    jetzt meine frage: wie muss ich mein bestehendes php script ergänzen damit es auf die db zugreifft und die emailadresse in die tabelle einträgt?



  • // Verbindung zur DB öffnen
    $link = mysql_connect($host, $user, $password) or die("Keine Datenbankverbindung möglich !");
    mysql_select_db($table) or die("Auswahl der Datenbank fehlgeschlagen !");
    
    // Werte in die Datenbank einfügen
    mysql_query("INSERT INTO $table_name VALUES ($email,$ip,$date)") or die("Konnte Daten nicht in die Datenbank einfügen !");
    

    Weitere Hilfe bekommst du zu MySQL auf http://ffm.junetz.de/members/reeg/DSP/ und zu PHP auf http://us3.php.net/manual/de/ref.mysql.php

    [ Dieser Beitrag wurde am 26.06.2003 um 01:51 Uhr von Michamab editiert. ]



  • Der SQL-Query ist nicht so gut. Er funktioniert zwar im Moment da es nur die 3 Felder gibt. Will man aber noch felder hinzufügen (ID,Timestamp) dann funzt er nicht mehr.

    2 Möglichkeiten

    mysql_query("INSERT INTO table_name(email,ip,Datum)VALUES(table\_name (email,ip,Datum) VALUES (email,ip,ip,date)")

    oder

    mysql_query("INSERT INTO $table_name SET email = $email,ip = $ip, Datum = $date)")

    Man sollte immer den Feldnamen in einem Query (Select,UPDATE,INSERT) ansprechen außer man ist sich 100% sicher das sich der table nicht verändert und das kann man nie sein.

    [ Dieser Beitrag wurde am 26.06.2003 um 06:37 Uhr von Unix-Tom editiert. ]



  • Hm also ich hab mir das Script jetzt so aufgebaut:

    $ip = "62.143.52.92";
    $today = date("Y.m.d");
    $link = mysql_connect(localhost, root,"") or die("Keine Datenbankverbindung möglich !");
    mysql_select_db(Eintraege)  or die("Auswahl der Datenbank fehlgeschlagen !");
    mysql_query("INSERT INTO emails(email,ip,Datum) VALUES ($email,$ip,$today)");
    

    nun habe ich noch ein paar fragen:

    1. wie man sieht habe ich die ip jetzt zu testzwecken einfach mal konstant definiert, soll ja nicht so sein. wie kann ich die ip des besuchers rausfinden? hab mal bei www.php.net geschaut aber da nur eine funktion gefunden die aus der ip bereits einen string macht.

    2. mit der datenbank funzt gar nix!! ich bekomm keine fehlermeldung oder so aber es geht nüx. 😞 liegt das vielleicht daran dass ich kein password definiert habe?



  • Frage wie kommt man eigentlich auf die IP des Users? Per PHP ist das ja nicht möglich - oder sendet die der User an den Server und PHP kann die IP doch abfragen?

    MfG SideWinder



  • Muhahah habs grade rausgefunden! :):):)
    Um an die Ip zu kommen nimmste ne Environmental Variable: $ip = getenv(REMOTE_ADDR);


  • Mod

    natuerlich kennt der server die IP vom user (oder zumindest die IP von dem computer wo er die daten hinschickt) - denn der Server muss die daten ja irgendwo hin schicken!

    $_SERVER['REMOTE_ADDR'] ist es, wenn ich nicht irre



  • So ich habs raus!
    Der Fehler lag in dem Insert befehl. man musste das ganze in hochkommas setzen.
    mysql_query("INSERT INTO emails(email,ip,Datum) VALUES ('email,email','ip','$today')");



  • Jetzt habe ich allerdings noch eine frage! *g*
    gibt es eine möglichkeit eine weitere spalte in meine tabelle einzufügen, die die zeilen mitzählt. und nehmen wir an ich lösche die dritte zeile raus, dann sollen alle anderen die grösser als drei waren, um ein inkrementieren. geht das?


  • Mod

    Original erstellt von Peter Piksa:
    gibt es eine möglichkeit eine weitere spalte in meine tabelle einzufügen, die die zeilen mitzählt.

    ja, siehe
    ALTER TABLE

    und nehmen wir an ich lösche die dritte zeile raus, dann sollen alle anderen die grösser als drei waren, um ein inkrementieren. geht das?

    ja, siehe
    UPDATE



  • @shade: aber auch alles automatisch???


  • Mod

    Original erstellt von Peter Piksa:
    @shade: aber auch alles automatisch???

    ne... wenn du ein
    DELETE
    machst, musst du nachher selber ein
    UPDATE
    query laufen lassen...



  • Warum willst du die E-Mail-Adressen überhaupt durchnummerieren? Und vor allem warum müssen sie "nachrutschen" wenn du eine löscht?



  • also ich habe grade mit mit diesem befehl eine neue spalte dazugetan:

    alter table emails
    add id int unsigned not null auto_increment primary key
    

    aber das ist doof weil dann muss ich ja auch beim eintragen eines neuen datensatzes eine id vergeben. der macht das nicht von selbst. das muss doch irgendwie gehen.

    könnte man das vielleichgt machen dass der die anzahl der zeilen zählt und dann automatisch die ids vergibt/ändert??



  • doch die id wird automatisch vergeben (einfach beim INSERT die spalte nicht mit angeben)
    Allerdings rutschen die nicht nach, wenn du was rauslöscht, sondern die id wird nicht mehr vergeben. (würde ja auch nicht viel simm machen, das Nachrutschen)



  • Original erstellt von flenders:
    doch die id wird automatisch vergeben (einfach beim INSERT die spalte nicht mit angeben)
    Allerdings rutschen die nicht nach, wenn du was rauslöscht, sondern die id wird nicht mehr vergeben. (würde ja auch nicht viel simm machen, das Nachrutschen)

    dett göht nüd! *hm*

    mein Zeos Database Explorer meint dazu:
    > insert into emails values('gurke@*****.de','15.15.15.15','2003-06-26')
    Error: Spaltenzahl stimmt nicht mit der Anzahl der Werte überein in Reihe1


  • Mod

    Original erstellt von Peter Piksa:
    **dett göht nüd! *hm*

    mein Zeos Database Explorer meint dazu:
    > insert into emails values('gurke@***.de','15.15.15.15','2003-06-26')
    Error: Spaltenzahl stimmt nicht mit der Anzahl der Werte überein in Reihe1

    von Unix-Tom in diesem Thread:
    Der SQL-Query ist nicht so gut. Er funktioniert zwar im Moment da es nur die 3 Felder gibt. Will man aber noch felder hinzufügen (ID,Timestamp) dann funzt er nicht mehr.


Anmelden zum Antworten