PHP Ergebnis auf HTML-Seite ausgeben

willytyp

Mitglied
Code:
#besucher
{
/*position: absolute;         /*Positionsart*/
font-weight: bolder;        /*Schriftgewichtung z.B. Fett*/
text-align: center;         /*Horizontale Ausrichtung*/
top: 600px;                 /*Abstand vom oberen Rand*/
left: 85px;                 /*Abstand vom linken Rand*/
width:55px;                 /*Breite*/
padding: 10px;              /*Innenabstand o r u l*/
border: 1px solid #ffffff;  /*Rahmenformatierung*/
color:#ff0033;;             /*Schriftfarbe*/
background-color: #ffff99;  /*Hintergrundfarbe*/
}
Hallo,
ich habe einen Counter geschrieben, das war ja auch nicht schwer.
Wenn ich den starte, gibt er mir im Browser auch die Besucherzahl an.
Ich möchte jedoch die Zahl auf meiner Startseite ausgeben.
Dazu habe ich per CSS einen Rechteck eingerichtet und hätte die Besucherzahl
genau darin.

Code:
<?PHP
    if(file_exists("counter.txt"))
    {
        /* Kann Datei geoeffnet werden? */
        $fp = @fopen("counter.txt","r");
        if($fp)
        {
            $zahl = fgets($fp,10);
            fclose($fp);
        }
        else
            $zahl = 0;
    }
    else
    $zahl = 0;
   
    /* Zahl erhoehen */
    $zahl = $zahl+1;
    echo  "der Zugriffszaehler steht auf $zahl";
   
    /* neue Zahl schreiben */
    $fp = @fopen("counter.txt", "w");
   
    if(!$fp)
        exit("Der Zaehler kann nicht geschrieben werden");
       
    fputs($fp,$zahl);
    fclose($fp);
       
?>

Bishier ist alles klar.

Mit diesem CSS Code habe ich das Rechteck erstellt.
Code:
#besucher
{
/*position: absolute;         /*Positionsart*/
font-weight: bolder;        /*Schriftgewichtung z.B. Fett*/
text-align: center;         /*Horizontale Ausrichtung*/
top: 600px;                 /*Abstand vom oberen Rand*/
left: 85px;                 /*Abstand vom linken Rand*/
width:55px;                 /*Breite*/
padding: 10px;              /*Innenabstand o r u l*/
border: 1px solid #ffffff;  /*Rahmenformatierung*/
color:#ff0033;;             /*Schriftfarbe*/
background-color: #ffff99;  /*Hintergrundfarbe*/
}

Ich hoffe meine Angaben sind vollständi und irgend jemand kann mir sagen wie
ich die Besucherzahl auf die Hauptseite bekomme.

Meinen Dank im voraus.

LG
willytyp
 
Hi


ich habe einen Counter geschrieben, das war ja auch nicht schwer.
sorry das so direkt zu sagen, aber der ist falsch, weil er in eine Datei schreiben will. Wenn mal zwei Leute gleichzeitig die Seite aufrufen gibts ein Problem. Bei sehr wenig Benutzern ist die Wahrscheinlichkeit dafür natürlich nicht so hoch wie bei stark besuchten Seiten, aber ein Programm sollte nicht nur "wahrscheinlich" funktionieren. Das mit einer Datei ohne potentielle Probleme hinzukriegen wird etwas kompliziert, einfacher wäre das Verwenden einer Datenbank.

Als Übung zum PHP-Lernen ists sicher nicht schlecht, nur sollte man das im Kopf behalten.
(dass es so in der Praxis eben nicht eingesetzt werden sollte. Und wenn man noch weiter gehen will gibts das Problem, dass man vllt. einen Benutzer, der die Seite mehrmals aufruft, nur einmal zählen will ... egal, das geht zu weit)

Zum eigentlichen Problem:
Wenn die Hauptseite selber zumindest teilweise aus PHP besteht (oder auch nur aus HTML, solang PHP drin verarbeitet würde, üblicherweise bei Dateiendung ".php") dann reicht es, die Counter-Datei mit include einzubinden (oder einfach den Inhalt in die Hauptdatei kopieren).
PHP:
<?php include('counter.php'); ?>
Alternativ kann man auch einen iframe in HTML auf der Hauptseite machen, ein Bereich innerhalb der Seite wo eine andere Seite/Adresse angezeigt wird, und den eben auf die Counterdateiadresse zeigen lassen.
 
