kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: ich kann FireFox nicht mehr installieren (Win7 64)

    geschrieben von spielzeug

    Hallo
    ... habs gelöst ... erledigt

    Download war OK (das Original von der Mozilla-Seite)

    Problem war bei Installation der Benutzer ...
    Mein User ist zwar "Administrator" aber einfach doppelklick auf .exe ging Setup nicht

    aber ... rechte Maustatste .. als Administrator ausführen .... dann Installation problemlos

    ... es gibt eine 64bit Version ??? auf der Mozilla-Seite finde ich dazu aber nichts

    EDIT: in der Mozilla-Hilfe steht irgendo sogar:
    There is no official 64 bit version of Firefox for Windows.


    aber beim Googeln findet man diverse Downloads als (angebliche) 64 bit Version
    aber wenn es doch keine "offizielle" 64-Bit Version gibt lass ich leiber die Finger davon
    ... mit FF 13.x als 32bit auf Win7 64 gehts ja ohne Probleme

    aber das 32/64 bit Thema ist hier off-topic ....es ging ja um Setup der offiziellen Vers.
    und das habe ich ja jetzt selber hinbekommen, nochmal für Alle die evtl. gleiches Problem haben
    Lösung: ... rechte Maustatste .. als Administrator ausführen ... ganz einfach :)

  • in: CSV als Object-Daten ?

    geschrieben von spielzeug

    hackyourlife schrieb:
    Ansonsten gäbe es da was ganz einfaches:
    $row = deine row als Array
    $xdata[$i] = (object) $row;


    ja, Danke,
    das mit (object) hatte ich auch ausprobiert, allerdings an der falschen Stelle
    und dadurch dann jedes Object wieder in einem Object [scalar) bekommen

    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	foreach($headrow as $hkey=>$hval) { 
    		$row[$hval] = (object)$line[$hkey];
    	}
    	$xdata[$i] = $row; 
    	$i++; 
    }


    Ergebnis war:
    Array
    (
        [0] => Array
            (
                [ID] => stdClass Object
                    (
                        [scalar] => 01
                    )
    
                [Name] => stdClass Object
                    (
                        [scalar] => Hans
                    )
    
                [Info] => stdClass Object
                    (
                        [scalar] => rundes Gesicht
                    )
    
                [Status] => stdClass Object
                    (
                        [scalar] => a
                    )
    
            )
    
        [1] => Array
            (
                [ID] => stdClass Object
                    (
                        [scalar] => 02
                    )
    
                [Name] => stdClass Object
                    (
                        [scalar] => Jenny
                    )
    
                [Info] => stdClass Object
                    (
                        [scalar] => dunkle Augen
                    )
    
                [Status] => stdClass Object
                    (
                        [scalar] => b
                    )
    
            )
    
        [2] => Array
            ... usw ...
    )


    weil ich dachte, es muss ja jedes einzele Elemet zu Object werden ...

    Wenn ich es so mache, so wie von Dir gezeigt,
    dass ich (object) erst bei Zusammenbau des Arrays anwende, dann klappt es :)

    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	$row = array(); 
    	foreach($headrow as $hkey=>$hval) { 
    		$row[$hval] = $line[$hkey];
    	}
    	$xdata[$i] = (object)$row; 
    	$i++; 
    }


    also das wäre dann auch eine Möglichkeit :)

    hackyourlife schrieb:
    ... dann geht es auch damit
    Du kannst nicht einfach auf eine Variable des "Nichts" zugreifen! PHP muss zuerst mal wissen, dass das ein Objekt sein soll, sonst wirft es Fehelrmeldungen die du aber vermutlich deaktiviert hast.[/quote]

    ja komisch,
    wenn ich Daten als Array ablege, dann klappt es, Array wird erkannt, auch ohne $row = array();
    $row[$hval] = $line[$hkey]; wird zu Array in 2te Ebene durch $xdata[$i] = $row; ... ohne Probleme

    aber
    wenn ich aus dem Array ein Object machen will, ohne $row = array();

    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	foreach($headrow as $hkey=>$hval) { 
    		$row[$hval] = $line[$hkey];
    	}
    	$zdata[$i] = (object)$row; 
    	$i++; 
    }


    dann kommt Fehlermeldung
    Fatal error: Cannot use object of type stdClass as array


    aber mit der Festlegung vorher das $row ein leeres Array ist,gehts dann
    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	$row = array(); 
    	foreach($headrow as $hkey=>$hval) { 
    		$row[$hval] = $line[$hkey];
    	}
    	$zdata[$i] = (object)$row; 
    	$i++; 
    }


    mit der Zeile $row = array(); klappt es wunderbar ?? aber warum wird $row sonst auch als Array erkannt wenn ich es als 2D-Array ablege, aber für Ablegen als (object) muss ich Datentyp vorher definieren ?


    naja, ich dachte PHP erkennt den Datentyp (String oder Array) von selbst
    die Variable $xdata[$] wird ja als Array erkannt, auch ohne vorher zu machen $xdata = array();
    einfach durch $xdata[$i] = 'blabla';

    daher bin ich davon ausgegangen, wenn ich $row->$hval = 'blabla'; mache
    dass dann $row auch automatisch als Object erkannt wird ... falsch gedacht :(

    aber ohne $row = new stdClass(); bekam ich auch keine Fehlermeldung,
    es wurde einfach immer nur Daten aus der letzten Zeile ($line) verwendet,
    also als Object hat so ja geklappt,
    aber der Inhalt war je Hauptarray-Element immer der gleiche (letzte Zeile) ?!

    und DAS verstehe ich immernoch nicht, warum im Ergebnis-Array
    jedes Element überschrieben wurde von der letzten Zeile ....
    denn die letzte Zeile kommt in der while-Schleife ja nur einmal dran
    und bei Debug-Ausgabe innerhalb der foreach() mit print "<br />".$line[$hkey]."\n";
    kamen auch die "richtigen" Werte (je Zeile)

    Wie kann der letzte Durchlauf von while() alle vorherigen Elemente überschreiben ?
    die waren doch schon, und Ablegen der letzten (10.) Zeile ist ja in $xdata[9]
    die Elemente 0 bis 8 werden da doch garnicht mehr "angefasst" .... daher ?oOo?

    bischen verwirrend
    ... manchmal erkennt PHP selbst ob ein Array vorliegt,
    aber manchmal nicht ... z.B. bei (object) davor siehe Fehlermeldung

  • in: ich kann FireFox nicht mehr installieren (Win7 64)

    geschrieben von spielzeug

    Hallo

    ich wollte mal aufräumen und habe meinen FF deinstalliert

    dann mir die neueste Version von FF heruntergeladen von der mozilla-Webseite

    Firefox Setup 13.0.1.exe

    aber wenn ich (nach PC Neustart) den FF neu installieren will,
    fragt mich das Programm noch für welchen Benutzer,
    den aktuellen wähle ich aus (der ist Adminsitrator)

    aber dann passiert garnix weiter .... ?!?

    habe gegoogelt, und viele schreiben, man soll die alten Rest-Daten entfernen
    also habe ich mit CCleaner alle alten Daten von FF gelöscht
    aber auch dann ... kann FireFox nicht installieren (Win7 Home Premium 64)

    auch wenn ich´eine ältere FF Version versuche, nach Frage für welchen Benutzer passiert einfach nix

    HELP !!! ....

    PS
    Nein, ich will nicht auf anderen Browser wie Opera oder Chrome umsteigen
    ... muss doch gehen, FF unter Win7 neu installieren, ... bis vor De-Installation lief er ja auchnoch ?!

    ... und ja, ich habe ihn sauber über Systemsteuerung / Programme deinstalliert und nicht einfach gelöscht
    habe ja sogar auch mit CCleaner die Reste bereinigt, und auch PC-Neu-Start gemacht ...

  • in: CSV als Object-Daten ?

    geschrieben von spielzeug

    Hallo,
    Danke, aber get_object_vars ist die falsche Richtung,
    es geht ja nicht darum, Werte aus Object auslesen, sondern Werte als Object zu speichern

    ich will ein Haupt-Array (erste Ebene) in dem dann die Objekte (zweite Ebene) sind

    habe noch bischen rum-probiert, und etwas dabei herausgefunden ....

    wenn ich das gewünschte Object vorher in $row ablege
    und erst dann zum Haupt-Array anfüge, dann geht es nicht, es kommt immer nur letzte Zeile an

    $xdata = array(); 
    $ReadHandle = fopen($source_file, 'r');
    $headrow = fgetcsv($ReadHandle, $length, $delimiter, $enclosure); 
    
    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    
    	foreach($headrow as $hkey=>$hval) { 
    		$row->$hval = $line[$hkey];
    	}
    	
    	$xdata[$i] = $row; 
    	$i++; 
    }
    
    fclose($ReadHandle);


    so hat $xdata zwar 10 Elemente aber alle enthalten nur Daten der letzten Zeile !!


    aber ... wenn ich das Object direkt in das Array einfüge (ohne vorher Ablage in $row) dann gehts ?!
    $ydata = array(); 
    $ReadHandle = fopen($source_file, 'r');
    $headrow = fgetcsv($ReadHandle, $length, $delimiter, $enclosure); 
    
    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	
    	foreach($headrow as $hkey=>$hval) { 
    		$ydata[$i]->$hval = $line[$hkey];
    	}
    	
    	$i++; 
    }
    
    fclose($ReadHandle);


    so hat $ydata die 10 Elemente mit jeweils Daten passend zur Zeile !! ... also OK
    ... verstehe ich nicht :oO


    EDIT:
    und auch der erste Versucht (mit Ablegen in $row) geht dann,
    wenn ich $row vor dem foreach() als neues StdClass Object definiere

    also zwischen der while() Zeile und der foreach() Zeile
    noch die folgende Zeile einfügen:
    $row = new stdClass();

    ... dann geht es auch damit

    $xdata = array(); 
    $ReadHandle = fopen($source_file, 'r');
    $headrow = fgetcsv($ReadHandle, $length, $delimiter, $enclosure); 
    
    $i=0; 
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	$row = new stdClass();  
    	foreach($headrow as $hkey=>$hval) { 
    		$row->$hval = $line[$hkey];
    	}
    	
    	$xdata[$i] = $row; 
    	$i++; 
    }
    
    fclose($ReadHandle);



    warum geht es, wenn ich das Object direkt in das Haupt-Array ablege
    aber nicht, wenn ich das Objekt in einer Variable ($row) zwischenspeicher ???
    ist doch Quasi genau der gleiche Vorgang .... 1. Ebene = Array, 2. Ebene = Objekt

    hat das einen Sinn? einen Logik? .... kann mir das jemand erklären (zum Verständnis)
    warum es bei Ablegen direkt in Array geht, aber bei Ablegen in $row nicht geht ?!?
    Danke!

  • in: CSV als Object-Daten ?

    geschrieben von spielzeug

    Hallo
    ich habe eine CSV (hier Beispiel mit mit 10 Zeilen und 4 Spalten)

    beispiel.csv
    "ID";"Name";"Info";"Status"
    "01";"Hans";"rundes Gesicht";"a"
    "02";"Jenny";"dunkle Augen";"b"
    "03";"Peter";"lange Haare";"c"
    "04";"Horst";"kaut Fingernägel";"a"
    "05";"Doris";"hat Katzen gern";"a"
    "06";"Benny";"sein Hase hüpft";"c"
    "07";"Olav";"mag keine Muscheln";"b"
    "08";"Anja";"trinkt gerne Milch";"a"
    "09";"Otto";"macht viele Witze";"c"
    "10";"Bernd";"isst gerne Brot";"a"



    wenn ich eine CSV-Datei auslese, und die Spalten als Array ablege, dann klappt es
    ... als 2-dimensionales Array

    <?php 
    // ------------------------------------------------------------------------- 
    
    function csv_to_array($csvurl,$length=0,$delimiter=";",$enclosure="\"",$csvhead=true) {
    
    $csvdata = array(); 
    $ReadHandle = fopen($csvurl, 'r');
    
    if ($csvhead === true) { 
    	$headrow = fgetcsv($ReadHandle, $length, $delimiter, $enclosure); 
    } 
    
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	
    	if ($csvhead === true) { 
    		foreach ($headrow as $key=>$heading) {
    		$row[$heading] = $line[$key];   // ---- ARRAY ---- 
    		}
    		$csvdata[] = $row;
    	} 
    	else { 
    		$csvdata[] = $line;	
    	} 
    		
    }
    fclose($ReadHandle);
    
    return $csvdata; 
    
    }
    
    // ---------------------------------------------- 
    
    
    $resdata1 = csv_to_array('beispiel.csv'); 
    
    echo "<p>DEBUG Ausgabe 1 (array)</p>\n";
    
    print "<pre style=\"text-align:left; margin:10px; padding:6px; background:#EFEFEF;\">\n"; 
    print_r($resdata1);
    print "</pre>\n"; 
    
    // ------------------------------------------------------------------------- 
    ?>


    Spalten als Array-Daten ... funktioniert 1A

    DEBUG Ausgabe 1 (array)
    
    Array
    (
        [0] => Array
            (
                [ID] => 01
                [Name] => Hans
                [Info] => rundes Gesicht
                [Status] => a
            )
    
        [1] => Array
            (
                [ID] => 02
                [Name] => Jenny
                [Info] => dunkle Augen
                [Status] => b
            )
    ...usw...
    )



    aber wenn ich versuche die Spalten-Daten als Object abzulegen,
    dann kommt im Ergebnis für jedes Hauptelement immer die Daten der letzten Zeile ?!

    ... als Array of Objects

    <?php 
    // ------------------------------------------------------------------------- 
    
    function csv_to_object($csvurl,$length=0,$delimiter=";",$enclosure="\"",$csvhead=true) {
    
    $csvdata = array(); 
    $ReadHandle = fopen($csvurl, 'r');
    
    if ($csvhead === true) { 
    	$headrow = fgetcsv($ReadHandle, $length, $delimiter, $enclosure); 
    } 
    
    while($line = fgetcsv($ReadHandle, $length, $delimiter, $enclosure)) { 
    	
    	if ($csvhead === true) { 
    		foreach ($headrow as $key=>$heading) {
    		 $row->$heading = $line[$key];   // ---- OBJECT ---- 
    		}
    		$csvdata[] = $row;
    	} 
    	else { 
    		$csvdata[] = $line;	
    	} 
    		
    }
    fclose($ReadHandle);
    
    return $csvdata; 
    
    }
    
    // ---------------------------------------------- 
    
    
    $resdata2 = csv_to_object('beispiel.csv'); 
    
    echo "<p>DEBUG Ausgabe 2 (object)</p>\n";
    
    print "<pre style=\"text-align:left; margin:10px; padding:6px; background:#EFEFEF;\">\n"; 
    print_r($resdata2);
    print "</pre>\n"; 
    
    
    // ------------------------------------------------------------------------- 
    ?>



    Spalten als Object-Daten ... funktioniert nicht ... 10 mal die Daten der letzen Zeile

    DEBUG Ausgabe 2 (object)
    
    Array
    (
        [0] => stdClass Object
            (
                [ID] => 10
                [Name] => Bernd
                [Info] => isst gerne Brot
                [Status] => a
            )
    
        [1] => stdClass Object
            (
                [ID] => 10
                [Name] => Bernd
                [Info] => isst gerne Brot
                [Status] => a
            )
    
        [2] => stdClass Object
            (
                [ID] => 10
                [Name] => Bernd
                [Info] => isst gerne Brot
                [Status] => a
            )
    ...usw...
    )



    ................... was ist da falsch ??? ... immer nur Zeile 10 ?!?

    der einzige Unterschied ist ja

    $row[$heading] = $line[$key];   // ---- ARRAY ----

    und
    $row->$heading = $line[$key];   // ---- OBJECT ----


    es sind jedesmal 10 Elemente, bei Array klappt es wunderbar
    aber warum wird bei Daten als Object immer nur die letzte Zeile genommen ???

    --> Wie kann ich per fgetcsv() die Spalten-Daten als Objekt ablegen ?!

    PS: für XML gibt es ja simplexml_load_file()
    gibt es sowas auch für CSV, also simplecsv_load_file()
    ... bzw. ... sowas will ich hier ja grad selber machen als csv_to_object()
    das klappt aber so nicht ... HELP ... wie geht's, .. was ist da falsch ?
    Danke!


  • in: alte Dateien aus Ordner löschen

    geschrieben von spielzeug

    es ist "nur" für Cache-Daten löschen, die "veraltet" sind.

    wegen Aufteilung in mehrere Funktionen, meist Du es etwa so
    dass ich für jede Datei die Lösch-Funktion einzeln aufrufen soll,
    oder doch gleich ein Array übergeben, und die foreach-Schleife dann innerhalb der Lösch-Funktion ?

    Und eine Rückgabe, welche Datei jetzt genau gelöscht wurde, brauche ich garnicht ,
    auch weil je Dateiname ein nichts-sagender MD5-Hash mit Endung .xml ist
    wichtig ist mir halt, dass sich im Cache-Odner kein Datenmüll ansammelt,

    Warum hat time() innerhalb einer Funktion nichts zu suchen?
    ist es nicht egal ob ich Timestamp als Parameter übergebe oder in der Funktion auf den Wert komme
    ... das Resultat ist doch das gleiche ?! .. und ich möchte es eben gerne "kompakt" in einer Funktion

    Interessant wäre aber, das mit Fehler abfangen,
    also ob Löschung der Datei erfolgreich war.

    hier nochmal alles in einer Funktion:
    function delete_old_files ($path='data/', $days=3, $tmsp=time();) {
    $files = glob($path.'*');
    $i=0;
    $res = array(); 
    foreach ($files as $file) {
        if (!is_dir($file) && $file != '.' && $file != '..')){
          $time_limit = $tmsp-(36000*24*$days);
            if(filemtime($path.$file) >= $time_limit){ 
                $res[$i]['name'] = $file; 
                if (@unlink($path.$file)) { $res[$i]['status'] = 'ok'; } else { $res[$i]['status'] = 'error'; } 
                $i++;
            }
        }
    }
    return $res;
    }


    ob ich jetzt die Zeile mit dem unlink() in eine Extra-Funktion packe, sehe ich keinen Vorteil,
    im Gegenteil, dann ist es nicht mehr so schön "Kompakt" ... all_in_one
    so mit nur einer Funktion rufe ich 1x am Tag delete_old_files() auf und gut is ?!

    ... apropos 1x am Tag aufrufen ... gibt es hier bei Lima-City auch Cron-Jobs ?

  • in: alte Dateien aus Ordner löschen

    geschrieben von spielzeug

    Hallo

    wie kann ich es am besten machen, dass alle Dateien in einem Ordner (data/)
    die älter als 3 Tage sind, automatisch gelöscht werden

    was ist besser mit readdir() oder mit glob() oder ... was verbraucht weniger Ressourcen ?

    a) Lösch-Funktion mit opendir() und readdir()
    function delete_old_files1 ($path='data/', $days=3) { 
    $dir = opendir( $path ); 
    $i=0;
    while($file = readdir($dir)){ 
        if (!is_dir($file) && $file != '.' && $file != '..')){ 
          $time_limit = time()-(36000*24*$days); 
            if(filemtime($path.$file) >= $time_limit){ 
                unlink($path.$file); 
    			$i++; 
            } 
        } 
    } 
    return $i; 
    }


    b) Lösch-Funktion mit glob()
    function delete_old_files2 ($path='data/', $days=3) { 
    $files = glob($path.'*');
    $i=0;
    foreach ($files as $file) {
        if (!is_dir($file) && $file != '.' && $file != '..')){ 
          $time_limit = time()-(36000*24*$days); 
            if(filemtime($path.$file) >= $time_limit){ 
                unlink($path.$file); 
    			$i++; 
            } 
        } 
    }
    return $i; 
    }


    welche Variante ist die beste, oder gehts noch ganz anders besser ?
    (wobei besser = Ressourchen schonender / schneller)

    ... wie würdet Ihr so eine "Säuberungs-Funktion" machen?
    (alle Dateien in Ordner x löschen, die älter als n Tage sind)

    Danke

Login zum Webhosting ohne Werbung!