. .
pragmaMx Support Forum 26 Mai 2012, 01:08:36 *
Willkommen Gast. Bitte einloggen oder registrieren.


Einloggen mit Benutzername und Passwort
News:
Brauchen Sie Hilfe? Bitte nutzen Sie unsere Suchfunktion bevor Sie Beiträge oder Fragen ins Board schreiben! Viele Fragen wurden bereits gestellt und beantwortet. Danke!
 
Übersicht Hilfe Forenregeln / Boardrules
 
Suche
Seiten: [1]   Nach unten
Drucken
Autor Thema: [gelöst] finishNewUser_option (mx_userfunctions_options)  (Gelesen 1657 mal)
0 Mitglieder und 2 Gäste betrachten dieses Thema.
AlternativeComputing
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 277


« am: 15 August 2011, 15:18:16 »

Moin Moin,

Andi ich hoffe Du kannst mir helfen.

Nun die meisten Probleme hab ich nun alle selber hinbekommen, hänge aber nun an einer Sache fest:

Folgenes Zenario:

Der Neue User/Kunde registriert sich, füllt alle benötigten Felder aus, klick auf "Neuer Benutzer" und nun muß der User/Kunde seine Angaben bestätigen. Soweit sogut. Das Funktioniert alles.

Nun soll, wenn der User/Kunde seine Angaben bestätigt hat, mit der "finishNewUser_option" die in der Session stehenden Daten (Vorname, Nachname, Straße, etc) Automatisch in das osc Adressbuch geschrieben werden.

 Darf/kann ich in der "mx_userfunctions_options" mit "mxSessionGetVar" arbeiten, um die benötigten Daten aus der Session abzugreifen um sie ins Adressbuch zu kopieren?

Habe es schon mit einer Extra funktion probiert, klappe aber nicht:

Code: [Select]  
$qry = "INSERT INTO " . $prefix ."_oscpmx_address_book (uid, entry_user_sexus, entry_company, entry_firstname, entry_lastname, entry_street_address, entry_suburb, entry_postcode, entry_city, entry_state, entry_country_id, entry_zone_id)
  SELECT uid, user_sexus, user_company, user_firstname, user_lastname, user_street_address, user_suburb, user_postcode, user_city, user_state, user_country_id, user_zone_id FROM " . $prefix ."_users;";

            sql_system_query($qry);
// die Funktion hab ich mir aus der "mx_userfunctions" abgegugt aber ohne gewünschten erfolg.

Gespeichert

MfG

Peter

CMS-Version: pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 :: PHP-Version: 5.3.7RC2-dev :: MySQL-Version: 5.1.46-log :: Server-Version: Apache/2.2.15 (Linux/SUSE)

Projekt: osc4pragmaMx- In der Entwicklung
AlternativeComputing
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 277


« Antworten #1 am: 16 August 2011, 14:34:55 »

Moin Moin,  morning

Schade.

Ich habe mir mal die Session beim Registrierungsabschluß angesehen und festgestellt, das ja keine uid mit gegeben wird.

Also muß ich mir woll was anderes einfallen lassen, um beim Registrierungsabschluß das Adressbuch mit zu füllen.
Gespeichert

MfG

Peter

CMS-Version: pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 :: PHP-Version: 5.3.7RC2-dev :: MySQL-Version: 5.1.46-log :: Server-Version: Apache/2.2.15 (Linux/SUSE)

Projekt: osc4pragmaMx- In der Entwicklung
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #2 am: 16 August 2011, 15:14:39 »

Moin Smiley

du versteifst dich immer zu sehr auf die Session....

Codest du für 1.12, da wäre eine ganz einfache Lösung möglich.
Aber nur in 1.12...
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
AlternativeComputing
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 277


« Antworten #3 am: 16 August 2011, 16:10:13 »

Moin Andi Smiley

Erstmal Danke für Deine Antwort Smiley

Nein die Sessions hab ich jetzt mal weggelassen.

Das problem ist ja das:

Der neue User wird ja erst in die usertabelle geschrieben, wenn alle Registerprozese abgeschloßen sind, soweit ich das verfolgen konnte.

Nun soll eigendlich, beim Abschluß der Registrierung (wenn die letzte Seite des Registerprozeses erscheint) das Adressbuch mit gefüllt werden.

Ich hab es erst garnicht mit den Sessions, sondern mit "Insert ... Select ... From" probiert:

Code: [Select]  
/**
 * Info
 * die zusaetzlichen Datenbankfelder als array
 *       - um ein zusaetzliches Feld in die Insert-Query einzufuegen,
 *       einfach den Feldnamen und den Wert in der entsprechenden
 *       SQL-Syntax hinzufuegen (siehe Beispieldaten)
 *       - um eine bestehende (Original) Kombination auszuschliessen
 *       den entsprechenden Arraywert aus dem $fields-Array löschen
 *         z.B. unset($fields[13]);
 */
