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: Warning: mysql_fetch_array() admin/start.php on line 50

    cybermailer

    • Schreiberling
    • Beiträge: 308
    Warning: mysql_fetch_array() admin/start.php on line 50
    Antwort #15 am: 05. Februar 2010, 20:22:25
    Hallo,

    hab jetzt herausgefunden ab wann der Fehler auftritt.

    Und zwar sobald man die admin/indludes/applicatin_top.php bearbeitet.

    Theoretisch soll ich sie so abarbeiten:

    Suche:

    Code: PHP  [Auswählen]
      define('FILENAME_XSELL_GROUPS','cross_sell_groups.php');
    Darunter einfügen:

    Code: PHP  [Auswählen]
      define('FILENAME_ACCESSORIES', 'accessories.php');
      define('TABLE_ACCESSORIES', 'accessories');
      define('TABLE_ACCESSORIES_PRODUCTS', 'accessories_products');
    Finde:

    Code: PHP  [Auswählen]
    // include needed functions
      require_once(DIR_FS_INC . 'xtc_db_connect.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_close.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_error.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_query.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_queryCached.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_perform.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_fetch_array.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_num_rows.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_data_seek.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_insert_id.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_free_result.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_fetch_fields.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_output.inc.php');
      require_once(DIR_FS_INC . 'xtc_db_input.inc.php');
     
    Ersetze:

    Code: PHP  [Auswählen]
    require_once('../'.DIR_WS_FUNCTIONS.'database.php');
    //require_once(DIR_FS_INC . 'xtc_db_connect.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_close.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_error.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_query.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_queryCached.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_perform.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_fetch_array.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_num_rows.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_data_seek.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_insert_id.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_free_result.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_fetch_fields.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_output.inc.php');
    //require_once(DIR_FS_INC . 'xtc_db_input.inc.php');

    Finde:

    Code: PHP  [Auswählen]
    xtc_db_connect() or die('Unable to connect to database server!');

    Ersetze:

    Code: PHP  [Auswählen]
    require_once (DIR_FS_CATALOG.'imedes_library/db_connect_alt_admin.php');
            db_connect_alt() or die('Unable to connect to database server!');
            global $ADODB_FETCH_MODE;
            $ADODB_FETCH_MODE=ADODB_FETCH_ASSOC;

    Habt Ihr eine Idee - was hier verantwortlich sein könnte?

    THX

    Werbung / Banner buchen

    vr

    • modified Team
    • Beiträge: 2.664
    Warning: mysql_fetch_array() admin/start.php on line 50
    Antwort #16 am: 06. Februar 2010, 11:01:31
    Die letzte Ersetzung ist die entscheidende: Du benutzt jetzt die imedes-Funktion, um zur Datenbank zu connecten. Alle weiteren Abfragen benutzen dann diese connection.

    Vergleich mal bitte den Code von xtc_db_connect und db_connect_alt. Bzw kannst Du bitte den Code der Funktion db_connect_alt hier mal posten? Und schließlich wird durch

    global $ADODB_FETCH_MODE;
    $ADODB_FETCH_MODE=ADODB_FETCH_ASSOC;

    das Format eines beliebigen Abfrage-Ergebnisobjekts auf ADODB_FETCH_ASSOC eingestellt, und das ist genau, was wir im var_dump gesehen haben. Eine beliebige Abfrage liefert jetzt nicht mehr wie vorher eine MySQL-ErgebnisRessource zurück, sondern ein assoziatives ADO-Array. Alle Stellen, die aber von einer MySQL-ErgebnisRessource ausgehen und mit entsprechenden Funktionen das Ergebnis durchgehen, wie zb mysql_fetch_array, können dann natürlich nicht mehr funktionieren.

    Grüße, Volker

    cybermailer

    • Schreiberling
    • Beiträge: 308
    Warning: mysql_fetch_array() admin/start.php on line 50
    Antwort #17 am: 06. Februar 2010, 15:34:35
    Hi - danke erstmal!

    Hier ist der Code:

    Code: PHP  [Auswählen]
    <?php
    function db_connect_alt(){
            // folgender Code ist aus der database.php
            // Probleme mit Zeichensatz, da database.php utf-8 einstellt
            global $db;
            //$this->DemoStore = true;
            if (file_exists(DIR_FS_CATALOG.DIR_WS_CLASSES . 'adodb_full/adodb.inc.php')) {
                    include_once (DIR_FS_CATALOG.DIR_WS_CLASSES . 'adodb_full/adodb-errorhandler.inc.php');
                    include_once (DIR_FS_CATALOG.DIR_WS_CLASSES . 'adodb_full/adodb.inc.php');
                    $ADODB_CACHE_DIR = 'cache';
            } else {
                    include_once('../includes/classes/adodb_full/adodb-errorhandler.inc.php');
                    include_once('../includes/classes/adodb_full/adodb.inc.php');
                    $ADODB_CACHE_DIR = '../cache';
            }
            $db = ADONewConnection('mysql');
            $db->cacheSecs = DB_CACHE_EXPIRE;
            if (STORE_DB_TRANSACTIONS == 'true')
                    $db->LogSQL();
            if (USE_PCONNECT == 'true') {
                    $db->pConnect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
            } else {
                    $db->Connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
            }
            return $db;
    }
    ?>

    Anmerkung am Rande:

    Dieser Zusatzcode wurde auch in der Frontend application_top angefügt und dort hab ich bis jetzt keinen Fehler entdecken können ?!

    Und wie gesagt bei einer Standard XT Commerce werden auch keine Fehler ausgegeben - zumindest nicht sichtbar ....

    Danke - dass du mir hilfst!!

    vr

    • modified Team
    • Beiträge: 2.664
    Warning: mysql_fetch_array() admin/start.php on line 50
    Antwort #18 am: 06. Februar 2010, 17:23:19
    Hallo cybermailer,

    ersetz mal bitte in der admin/start.php die Aufrufe von

    mysql_fetch_array(...

    durch

    xtc_db_fetch_array(...

    Grüße, Volker

    cybermailer

    • Schreiberling
    • Beiträge: 308
    Warning: mysql_fetch_array() admin/start.php on line 50
    Antwort #19 am: 06. Februar 2010, 17:34:19
    Voila! Fehler ist weg!!! -> was hast du jetzt gemacht (ausgedrückt für mich als Laien..) Warum kommt dieser Fehler glaubst du bei XTC Mod? und bei meiner Normalen nicht? ... (will's nur verstehen ... :) )

    100.000.000 THX

    vr

    • modified Team
    • Beiträge: 2.664
    Warning: mysql_fetch_array() admin/start.php on line 50
    Antwort #20 am: 06. Februar 2010, 18:36:07
    Hallo cybermailer,

    hat ne Weile gedauert, bis bei mir der Groschen gefallen ist. Der Unterschied zwischen mysql_fetch_array und xtc_db_fetch_array besteht u.a. darin, dass xtc_db_fetch_array selber festlegt, wie es ein Ergebnispaket interpretiert. mysql_fetch_array hingegen verlässt sich darauf, dass das Ergebnispaket im passenden 'Format' serviert wird.

    Mit der Änderung von oben ist die start.php nun etwas robuster, selbst wenn Module so zentrale Geschichten wie das Datenbankconnect des shops umbauen.

    Die betroffenen Stellen hatte ich selber so eingebaut und damals nicht gedacht, dass andere Module das Datenbankconnect des shops ersetzen würden.

    Von daher: Ich hab zu danken.  :thx:

    Geändert in r751

    Grüße, Volker