kann mir jemand sagen warum das nicht geht?

  1. IsNoGod

    IsNoGod Thread StarterMacUser Mitglied

    Mitglied seit:
    06.01.2006
    Beiträge:
    254
    Zustimmungen:
    5
    PHP:
    <?
    $datei "counter.txt";
    if (!
    file_exists($datei)) {
        
    $dz fopen($datei,"w")
        
    fwrite($dz,"1");
        
    fclose($dz);
    }
    $dz fopen(counter.txt,"r");
    $counter fread($dz,10);
    fclose($dz);
    $counter++;
    $dz fopen($datei,"w");
    fwrite($dz$counter);
    fclose($dz);
    ?>

    <body>
    <h2>Guten Tag,</h2>
    diese Seite wurde jetzt zum <?=$counter;?>. Mal aufgerufen.
    </body>
     
    IsNoGod, 05.06.2006
  2. SirSalomon

    SirSalomonMacUser Mitglied

    Mitglied seit:
    26.10.2003
    Beiträge:
    4.789
    Zustimmungen:
    116
    Da dürfte Dein Fehler sein. Du belegst die Variable mit der Funktion fopen.

    Wenn die Datei existiert sol sie geöffnet werden. Wenn sie nicht existiert, sollte die Datei angelegt werden, aber nicht mit $dz, oder?

    fwrite($datei,"1") sollte die Lösung sein, wobei natürlich die Datei dann auch mit fclose($datei) geschlossen werden sollte ;)
     
    SirSalomon, 05.06.2006
  3. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    <?= ist m.W. veraltet als Tag, außerdem macht es schon Sinn hinzuschreiben, was mit der Variablen passieren soll:

    print "$counter";
     
    wegus, 05.06.2006
  4. b.legt210

    b.legt210MacUser Mitglied

    Mitglied seit:
    01.03.2006
    Beiträge:
    81
    Zustimmungen:
    4
    Probier's damit:
    PHP:
    <?php
    $datei_name 
    "./counter.txt"

    if (!
    file_exists($datei_name))

        
    $datei fopen($datei_name,"w");
        
    fwrite($datei,"0");
        
    fclose($datei);


    $datei fopen($datei_name,"r"); 
    $counter fread($datei,filesize($datei_name));
    fclose($datei);

    $counter++; 
    $datei fopen($datei_name,"w"); 
    fwrite($datei$counter);
    fclose($datei); 
    ?> 

    <body> 
        <h2>Guten Tag,</h2> 
        diese Seite wurde jetzt zum <?php echo $counter;?>. Mal aufgerufen. 
    </body> 
    Neben den bereits angemerkten short-Tags, war hier der Dateiname beim leseneden Öffnen falsch angegeben. Btw. sind aussagekräftige Namen echt Gold wert, also Dinge wie "$dz" einfach sinnlos.

    Stephan
     
    b.legt210, 06.06.2006
  5. Galanos

    GalanosMacUser Mitglied

    Mitglied seit:
    19.12.2005
    Beiträge:
    624
    Zustimmungen:
    23
    Wie waer's mit:

    PHP:
    <?php
        
    if(filexists("./counter.php")) {
            include 
    './counter.php';
            
    $counter++;
            
    $handle fopen("./counter.php","w"); 
            
    fwrite($handle"<?php \$counter = " $counter "; ?>"); 
            
    fclose($handle); 
        } else {
            
    $counter 1;
            
    $handle fopen("./counter.php","w"); 
            
    fwrite($handle"<?php \$counter = 1; ?>"); 
            
    fclose($handle);
        }
    ?>
    <body>  
        <h2>Guten Tag,</h2>  
        Diese Seite wurde jetzt zum <?php echo $counter?>. Mal aufgerufen.  
    </body>
    Der erste Besucher kommt:
    - else-Fall tritt ein, weil Datei nicht existiert
    - Counter wird auf 1 gesetzt
    - Wert 1 wird in Datei geschrieben
    - es wird korrekt ausgegeben, dass der Besucher der erste ist

    Der zweite Besucher kommt
    - if-Fall tritt ein, Datei existiert
    - Datei wird inkludiert, Variable "$counter" hat Wert 1
    - Counter wird um 1 erhoeht, hat Wert 2
    - Counter wird in Datei geschrieben
    - es wird korrekt ausgegeben, dass der Besucher der zweite ist

    usw.

    Der Vorteil ist, dass in "unendlich minus einem" Fall die Datei bereits existiert und der Parser die else-Befehle ignorieren kann, da if() TRUE zurueckgibt. Spart Rechenzeit. Hach, scripten macht Spass :D
     
    Galanos, 06.06.2006
  6. b.legt210

    b.legt210MacUser Mitglied

    Mitglied seit:
    01.03.2006
    Beiträge:
    81
    Zustimmungen:
    4
    Hi Galano,

    erstmal nen Gruß unter Schwaben, von Reutlingen nach Stuttgart.

    zu deinem Code:
    Es ist immer wünschenswert, als Antwort auch funktionierenden Code zu finden. In deinem Fall ist das leider nicht so. Warum:
    1. die funktion filexists "exists nicht". Das Ding heißt "file_exists()".
    2. finde ich es nicht so clever mit include *.php zu arbeiten. Warum? ganz einfach. Meine Test-Datei hatte den Namen counter.php. Die includet jetzt die counter.php, welche dann die counter.php includet, welche dann die counter.php includet, welche dann..

    Ansonsten gilt natürlich: viele Wege führen nach Rom :)

    Stephan

    PS: und wenn schon schnell, dann auch klein:

    <?php
    $counter = 0;
    if(file_exists("./counter_var.php")) include './counter_var.php';
    $counter++;
    $handle = fopen("./counter_var.php","w");
    fwrite($handle, "<?php \$counter = " . $counter . "; ?>");
    fclose($handle);
    ?>
    <body>
    <h2>Guten Tag,</h2>
    Diese Seite wurde jetzt zum <?php echo $counter; ?>. Mal aufgerufen.
    </body>
     
    b.legt210, 06.06.2006
  7. Galanos

    GalanosMacUser Mitglied

    Mitglied seit:
    19.12.2005
    Beiträge:
    624
    Zustimmungen:
    23
    Gruss zurueck :) Wobei ich der Wolf im Schafspelz bin – ein "Neig'schmeckter"! *diabolisch lach* ;)

    Erstens war wohl ein Tippfehler, das kann – ganz ehrlich – passieren, ist bloss aergerlich. Auf meinem Geschaeftsrechner hier darf ich kein PHP installieren, also habe ich auch keine Moeglichkeiten, das Script kurz auszuprobieren …
    Und zweitens wird die Datei, in der der Counter-Code steckt, wahrscheinlich eher "index.php" heissen. Nicht zwingend "counter.php", aber das bleibt jedem selbst ueberlassen.
    Deine Code-Kur ist gelungen, mir ging es jedoch mehr darum, eine Alternative zum bisher Durchgekauten zu bieten, moeglichst klar und verstaendlich strukturiert. Da war es meiner Meinung nach hilfreich, if/else vollstaendig auszufuehren. Und – zugegeben – ich habe noch nicht so viel Uebung mit dem Abwerfen von Script-Ballast und nur begrenzt Zeit in der Mittagspause ;)

    Aber vielen Dank fuer die konstruktive Kritik. Gruss, Galanos
     
    Galanos, 06.06.2006
Die Seite wird geladen...