Hi sheel,
zunächst vielen Dank für die Hinweise.
Diese Besucherliste ist für unseren Kleingarten. Da laufen in der Woche evtl. 2 Eintragungen auf.
Daher das sequentielle Speichern. Sicher, wenn ich etwas besser mit dem Umgang von PHP
bin, werde ich solche Sachen mit MySQL machen. Da ich aus der VBA Programmierung komme und mir ACCESS
nicht unbekannt ist, werde ich da kein Problem bekommen(hoffe ich jedenfalls). Nur die Syntax ist eben eine
andere.

Noch einmal zu meinem Problem:
Die PHP-Routine ist in die HTML-Hauptseite eingebunden.
Den Sololauf habe ich nur als Test benötigt.
Ich sehe an deinem Vorschlag keine Möglichkeit den Wert $zahl zu plazieren.
Brauche ich keine Koordinaten dafür?
Ich habe ja unten links ein kleines Rechteck in das die Zahl hinein soll.

Ich hoffe ich nerve nicht zu sehr.

LG
willytyp
 
Man muss sich daran erinnern, dass das PHP-Script die später angezeigte HTML-Seite ja "macht", also die echo´s sind später als Reintext im HTML drin. Ein <div> mit entsprechendem CSS hast du schon; wenn da immer der Counterwert 123 drin stehen sollte würdest du einfach 123 ins Div reinschreiben. Und jetzt muss (zumindest) das echo von PHP genau in dieses Div
HTML:
<div id="besucher"> <?php echo $zahl; /*und so weiter*/ ?> </div>
Koordinaten und so sind zurzeit der PHP-Ausführung unwichtig,
es geht nur darum, die "Textdatei" mit dem HTML drin richtig vorzubereiten.

Wenn du irgendeine Möglichkeit hast, dass die Zahl nicht im div steht und trotzdem wegen Koordinatenangaben dort angezeigt wird, kann man das natürlich schon machen. Aber das ist eher ein HTML-Problem; für PHP ist es wirklich nur interessant das ge-echo-te Zeug an der vorgegebenen Stelle ins HTML einzufügen.

(Keine Angst, du nervst nicht. Das Forum ist ja genau für sowas da :) )
 
Hallo sheel,
zunächst einmal vielen Dank für deine Hilfe.
Ich bekomme hier langsam einen Koller:mad:

Gebe ich die Zeile nach deinem Vorschlag ein, wird der Wert von $zahl nicht angezeigt
<div id="besucher"> <?php echo $zahl; /*und so weiter*/ ?> </div>

Die nachfolgende Zeile, die ja keinen Sinn macht, funktioniert.
<div id="besucher"> 123 </div>

Warum der Wert von $zahl nicht ausgegeben wird, ist mir so etwas von unklar.

Langsam glaube ich, dass ich eine andere Version von HTML als Version 5 habe.
Dein Vorschlag war ja in HTML 5 geschrieben.

Also, ich bin echt am verzweifeln, weil ich nicht mehr weiß wo ich noch suchen soll, bzw was
ich noch alles ausprobieren soll.

Hast du noch eine Idee?

LG
willytyp
 
Das mit dem HTML5 ist egal, so ein einfaches div funktioniert auch mit älteren Versionen.

Wird der PHP-Teil ausgeführt? (zB., falls der Dateiname nicht mit ".php" endet, versuch mal umzubenennen)
 
So, selbst wenn ich geteert und gefedert werde, hier der komplette Quellcode der Seite home.html

Code:
<!DOCTYPE HTML>
<html>
<head>
<title> KGV-Diekmoor401 </title>

    <link href="home.css" type="text/css" rel="stylesheet">
  
</head>