function finishNewUser_option($session, $fields)
{
    $formvars = mxAddSlashesForSQL($session);
    extract($formvars);
    // mxDebugFuncVars($session);
    // unset($fields[4]); #  = "femail         = '$femail'";
    // unset($fields[5]); #  = "url            = '$url'";
    // unset($fields[6]); #  = "user_avatar    = '$user_avatar'";
    // unset($fields[8]); #  = "user_icq       = '$user_icq'";
    // unset($fields[9]); #  = "user_occ       = '$user_occ'";
    // unset($fields[10]); # = "user_from      = '$user_from'";
    // unset($fields[11]); # = "user_intrest   = '$user_intrest'";
    // unset($fields[12]); # = "user_sig       = '$user_sig'";
    // unset($fields[13]); # = "user_aim       = '$user_aim'";
    // unset($fields[14]); # = "user_yim       = '$user_yim'";
    // unset($fields[15]); # = "user_msnm      = '$user_msnm'";
    // / Beispiel: die YA-Erweiterung von _Gerry_
    if (isset($user_company)) $fields[26] = "user_company = '$user_company'";
    if (isset($user_firstname)) $fields[27] = "user_firstname = '$user_firstname'";
    if (isset($user_lastname)) $fields[28] = "user_lastname = '$user_lastname'";
    if (isset($user_street_address)) $fields[29] = "user_street_address = '$user_street_address'";
    if (isset($user_suburb)) $fields[30] = "user_suburb = '$user_suburb'";
    if (isset($user_postcode)) $fields[31] = "user_postcode = '$user_postcode'";
    if (isset($user_city)) $fields[32] = "user_city = '$user_city'";
    if (isset($user_zone_id)) $fields[33] = "user_zone_id = '$user_zone_id'";
    if (isset($user_country_id)) $fields[34] = "user_country_id = '$user_country_id'";
    if (isset($user_telephone)) $fields[35] = "user_telephone = '$user_telephone'";
    if (isset($user_telefax)) $fields[36] = "user_telefax = '$user_telefax'";
    if (isset($customers_default_address_id)) $fields[37] = "customers_default_address_id = '$customers_default_address_id'";
    return $fields;

$sql = "INSERT INTO " . $prefix ."_oscpmx_address_book (uid, entry_user_sexus, entry_company, entry_firstname, entry_lastname, entry_street_address, entry_suburb, entry_postcode, entry_city, entry_state, entry_country_id, entry_zone_id)
                   SELECT uid, user_sexus, user_company, user_firstname, user_lastname, user_street_address, user_suburb, user_postcode, user_city, user_state, user_country_id, user_zone_id
                   FROM " . $prefix ."_users";
$mysql_query($sql);
}

Ich dachte ja, daß das anhängen reichte, was aber nicht so ist.

Nun werde ich es woll doch über die "User_Registration" index file probieren. Ich wollte eigendlich sowenig Dateinen wie möglich bearbeiten Sad

<Edit>
Erstmal für die 0.1.11.3, dann sind alle nötigen Datein angepast. Danach kommt der Port auf die 1.12
</Edit>
Gespeichert

MfG

Peter

CMS-Version: pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 :: PHP-Version: 5.3.7RC2-dev :: MySQL-Version: 5.1.46-log :: Server-Version: Apache/2.2.15 (Linux/SUSE)

Projekt: osc4pragmaMx- In der Entwicklung
AlternativeComputing
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 277


« Antworten #4 am: 16 August 2011, 20:12:00 »

Moin Moin,  biggrin

Ok das Adressbuch Problem habe ich Tasächlich über die index File des "User_Registration" Moduls gelöst bekommen. ^^

Code: [Select]  
       $viewvars = mxStripSlashes($session);
        $viewvars['uid'] = sql_insert_id();
        // mxDebugFuncvars($viewvars); exit;
        sendnewusermail($viewvars);
        sendnewuserpm($viewvars);
        // extract($viewvars);
        if ($newsletter) {
            $userhost = gethostbyaddr(MX_REMOTE_ADDR);
            $result2 = sql_query("INSERT INTO ${prefix}_newsletter SET email = '$email', html='1', status = '2', checkkey='0', regdate='$user_regtime', regip='$userip', reghost='$userhost'");
        }
// Ab hier der Edit:
        $sql = "INSERT INTO " . $prefix ."_oscpmx_address_book (uid, entry_user_sexus, entry_company, entry_firstname, entry_lastname, entry_street_address, entry_suburb, entry_postcode, entry_city, entry_country_id, entry_zone_id)
                   SELECT uid, user_sexus, user_company, user_firstname, user_lastname, user_street_address, user_suburb, user_postcode, user_city, user_country_id, user_zone_id
                   FROM " . $prefix ."_users
                   WHERE uid = " . (int)$viewvars['uid'] . "";
        $result1 = sql_query($sql);
        if (!$result1) {
            mxErrorScreen(_DATABASEERROR);
            return;
        }
// Ende des Edits

Soweit sogut.

Wenn ich jetzt in den bestehenden User/Kunden Eintrag, aus den nun neu angelegten Adressbucheintrag, die address_book_id in das Feld customers_default_address_id des dazugehörigen (auch neu angeleten) User/Kunden kopieren will, wird mit dem folgenen Code ein komplet leerer User angelegt, nur das Feld customers_default_address_id wird mit der letzten address_book_id gefüllt.  puzzled

Code: [Select]  
       $sql = "INSERT INTO " . $prefix ."_users (customers_default_address_id)
                   SELECT address_book_id
                   FROM " . $prefix ."_oscpmx_address_book
                   WHERE uid = " . (int)$viewvars['uid'] . "";
        $result1 = sql_query($sql);
        if (!$result1) {
            mxErrorScreen(_DATABASEERROR);
            return;
        }

Leider müßen alle Kopieraktionen hintereinander abgearbeitet werden.

Naja, aber das werde ich auch noch knacken ^^

<Edit>
Man, bin ich  mad2, mit Insert ist es auch kein Wunder das ein neuer Datensatz angelegt wird, das hinzufügen geht ja nur mit UPDATE
</Edit>
« Letzte Änderung: 16 August 2011, 20:28:42 von AlternativeComputing » Gespeichert

MfG

Peter

CMS-Version: pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 :: PHP-Version: 5.3.7RC2-dev :: MySQL-Version: 5.1.46-log :: Server-Version: Apache/2.2.15 (Linux/SUSE)

Projekt: osc4pragmaMx- In der Entwicklung
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 19.424

Andi


WWW
« Antworten #5 am: 16 August 2011, 22:00:34 »

Moin Smiley

je nach Registrieroption kann es auch sein, dass der User erst in die temporäre Usertabelle geschrieben wird.

Aber sobald der User in der Usertabelle gespeichert ist, kannst du all seine Daten über die Api-Funktionen ermitteln. z.B. mxGetUserDataFromUid()

Zitat
Erstmal für die 0.1.11.3, dann sind alle nötigen Datein angepast. Danach kommt der Port auf die 1.12
Als Entwickler würde ich dir empfehlen dein Hauptaugenmerk auf die 1.12 zu legen, vergiss die 0.1.11, die wird bald Geschichte sein.
Die 1.12 beinhaltet gegenüber der 0.1.11 etliche Verbesserungen zur Modulentwicklung. So z.B. gibt es für eigentlich alle relevanten Userfunktionen, sogenannte "Hooks", die es erlauben, modulspezifischen Code direkt in der jeweiligen Funktion auszuführen, ohne die Systemdatei zu ändern.
Für dieses aktuelle Problem von dir, würde es genügen, eine spezielle Datei (modules/DEINMODUL/core/user.add.php) in deinem Modul anzulegen, die dann nach der Registrierung vom System automatisch eingelesen und interpretiert wird...
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
AlternativeComputing
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 277


« Antworten #6 am: 16 August 2011, 22:08:36 »

Moin Andi,

Danke für die Infos Smiley

Ok das letzte Problem hab ich ja nun auch gelöst:

Code: [Select]  
        $sql = "UPDATE " . $prefix ."_users AS u, " . $prefix ."_oscpmx_address_book AS oab SET u.customers_default_address_id = oab.address_book_id WHERE u.uid = oab.uid";
        $result4 = sql_query($sql);
        if (!$result4) {
            mxErrorScreen(_DATABASEERROR);
            return;
        }

Ok dann muß ich noch ne if und else Bedingung, zur Prüfung, ob in der user_temp Daten stehen oder nicht, einbauen.

Ich würde ja gerne das 1.12 benutzen, wenn es nicht mehr ein RC ist. Es war schon ein Fehler den osCommerce in der 2.2RC2a als Modul zu benutzen.

Aber vielen Dank nochmals für die Info mit der user_temp, an die hab ich jetzt net gedacht.
Gespeichert

MfG

Peter

CMS-Version: pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 :: PHP-Version: 5.3.7RC2-dev :: MySQL-Version: 5.1.46-log :: Server-Version: Apache/2.2.15 (Linux/SUSE)

Projekt: osc4pragmaMx- In der Entwicklung
Seiten: [1]   Nach oben
Drucken
 
Gehe zu:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
design by hENNE, layout based on YAML