Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: Ajax State Updater (Bundesländer Dropdown)

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #15 am: 20. September 2012, 01:41:09
    Was genau verstehst du denn hieran nicht ?
    Zitat von: h-h-h
    ...dem übergeordnetem div oder tr vom state Feld ein id="state" hinzufügen.

    Gruß,
    noRiddle
    rechtstexte für onlineshop

    smoker

    • Mitglied
    • Beiträge: 197
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #16 am: 20. September 2012, 01:44:06
    "WAS/welcher Code" muß in der create_account.html eingefügt werden?

    Gruß Smoker

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #17 am: 20. September 2012, 16:57:55
    Nun, es weiß ja niemand wie dein Template aussieht.
    Hast du noch Tabellen wie im Original, dann eben so:

    Code: PHP  [Auswählen]
    <tr>
        <td>{#text_country#}</td>
       <td>{$SELECT_COUNTRY}</td>
      </tr>
      {if $state=='1'}
      <tr id="state"> <!-- hier ist die ID vergeben worden die mit jQuery ein- oder ausgeblendet wird -->
        <td>{#text_state#}</td>
       <td>{$INPUT_STATE}</td>
      </tr>
      {/if}

    Ich kenne die Erweiterung nicht genau und habe sie auch noch nirgends eingebaut,
    h-h-h's Aussagen sind aber nur so zu verstehen und sind auch logisch im Code.

    Es stellt sich nur die Frage was jQuery bei .show mit Tabellen-Zeilen (tr) macht.
    Das Einblenden sieht nämlich in manchen Browsern seltsam aus, da Tabellenzeilen und -zellen nicht so ohne weiteres auf .animate reagieren und .show wird normalerweise animiert eingeblendet.
    Evtl. ist es daher besser die Tabellenstruktur in p-tags oder div-tags umzubauen.
    Mußt du ausprobieren.

    Gruß,
    noRiddle

    Teichbau

    • Fördermitglied
    • Beiträge: 385
    • Geschlecht:
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #18 am: 03. April 2013, 10:50:43
    Modul heute eingebaut (1.05 SP1b) und funktioniert einwandfrei.
    Dank an:
    - h-h-h
    - web0null
    - hedon02
    - noRiddle (freue mich immer über Deine Hilfe)
    - Smoker (Deine Fragestellung hat auch mir geholfen)

    Mein Problem war, das Kunden aus Canada, USA und Japan nicht an Paypal weiter geleitet wurden.
    Mindestens diese Staaten benötigen aber zusätzlich die Angabe des jeweiligen Bundesstaates, welches in meiner Konfiguration deaktiviert war.
    Damit bei den anderen Ländern wie z.B. die der EU etc. nicht nach dem Bundesland bei Erstellung des Kontos gefragt wird, habe ich in der DB die Tablle "zones" als Sicherung kopiert.
    In der "zones" selbst habe ich dann alle Bundesstaaten außer den country_id's 38 (CA), 107 (JP) und 223 (USA) gelöscht.

    Gruß Torsten

    kaisa

    • Schreiberling
    • Beiträge: 365
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #19 am: 24. August 2013, 22:28:43
    Klappt prima, auch mit dem Update, dass das Feld sonst ausgeblendet wird.

    Jetzt möchte ich die Bundesländer am liebsten nur für die USA/Kanada eingeblendet haben, damit PayPal auch funktioniert, ansonsten brauche ich die Bundesländer nicht.

    kaisa

    • Schreiberling
    • Beiträge: 365
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #20 am: 25. August 2013, 12:58:29
    So kann man alle Einträge löschen außer für USA, Canada, Japan:

    Code: SQL  [Auswählen]
    DELETE FROM zones WHERE zone_country_id != 38 AND zone_country_id != 107 AND zone_country_id != 223

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #21 am: 20. September 2013, 00:13:52
    Hier der aktuelle Code welcher in die neue Shopversion eingeflossen ist:

    Code: PHP  [Auswählen]
    <?php // Ajax State/District/Bundesland Updater - h-h-h
    $state_pages = array('address_book_process.php','create_account.php','create_guest_account.php','checkout_shipping_address.php','checkout_payment_address.php');
    if (ACCOUNT_STATE == 'true' && in_array(basename($PHP_SELF), $state_pages)) { ?>
    <script type="text/javascript">
    /* <![CDATA[ */
    function load_state() {
      var selection = $("select[name='country']").val();
      $.get('get_states.php', {country: selection}, function(data) {
        if (data != '' && data != undefined) {  
          $("[name='state']").replaceWith('<select name="state"></select>');
          var stateSelect = $("[name='state']");
          $.each(data, function(id, text) {
            $("<option />", {
              "value"   : text,
              "text"    : text
            }).appendTo(stateSelect);
          });
        } else {
          $("[name='state']").replaceWith('<input type="text" name="state"></input>');
        }
      });
    }
    $(function() {
      if ($("[name=state]").length) {
        $("select[name='country']").change(function() { load_state(); });
        if ($('div.errormessage').length == 0 && $("select[type=state] option:selected").length == 0) {
          load_state();
        }
      }
    });
    /*]]>*/
    </script>
    <?php } // Ajax State/District/Bundesland Updater - h-h-h ?>

    Die Reihenfolge von Land und Bundesland muss in folgenden Dateien geändert werden:
    address_book_details.html, checkout_new_address.html, create_account.html und der create_account_guest.html

    Viele Grüße,

    h-h-h

    kaisa

    • Schreiberling
    • Beiträge: 365
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #22 am: 12. Oktober 2013, 02:07:40
    Irgendwie dachte ich, es funktioniert, aber bei mir doch nicht so richtig.
    Ich habe alle Bundesländer außer für ein paar benötigte Länder gelöscht, wie z.B. für die USA, da die Angabe für PayPal benötigt wird.

    1. Das Bundesland-Feld erscheint nur, wenn ich im Admin das als Pflichtfeld angebe. Laut Anleitung soll ich das aber ausstellen
    2. Wenn ich Deutschland auswähle, es Fehler durch die Registierung gibt (z.B. fehlende Angaben in anderen Feldern), dann erscheint plötzlich das Freitext-Bundeslandfeld, was sonst nicht erscheinen würde.
    3. In der Datenbank wird nur eine Zone-ID eingetragen und kein Bundesland im Klartext. Ist das richtig so?

    cole

    • Neu im Forum
    • Beiträge: 7
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #23 am: 14. März 2014, 11:07:48
    Betrifft Ajax Bundesland/States Update

    Shopversion modified eCommerce Shopsoftware v1.05 dated: 2010-07-18 SP1d
    ______________________________________________________

    Alles so umgesetzt wie hier beschrieben.

    Ein Problem besteht noch. Wenn sich ein Kunde eines Landes ohne "Bundesland"-Angabe neu registriert, beispielsweise Schweden, dann wird in die Datenbank Baden-Würtemberg für den schwedischen Kunden eingetragen. Das taucht natürlich überall dann auf (Bestellbestätigung, Rechnung, Kundendaten...)

    Wie kann man das vermeiden?

    Danke.

    lachralle

    • Neu im Forum
    • Beiträge: 17
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #24 am: 14. März 2014, 12:29:51
    Hallo.

    Ich habe jQuery 1.10.1 (alternativ auch mal 1.4.2) eingebunden, get_zones.php hochgeladen und das Script in general.js.php eingefügt. Chrome meldet immer bei dieser Zeile:

    Zitat
    var selection = $("select[name='country']").val();
    Uncaught TypeError: Cannot read property 'val' of null

    und das Script bricht ab. Weiß jemand, was ich falsch mache? jQuery scheint nicht auf das Select mit dem Namen country zugreifen zu können, jQuery Funktionen wie $(document).ready(function() funktionieren aber und andere hier berichten ja auch, dass sie das Script zum Laufen bekommen haben. Wie habt Ihr jQuery eingebunden?

    Shop-Version: modified eCommerce Shopsoftware v1.05 dated: 2010-07-18 SP1d
    Test-Seite: http://www.ebelholztechnik.de/shop/create_account.php

    hedon02

    • Viel Schreiber
    • Beiträge: 618
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #25 am: 14. März 2014, 14:58:32
    :-? naja Du hast Dir doch die Antwort schon fast selbst gegeben.

    1. Zeile dieses Codes:

    Code: Javascript  [Auswählen]
    $(function() {
      if ($("[name=state]").length) {
        $("select[name='country']").change(function() { load_state(); });
        if ($('div.errormessage').length == 0 && $("select[type=state] option:selected").length == 0) {
          load_state();
        }
      }
    });

    ersetzen durch 1.Zeile dieses Codes:

    Code: Javascript  [Auswählen]
    $(document).ready(function() {
      if ($("[name=state]").length) {
        $("select[name='country']").change(function() {
          load_state();
        });
        if ($('div.errormessage').length == 0 && $("select[type=state] option:selected").length == 0) {
          load_state();
        }
      }
    });

    @ Cole: das ist bei korrektem Einbau des von h-h-h aktualisierten Codes nicht nachvollziehbar. Die Form würde das auch gar nicht übergeben, da es ja nicht eingetragen ist.

    Grüsse

    cole

    • Neu im Forum
    • Beiträge: 7
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #26 am: 14. März 2014, 17:41:48
    Ja natürlich wird das nicht aus der Form übergeben. Das heißt, es muss irgendwo, und die Stelle habe ich nicht eruieren können, reliktmäßig in die Datenbank übernommen werden.

    So habe ich die Zone-Tabelle bereinigt, von den Ländern, für die keine Bundesland/States/County-Abfrage notwendig ist.

    Es blieben USA, Japan, Canada.

    Wenn sich jetzt ein User aus bspw. Schweden registriert, dann fehlt selbstverständlich die Regionsabgrage im Form, dann wird jetzt aber nicht mehr Baden-Würtemberg in die Datenbank geschrieben (weil D in der Zones-Tabelle gelöscht wurde), sondern Alabama für den schwedischen Kunden in die DB geschrieben, was auch dann so in den entsprechenden Mail auftaucht, was natürlich unschön ist.

    Ich habe inzwischen die Updates, die hier vorgeschlagen wurden nochmals überprüft, habe da aber keinen Fehler entdeckt.

    hedon02

    • Viel Schreiber
    • Beiträge: 618
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #27 am: 14. März 2014, 18:19:24
    Da gibt es kein Relikt, Du nutzt eben nicht den aktualisierten Code sondern die Erweiterung
    Zitat
    Anleitung: Kein leeres Feld bei Ländern ohne Bundesländer
    Das funktioniert nicht, da das Bundesland select lediglich verborgen, aber trotzdem übergeben wird. Wähle Frankreich, dann Schweden und Du hast nicht Baden-Würtemberg sondern Ain stehen.

    Gruss

    cole

    • Neu im Forum
    • Beiträge: 7
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #28 am: 14. März 2014, 18:34:53
    Du schreibst, ich würde den aktualisierten Code nicht nutzen, sondern die Erweiterung.

    Was ist denn für Dich aktualisierter Code und was ist für Dich Erweiterung.

    Kannst Du das genauer beschreiben?

    hedon02

    • Viel Schreiber
    • Beiträge: 618
    Re: MODUL: Ajax State Updater (Bundesländer Dropdown)
    Antwort #29 am: 14. März 2014, 18:36:09
    Hier der aktuelle Code welcher in die neue Shopversion eingeflossen ist:

    Code: PHP  [Auswählen]
    <?php // Ajax State/District/Bundesland Updater - h-h-h
    $state_pages = array('address_book_process.php','create_account.php','create_guest_account.php','checkout_shipping_address.php','checkout_payment_address.php');
    if (ACCOUNT_STATE == 'true' && in_array(basename($PHP_SELF), $state_pages)) { ?>
    <script type="text/javascript">
    /* <![CDATA[ */
    function load_state() {
      var selection = $("select[name='country']").val();
      $.get('get_states.php', {country: selection}, function(data) {
        if (data != '' && data != undefined) {  
          $("[name='state']").replaceWith('<select name="state"></select>');
          var stateSelect = $("[name='state']");
          $.each(data, function(id, text) {
            $("<option />", {
              "value"   : text,
              "text"    : text
            }).appendTo(stateSelect);
          });
        } else {
          $("[name='state']").replaceWith('<input type="text" name="state"></input>');
        }
      });
    }
    $(function() {
      if ($("[name=state]").length) {
        $("select[name='country']").change(function() { load_state(); });
        if ($('div.errormessage').length == 0 && $("select[type=state] option:selected").length == 0) {
          load_state();
        }
      }
    });
    /*]]>*/
    </script>
    <?php } // Ajax State/District/Bundesland Updater - h-h-h ?>

    Die Reihenfolge von Land und Bundesland muss in folgenden Dateien geändert werden:
    address_book_details.html, checkout_new_address.html, create_account.html und der create_account_guest.html
    [...]

    P.S.:

    Code: Javascript  [Auswählen]
    $(function() {

    durch

    Code: Javascript  [Auswählen]
    $(document).ready(function() {

    ersetzen.

    siehe heute

    Gruss
    3 Antworten
    3382 Aufrufe
    18. Februar 2010, 12:44:17 von roschmeier
    3 Antworten
    4818 Aufrufe
    07. Juni 2009, 15:19:01 von Anonym
    9 Antworten
    2110 Aufrufe
    02. April 2019, 14:16:10 von Markus
    3 Antworten
    3311 Aufrufe
    01. Juni 2011, 12:05:16 von DokuMan
               
    anything