<body>
<img src="images/Kopfzeile.jpeg" width="987" height="122" style="border: 0px;" />
<img id="Wappen" src="images/Wappen.jpg" width="150" height="264" style="border: 0px;" />
   
  <div id="Menu">
    <div class="oben">    
      Home      
      <a class="untenX" href="vorstand.html">Vorstand</a>
      <a class="unten"href="kontakt.html">Kontakte</a>    
      <a class="unten" href="#">Anfahrt</a>     
      <a class="unten" href="#">Gästeliste</a>     
      <a class="unten" href="#">Chronik</a>     
    </div>
    <div class="oben">
      Aktuelles
      <a class="unten" href="#">Termine 2015</a>
      <a class="unten" href="#">freie Gärten</a>
    </div>
    <div class="oben">
      Interessantes
      <a class="unten" href="#">Tod einer Tanne</a>
      <a class="unten" href="#">Som-Fest 2014 1</a>
      <a class="unten" href="#">Som-Fest 2014 2</a>
      <a class="unten" href="#">Som-Fest 2014 3</a>  
    </div>   
    <div class="oben">
      Vereinshaus      
    </div>
    <div class="oben">
      Intern (Passw.)
      <a class="unten" href="#">Vereinsarbeit</a>
      <a class="unten" href="#">Rundschreiben 2014</a>   
    </div>   
    <div class="oben">
      Sponsoren
      <a class="unten" href="#">Sommerfest 2014</a> 
    </div>
    <div class="oben">
      Impressum
    </div>   
  </div>
    <p>Willkommen auf der Homepage vom Kgv Diekmoor e.V. 401 unsere
    grüne Oase in Langenhorn-Nord, im Norden Hamburgs. </p>  
 
    <p class="nozwei">Schauen sie mal ´rein. Erfreuen sie sich an unseren Gärten,
    Angeboten und Veranstaltungen oder kommen sie ´mal persönlich
    vorbei. Es lohnt sich immer. </p>
<?php
    if(file_exists("counter.txt"))
    {
        /* Kann Datei geoeffnet werden? */
        $fp = @fopen("counter.txt","r");
        if($fp)
        {
            $zahl = fgets($fp,10);
            fclose($fp);
        }
        else
            $zahl = 0;
    }
    else
    $zahl = 0;
   
    /* Zahl erhoehen */
    $zahl = $zahl + 1;
    /*echo  "der Zugriffszaehler steht auf $zahl";*/
   
    /* neue Zahl schreiben */
    $fp = @fopen("counter.txt", "w");
   
    if(!$fp)
        exit("Der Zaehler kann nicht geschrieben werden");
       
    fputs($fp,$zahl);
    fclose($fp);
    
?>
   
    <h4>Besucher</h4>   
    <div id="besucher"> <?php echo $zahl; ?> </div>     <!-- Diese Zeile funktioniert NICHT -->
   
    <!--  <div id="besucher"> 123 </div>    -->                    <!-- Diese Zeile funktioniert -->
   
   
</body>
</html>


und hier den zum *besucher* gehörigen CSS-Quellcode:

Code:
#besucher
{
position: absolute;         /*Positionsart*/
font-weight: bolder;        /*Schriftgewichtung z.B. Fett*/
text-align: center;         /*Horizontale Ausrichtung*/
top: 600px;                 /*Abstand vom oberen Rand*/
left: 85px;                 /*Abstand vom linken Rand*/
width:55px;                 /*Breite*/
/*height:10px;                /*Höhe*/
padding: 10px;              /*Innenabstand o r u l*/
border: 1px solid#000000f;  /*Rahmenformatierung*/
color:#ff0033;;             /*Schriftfarbe*/
background-color: #ffff99;  /*Hintergrundfarbe*/
}

Ich hoffe inständig auf Hilfe und nicht auf Prügel:confused:

LG
willytyp
 
Versuch deine home.html einmal in home.php umzubenennen (wie oben geschrieben).
Muss auch nicht dauerhaft sein, wenns dir mit .html lieber ist; solange du einmal probierst obs dann geht.

PS: Du brauchst dich wirklich nicht für den Versuch schämen
Erstens wärst du ja nicht hier, wenn alles ok ist, und zweitens gibt es viel (viieell) schlimmere Fälle :)
 
Das funktioniert. Vielen, vielen Dank.
Allerdings, das wirft das gelernte über den Haufeno_O
Ich finde es nicht schön, wenn ich irgendetwas lerrne, dass zwar funktioniert, aber ich weiß nicht warum.
Man wartet dann automatisch auf die nächste Falle:mad:

Was soll's, ich finde mich damit ab und komme so einen ganzen Schritt weiter.

Nochmals meinen Dank.

LG
willytyp
 
Zurück