ilch Forum » Allgemein » HTML, PHP, SQL,... » SQL Tablellen Syncroniesieren?

Geschlossen
  1. #1
    User Pic
    soulreafer Mitglied
    Registriert seit
    26.01.2010
    Beiträge
    42
    Beitragswertungen
    0 Beitragspunkte
    Hallo leute,

    Ich sitze gerade an einem "Problem", mehr eine Aufgabe welche ich nicht gelöst bekomme. Ich habe ein Spiel auf meinem Server installiert welches per SQL userdatenbank gesichert ist. Nun möchte ich, dass user die sich auf meiner Webseite registrieren gleichzeitig für das Spiel registriert sind.

    Kurze Erläuterung:

    Ilch User Tabelle besteht ja aus:

    Ic1_user:
    name , pass , ...

    die Tabelle für das Game besteht aus

    authorize_users:
    name , password , ...

    beide Tabellen befinden sich schonmal in der Selben Datenbank

    Wie kann ich nun die einträge die bei Ilch bei einer registration gesezt werden auch in der andren Tabelle setzen?

    Meine bisherige vorgehensweise:

    In der Contents/user/regist.php nach Möglichkeiten gesucht. Nix gefunden :/

    Bin für jede Hilfe dankbar
    Kopf Zu!
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    kdl Mitglied
    Registriert seit
    21.08.2010
    Beiträge
    333
    Beitragswertungen
    62 Beitragspunkte
    Wieso löst du das Problem nicht mit einem zusätzlichen query? Du kannst doch die Daten gleich in 2 Tabellen eintragen. Wo ist denn da das Problem?
    .
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    soulreafer Mitglied
    Registriert seit
    26.01.2010
    Beiträge
    42
    Beitragswertungen
    0 Beitragspunkte
    ja. aber ab wo passiert das ganze? in der regist.php oder in der confirm.php

    danke.

    Edit:

    In der Confirm.php habe ich das richtige gefunden würde ich mal behaupten. Jedoch geht es nicht so wie ich es gemacht habe:

    # confirm regist
    	  case 1 :
    		  if ( 0 == db_count_query("SELECT COUNT(*) FROM prefix_user WHERE name = BINARY '".$row['name']."'") ) {
    			  db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    			  VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."','".$row['email']."',1,1,1)");
    
                           db_query("INSERT INTO authorize_users (name,password)
                           VALUES('".$row['name']."','".$row['pass']."');


    Warum?


    Zuletzt modifiziert von soulreafer am 01.02.2011 - 19:25:25
    Kopf Zu!
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    kdl Mitglied
    Registriert seit
    21.08.2010
    Beiträge
    333
    Beitragswertungen
    62 Beitragspunkte
    Das kommt jetzt auf deine Einstellungen und wie du es haben willst an:
    Hast du in der Admin-Konfiguration "Registrierung per Link im eMail bestätigen?" auf ja gestellt, hast du zum einen die Möglichkeit, die Zugangsdaten vor dem Bestätigen der Mail zu speichern oder eben hinterher.

    Dazu werden die eingaben in der Tabelle _usercheck zwischengespeichert:
    include/includes/func/user.php bei Zeile 291
    db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    		VALUES ('".$id."','".$name."','".$mail."','".$md5_pass."',NOW(),1)");


    Beim bestätigen der Mail werden die Daten ausgelesen und in die Tabelle _user verschoben:
    include/contents/user/confirm.php bei Zeile 25
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    			  VALUES('".$row['name']."','".$row['pass']."',-1,'".time()."','".time()."','".$row['email']."',1,1,1)");


    Du kannst dir hier also aussuchen, wo du deinen query hinsetzt.

    Wenn du "Registrierung per Link im eMail bestätigen?" auf Nein gestellt hast, sieht das ganze etwas anders aus:
    include/includes/func/user.php bei Zeile 294
    db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    		VALUES('".$name."','".$md5_pass."',-1,'".time()."','".time()."','".$mail."',1,1,1)");



    Hoffe das hilft dir zwinker
    .
    1 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    soulreafer Mitglied
    Registriert seit
    26.01.2010
    Beiträge
    42
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat
    ok soweit verstanden. danke dafür. ich habe zu testzwecken jetzt mal das ganze so geändert:

    # confirm regist
    	  case 1 :
    		  if ( 0 == db_count_query("SELECT COUNT(*) FROM prefix_user WHERE name = BINARY '".$row['name']."'") ) {
    			  db_query("INSERT INTO [b]authorize_users[/b] ([b]name,password[/b])
    			  [b]VALUES('".$row['name']."','".$row['pass']."');[/b]
    
    			  echo $lang['confirmregist'];
    			} else {
    			  echo $lang['confirmregistfailed'];
    			}
    		  break;


    da ich mich noch nicht schlau gelesen habe wie ich mit einer if schleife 2 aktionen ausfüehren lasse habe ich einfach die standarttabelle der zugewiesen welche ich eigentlich zusätzlich befüllen lassen will jedoch wird nix in die tabelle geschrieben wenn ich einen nick registriere.


    Zuletzt modifiziert von soulreafer am 01.02.2011 - 21:09:34


    Edit: Fehler gefunden- Behoben. Kann geschlossen werden


    Zuletzt modifiziert von soulreafer am 01.02.2011 - 21:14:10
    Kopf Zu!
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    SlashLife Mitglied
    Registriert seit
    31.12.2009
    Beiträge
    44
    Beitragswertungen
    7 Beitragspunkte
    ZitatZitat geschrieben von soulreafer

    Ilch User Tabelle besteht ja aus:

    Ic1_user:
    name , pass , ...

    die Tabelle für das Game besteht aus

    authorize_users:
    name , password , ...


    CREATE VIEW
        authorize_users
    AS
        SELECT
            name AS name,
            pass AS password
        FROM
            Ic1_user
    ;


    ... vermutlich die allereinfachste Möglichkeit.
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    soulreafer Mitglied
    Registriert seit
    26.01.2010
    Beiträge
    42
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von SlashLife

    ZitatZitat geschrieben von soulreafer

    Ilch User Tabelle besteht ja aus:

    Ic1_user:
    name , pass , ...

    die Tabelle für das Game besteht aus

    authorize_users:
    name , password , ...


    CREATE VIEW
        authorize_users
    AS
        SELECT
            name AS name,
            pass AS password
        FROM
            Ic1_user
    ;


    ... vermutlich die allereinfachste Möglichkeit.


    Verstehe ich das richtig? Habe mir eben mal ein paar infos dazu durchgelesen und iwas von "A view always shows up-to-date data!" gelesen.
    Bedeutet das, ich muss den SQL Befehl nur einmal ausführen und es wird jedes mal wenn sich die ilch User Tabelle ändert geprüft und angelegt oder muss ich den code in meine confirm.php schmeißen sodass es jedesmal ausgeführt wird wenn confirm.php angesprochen wird?

    Danke
    Kopf Zu!
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Nein das ist sozusagen eine virtuelle Tabelle in MySQL, die wenn du sie benutzt selbst erst in der originalen Tabelle nach sieht und deswegen immer aktuell ist.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten