kann mir jemand sagen warum das nicht geht?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von IsNoGod, 05.06.2006.

  1. IsNoGod

    IsNoGod Thread Starter MacUser Mitglied

    Beiträge:
    254
    Zustimmungen:
    5
    Mitglied seit:
    06.01.2006
    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>
     
    Zuletzt von einem Moderator bearbeitet: 05.06.2006
  2. SirSalomon

    SirSalomon MacUser Mitglied

    Beiträge:
    4.787
    Zustimmungen:
    116
    Mitglied seit:
    26.10.2003
    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 ;)
     
  3. wegus

    wegus MacUser Mitglied

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

    print "$counter";
     
  4. b.legt210

    b.legt210 MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    4
    Mitglied seit:
    01.03.2006
    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
     
  5. Galanos

    Galanos MacUser Mitglied

    Beiträge:
    624
    Zustimmungen:
    23
    Mitglied seit:
    19.12.2005
    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
     
  6. b.legt210

    b.legt210 MacUser Mitglied

    Beiträge:
    81
    Zustimmungen:
    4
    Mitglied seit:
    01.03.2006
    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>
     
    Zuletzt bearbeitet: 06.06.2006
  7. Galanos

    Galanos MacUser Mitglied

    Beiträge:
    624
    Zustimmungen:
    23
    Mitglied seit:
    19.12.2005
    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
     
Die Seite wird geladen...

Diese Seite empfehlen