tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
426
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HeinerPyt HeinerPyt ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Beiträge
    180
    hallo leute,

    habe gestern eine Änderung an einer der PHP-Dateien vorgenommen. Wenn ich nun den CSV-Export aufrufe bekomme ich folgende Fehlermeldung in meine Exeldatei:
    HTML-Code:
    p style="color:red">SYSTEM WARNING: array_keys() [<a href='function.array-keys'>function.array-keys</a>]: 
    The first argument should be an array</p>
    <p style="color:red">SYSTEM WARNING: Invalid argument supplied for foreach()</p>
    <p style="color:red">SYSTEM WARNING: array_keys() [<a href='function.array-keys'>function.array-keys</a>]: The first argument should be an array</p>
    <p style="color:red">SYSTEM WARNING: Invalid argument supplied for foreach()</p>
    <p style="color:red">SYSTEM WARNING: array_values() [<a href='function.array-values'>function.array-values</a>]: The argument should be an array</p>
    <p style="color:red">SYSTEM WARNING: Invalid argument supplied for foreach()</p>
    Die letzte Zeile wiederholt sich für jeden Datensatz in der DB.

    Die Änderung wurde leider an der datei config_defaults_inc.php vorgenommen und zwar hier:


    PHP-Code:
        # A configuration option that identifies the columns to be include in the CSV export.
        # In Mantis 1.1, this option can be overriden using the Generic Configuration screen.
        # This configuration can be overriden dynamically by overriding the custom function "get_columns_to_view".
        
    $g_csv_columns = array ( 'id''project_id''reporter_id''handler_id''priority''severity''reproducibility''version''projection''category''date_submitted''eta''os''os_build''platform''view_state''last_updated''summary''status''resolution''fixed_in_version''duplicate_id' ); 
    Es wurde in der letzten Zeile zu den vorhandenen Standardbezeicnern ein zusätzlicher column-bezeichner eingefügt. Das ganze wurde dann auch wieder rückgängig gemacht aber es funktioniert trotzdem nicht.

    Kann jemand helfen, da es dringend ist.

    Vielen Dank

    heiner
     

  2. #2
    Avatar von TheBodo
    TheBodo TheBodo ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Braunschweig
    Beiträge
    157
    Ich denke, dass du die Fehlermeldung deuten kannst, oder?

    foreach() erwartet ein Array, und scheint keines zu bekommen. In deinem PHP-Code ist kein foreach() du solltest dir also am besten mal die Stelle suchen in der das foreach steht.

    Das da oben ist definitiv ein Array, daher kann die Fehlermeldung Sinn machen, wenn dies das Array sein soll, das mit foreach behandelt wird. Hast du vlt den Variablennamen falsch, oder im Array (bei dem hier oben nicht) ein Komma mit einem Punkt verwechselt?

    Wenn du etwas anderes mit foreach behandelst, dann guck nach ob sich da etwas verändert hat. Jedenfalls glaubt PHP kein Array zu bekommen.

    Hoffe das hilft für den Anfang, mehr ist aus deinem Post nicht zu lesen glaub ich, sry.
     

  3. #3
    HeinerPyt HeinerPyt ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Beiträge
    180
    Erst mal danke soweit. Hier sollte es es eigentlich die richtige Stelle sein:

    PHP-Code:
    # Get columns to be exported
        
    $t_columns csv_get_columns();

        
    # export the titles
        
    $t_first_column true;
        
    ob_start();
        
    $t_titles = array();
        foreach ( 
    $t_columns as $t_column ) {
            if ( !
    $t_first_column ) {
                echo 
    $t_sep;
            } else {
                
    $t_first_column false;
            }

            if ( 
    strpos$t_column'custom_' ) === ) {
                
    $t_column_title_function 'print_column_title';
                
    helper_call_custom_function$t_column_title_function, array( $t_columnCOLUMNS_TARGET_CSV_PAGE ) );
            } else {
                
    $t_function 'print_column_title_' $t_column;
                
    $t_function'''ASC'COLUMNS_TARGET_CSV_PAGE );
            }
        }

        echo 
    $t_nl

    Und das habe ich auch noch gefunden:

    PHP-Code:
        # --------------------
        # An array of column names that are used to identify  fields to include and in which order.
        
    function csv_get_columns() {
            
    $t_columns helper_get_columns_to_viewCOLUMNS_TARGET_CSV_PAGE );
            return 
    $t_columns;
        }

    Hilft dir das weiter?

    Danke
    heiner 
     

  4. #4
    Avatar von TheBodo
    TheBodo TheBodo ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Braunschweig
    Beiträge
    157
    Naja, also jedenfalls sehe ich in dem Code keinen Fehler (wenn helper_get_columns_to_view() richtig funktionert). Wenn er dir wirklich bei diesem foreach() das Skript spregt probier einfach mal ein

    PHP-Code:
    print_r($t_columns); 
    das dürfte dir zumindest sagen, ob dein Array richtig ankommt.

    Am besten tu setzt es zuerst in den oben code vor dem foreach() und dann in den 2ten, vor dem return.
     

  5. #5
    HeinerPyt HeinerPyt ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Beiträge
    180
    Und wo schreibt der print_r hin?
     

  6. #6
    Avatar von TheBodo
    TheBodo TheBodo ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Braunschweig
    Beiträge
    157
    auf deinen bildschirm
     

  7. #7
    Avatar von TheBodo
    TheBodo TheBodo ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Braunschweig
    Beiträge
    157
    moin, sry hab das vorhin zu schnell und falsch beantwortet.

    Er schreibt dir natürlich in deinen Quelltext, also gibt direkt aus.
    Musst du eventuell mit Rechtsklick -> Quelltext anzeigen sichtbar machen.
     

  8. #8
    HeinerPyt HeinerPyt ist offline Mitglied Gold
    Registriert seit
    Nov 2003
    Beiträge
    180
    Erst mal bis hierher Danke. Leider sehe ich da gar nichts. Gibt es keine Möglichkeit die Ausgabe des print_r zum beispiel in eine Datei umzuleiten.

    Ich kann mir einfach nicht erklären wo der Fehler sein soll.
     

  9. #9
    Avatar von TheBodo
    TheBodo TheBodo ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Braunschweig
    Beiträge
    157
    Gern geschehen.

    kurze Nachfrage, du hast schon print_r mit der Variable benutzt, und dich bei der Variable nicht verschrieben, oder?

    Wenn ja, kann es sein, dass die Varbiable einfach leer ist, dann Zeigt print_r auch nichts an.

    Die Fehlermeldung asu deinem ersten Post sagt einfach, dass das foreach kein Array geliefert bekommt, sondern z. B. einen leeren String oder sowas....

    Da kann also entweder die Funktion fehlerhaft sein, die das Array raholt, also

    csv_get_columns();

    Oder das Array ist nicht richtig definiert worden.
    Da kommen wir wieder zu deinem ersten Post. Wo du meintest du hast ein Array geändert.
    Eigentlich sieht das Array da aber korrekt aus. Die Strings sind korrekt und die Kommata sind auch alle da.

    Das heißt, entweder hast du das Array umbenannt, dass g_ am Anfang kommt mir nämlich komisch vor in g_csv_columns.

    Oder die Funktion ist wie gesagt schon kaputt. Nachgucken ob da wirklich ein Array ist kannst du nur in dem du es ausgibst (oder per if prüfst und dann "juhu" ausgibst).
    Das macht print_r halt. Weiß sonst auch keine Vorankommen. Wir müssen den Fehler schon irgendwie lokalisieren.
    Geändert von TheBodo (15.12.11 um 16:39 Uhr)
     

Ähnliche Themen

  1. Bugtracker Mantis hängt manchmal
    Von tomkruse im Forum PHP
    Antworten: 2
    Letzter Beitrag: 30.09.09, 07:58
  2. Bugtracker Mantis Mailversand
    Von HeinerPyt im Forum PHP
    Antworten: 1
    Letzter Beitrag: 24.01.08, 17:13
  3. Mantis einloggen
    Von HeinerPyt im Forum PHP
    Antworten: 0
    Letzter Beitrag: 23.01.08, 11:26