Beiträge von cottton

    Naja, noch zu dem Vergleich db (SQL) und txt:

    (ich gehe hier mal von normalo SQL db aus und einer Suchanfrage bei beiden Varianten)
    Es ist ja so, dass die SQL db (also der SQL Server) die Daten auch in Files lagert. Irgendwo muss das Zeug ja hin.
    Der offensichtliche Unterschied:

    SQL:
    SQL Server startet (für sich) und lädt die Daten. Die Files werden also nicht immer wieder neu geöffnet und Zeile für Zeile durchsucht.
    Ein laufendes Programm lädt also nicht selbst die Daten, sondern holt sie sich von dem ständig in Bereitschaft stehenden SQL Server.

    txt:
    Programm lädt sich selbst die Daten und bei Ende des Programms sind die Daten wieder weg.
    Beim nächsten Durchlauf muss also wieder alles geladen werden.

    Wenn man das also nachbilden/annähern möchte, dann müsste man zB ein Programm in der console laufen lassen.
    Das Programm würde zB beim Start die Daten aus der txt in ein Array laden und bei Bedarf/Anfrage relativ schnell zur Hand haben.
    Update ect ist dann schon schwieriger (Doppelzugriff ect).

    Also wenn es um viele Daten geht, und mMn auch um wichtige Daten, dann ist SQL the way to go.
    Selbst bei einem Stromausfall (echt mies!) hat man noch gute Chancen die Daten zu retten.
    (bei innodb (aktuelle mysql vers.) überigens sehr easy - letztens erst passiert :D)

    Gefällt mir, wie das Forum und die Themen immer mehr in Richtung pro gehen =)
    Dann könnte man evtl noch sowas wie "approved code" einbauen. Also code, der von anderen als ungefährlich und sinnvoll eingestuft wurde.

    Ich hab gerade mal probiert ein Funktionsaufruf ohne functions nachzubilden.
    Also anstatt:
    $ergebnis = function_name($para,$para2);
    ein goto basierter Aufbau, wobei die Vorteile einer function beibehalten werden sollten ("return ergenis in var x" und para mitgeben ect).
    Ergebnis: vergisses.
    Mal von der para-Prüfung usw abgesehen, ... es ist einfach total unübersichtlich.

    Ich kenne goto von C=64 Zeiten (BASIC) und hab es in den ersten Monaten in PHP auch genutzt.
    Du bekommst aber nur linearen(falsches Wort glaub ich) Code damit hin.
    Wiederverwendbarkeit geht flöten, oder ist umständlich, da Du immer hinterher sein musst, ob zB var $a nicht irgentwo vergessen wurde wieder auf null zu setzen.

    Ich kenn jetzt kein C, C++, oder JAVA. Aber ich kann mir nicht vorstellen, dass es dort keine functions gibt.
    Ich könnte gar nicht mehr ohne, und schon gar nicht ohne Klassen, die ja nun wirklich sehr vieles einfacher/wiederverwendbarer machen.

    Deswegen zB: http://stackoverflow.com/questions/2199…il-security-bug
    Falls Du keine Zeit hast zu lesen - hier kurz:

    im code hatte jemand ein goto fail; doppelt gemoppelt UND auch noch keine Klammern genutzt (was viele wohl für "cool" halten).

    Aus einem simplen

    Code
    if(bedingung)
    goto fail;
    # sonst das hier ...


    wurde dann ein fataler Fehler

    Code
    if(bedingung)
    goto fail;
    goto fail;
    # sonst das hier ...


    Heißt: wir kamen so oder so zu fail:

    btw: mal ganz ehrlich: code von apple und dann keine klammern -.- raff ich net, wie man so schreiben kann, wenns doch bei denen wirklich um was geht.

    Ich bin ja auch manchmal so .... dass ich rumnörgel ...
    aber das hier: http://phpsadness.com/
    ... is ja schlimm :D

    Klar gibts in Sprachen mal paar Bugs oder Ungereimtheiten. Aber wers kann, der findet ne Lösung und gut.
    ab hier konnte ich nicht mehr weiter lesen bei: http://phpsadness.com/sad/35

    Zitat


    The explode() function won't split with empty string


    Ja, warum denn auch? Einen Stock bei nirgendwo brechen macht eben keinen Sinn :D

    Ausschlaggebend war der Artikel hier: http://www.heise.de/newsticker/mel…ok-2151691.html (interessant)
    Da hatte jemand in den Kommentaren auf die Seite verlinkt.

    Jetzt hab ich mir Deinen Text doch mal durchgelesen - aber mach mal ab un zu paar Absätze :D
    (ich werd aber auch alt glaub ich =)

    Zum Thema:
    genau so hab ich auch angefangen: alles in txt speichern.
    Das Problem, das Du dann irgentwann haben wirst : es bremst Dich voll aus.

    Die Daten die du beschreibst, sind von der Zeilenmenge her in etwa das, was ich hatte. Und ich kann Dir sagen - bei rund 50000 Datensätzen ist Schluss.
    Dann wartest Du bis zu 2-3 sec auf einen Datensatz.
    Man kann zwar immer wieder was optimieren. Aber die Zeit lohnt es sich eher in alternative Systeme rein zu sehen.
    (aber es ist auf jeden Fall gut, wenn man sowas mal mit txt Dateien gemacht hat! =)

    Sql: "2 Wochen, dann haste das drin" - hat mir damals jemand gesagt.
    Und so war es auch. Klar - nur die Basics. Sql lernt man nie aus. Aber alleine der Geschwindigkeitsvorteil ist es wert.

    Hier hate ich zB mit Sql angefangen: http://www.php-kurs.com/mysql---datenbank-unter-php.htm

    @Basiii
    brauch mal hilfe:

    PHP
    if(!preg_match("/^[\w() ,`]+$/",$str)){
                throw new Exception('"'.$str.'" is not valid!');
            }
            return $str;


    Dort schicke ich keinen Userinput rein. sondern nur config Data (table names, oder zB VARCHAR(32)).
    Also wenn, dann würde sich der Admin selbst "hacken" :D
    Ich muss also Klammern, Leerzeichen, Komma und ` zulassen, damit das db Modell erstellt werden kann.

    Frage: fällt Dir ne Injection dazu ein?

    Ja, wenn du
    $gesund durch $lecker replacen willst, dann

    PHP
    $phrase = "Sie sollten taeglich Fruechte, Gemuese und Ballaststoffe essen.";
    $gesund = array("Fruechte", "Gemuese", "Ballaststoffe");
    $lecker = array("Pizza", "Bier", "Eiscreme");
    
    
    
    
    echo str_replace($gesund,$lecker,$phrase);

    heißt also:

    PHP
    str_replace(zu suchender str oder array, zu ersetzender string oder array, ersetzen in string soundso);


    Du kannst also arrays verwenden. Beachte aber die Reihenfolge.
    Der Zeiger wird in beiden Arrays immer eins weiter gesetzt. Keys spielen dabei keine Rolle, soweit ich weiß.
    (was da Ganze manchmal nicht mit Arrays anwendbar macht, da man oft Key und Wert in einem Array hat und dieses erst in 2 Arrays wandeln müsste)

    Natürlich teil ich das =)
    live: http://jsfiddle.net/ADE2t/
    code:

    toDo:
    - momentan wird via localStorage gespeichert :: (zusätzliche) sinnvolle alternativen gesucht

    edit: ich weiß nicht was mit meinem code in letzter Zeit los ist.
    Wenn ich hier poste, dann rückt der zu viel ein.
    Was da los?

    Ich glaube das wird nicht funktionieren. Obwohl ich auch grad nicht ganz dahinter steige.


    ich nutze explode. Für mich einfacher:

    PHP
    function getBetween($content,$start,$end)
    {
        $r = explode($start,$content);
        if(isset($r[1])){
            $r = explode($end,$r[1]);
            return $r[0];
        }
        return false;
    }


    hier ein simples (ausbaufähiges) Bsp

    Code
    Ein ersetzter Text.
    Ein ersetzter Text.
    Ein {TEST2}Test Text{ERNEUT2}.
    Ein ersetzter Text.
    Ein ersetzter Text.
    Ein ersetzter Text2.

    So .... Update!
    Heute von Google Adsense Anwort bekommen!
    Ich kopier mal hier den Text, den ich im Adsense Forum geschrieben hab, weil ich faul bin =)


    Werd dann mal demnächst n simples JS schreiben, das solches Totklicken unterbindet =)

    Das Prüfen mit === kann Probleme machen.
    Wenn zB Werte über _GET kommen
    Bsp:
    $_GET['nummer'] kommt als 2 rein.
    Dann ist es allerdings eine "String-Zwei". Das kann viele Beginner verwirren.

    Aber ich sehe gerade - Du hast ja schon den Vergleich mit "2" drin stehen =)

    Du hast bei OOP ne class Net_Finger stehen, erzeugst dann aber n Obj von Foo_Bar oO?
    class Net_Finger is existiert ja nicht. Oder was seh ich da jetzt nich ? :D

    Da hab ich ja schon fast alles richtig gemacht.
    Nur das mit den Leerzeichen bei den Klammern - das find ich sowas von nervig :D
    Es liest sich einfach nicht schön, wenn man mit den Augen immer wieder über leere Stellen fliegt.

    Btw:
    ich weiß nicht, ob es allgemein so empfohlen wird - ich finde es aber übersichtlich:
    Bei zu großen If-Bedingungen

    PHP
    if(
        isset($_POST['langerName'])and !empty($_POST['langerName'])
        and isset($_POST['nochEinLangerName'])and !empty($_POST['nochEinLangerName'])
        and isset($abc)
    ){
        /*...*/
    }


    Man könnte alles in eine Zeile schreiben, was allerdings Augenkrebs verursacht.

    Ich hab mich dazu entschieden alle zusammengehörigen Bedingungen in eine Zeile zu schreiben, falls möglich.
    Das if und die öffnende Klammer stehen für sich alleine - so sieht man sie auf Anhieb.
    Die schließende Klammer und die öffnende geschweifte Klammer stehen auch für sich in einer Zeile.
    Das Prinzip kann/sollte man mMn überall verwenden.

    Wichtig für Angehende Programmierer: es ist nicht cool keine Klammern zu nutzen!
    Bestes Bsp war ja in den letzten Wochen der "goto fail"-Bug
    siehe: http://stackoverflow.com/questions/2199…il-security-bug

    Bei den "Großen" durchzusehen ist gar nicht so einfach. Ich guck da ab und zu rein, aber manchmal sag ich mir dann "da kannste die Zeit auch nutzen. um dir selbst was einfallen zu lassen" :D

    Ich steh gerade vor der Frage:
    1. per PHP das/die input field erstellen und str_replace({REPEAT},...)
    oder
    2. per template alle placeholder (also auch {TITLE} ect) replacen.

    Ich denk aber 2. macht keinen Sinn oder?

    1. würde dann einfach so aussehen:

    HTML
    <form name="language" action="" method="POST" enctype="{ENCTYPE}">
        {REPEAT}
    </form>


    wobei {REPEAT} für jedes input field steht, das per PHP dyn erstellt wird.


    EDIT:
    Quark ... had vergessen was Du mit array meintest. lauras :D
    is ja ganz simpel:


    danke =)

    Das mit der form dürfte klar sein. Über die form bekommst du halt "was rein".
    Wenn ich das mal richtig verstanden hab dann
    - über dir form wird die Datei in ein temp Verzeichnis kopiert
    - via php prüfst Du, ob alles ok ist (validation) und verschiebst die Datei zum Zeilort