eragon: linkcounter

Der Counter funktioniert, kann aber keine Abfrage erstellen die ich dann in html anzeigenlassen kann.

<?php
// Zugangsdaten für die Datenbank
$host  = "localhost";
$user  = "******";
$pass  = "******";
$datab = "******r";
$table = "counter";
// Die per GET übergebene URL einlesen und datenbanksicher machen
$url = addslashes($_GET['url']);
// Verbindung zum MySQL-Server aufbauen
$db = @mysql_connect($host, $user, $pass);
if ($db) {
    if (@mysql_select_db($datab, $db)) {
        // Eintrag fuer die übergebene URL um 1 erhöhen.
        $query = "UPDATE $table SET count = count + 1 WHERE url = '$url'";
        @mysql_query($query);
       // Überprüfung, ob noch kein Eintrag für URL vorhanden ist
        if (mysql_affected_rows() == 0) {
            $sql_insert = "INSERT INTO $table (url, count) VALUES ('$url', '1')";
            @mysql_query($sql_insert);
        }
    }
}
// Auf übergebene URL weiterleiten
header("Location: ". $_GET['url']);
?>

  1. Lieber eragon,

    1. Du hattest keine Frage. (War auch besser so.)
    2. Wozu Counter? Interessiert Dich wirklich wieviele Bots Deinen Links folgen?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Danke erstmal für die zügige antwort.

      Das ist ein LinkCounter für bestimmte Downloads die ich auf meiner Seite anbiete. Ich benötige ihn eigentlich nur um mir eine Statistik aufbauen zu können.
      In der db werden die daten ja gezählt und angezeigt, versuche ich das aber in die Page einzubauen klappt es nicht.
      Vielleicht kannst Du mir ja weiterhelfen.

      MFG

      1. Hallo,

        In der db werden die daten ja gezählt und angezeigt, versuche ich das aber in die Page einzubauen klappt es nicht.

        nun, dafür benötigst Du ein zweites, ähnlich aufgebautes, Skript, das Dir die entsprechende Daten ausgibt.

        Dazu musst Du

        a) die entsprechenden Daten abfragen, das ist ein SQL-Problem,
        b) die aus der Abfrage enthaltenen Daten anzeigen, das ist ein PHP-Problem.

        Bei welchem dieser beiden Punkte hängst Du derzeit?

        Freundliche Grüße

        Vinzenz

        1. Irgendwie hänge ich bei beiden Problemen :) .
          In der db kann ich ohne Probleme die abfrage machen. Versuche ich dann den PHP Code in die HTML Seite einzufügen zeigt es mir aber nix an.

          So hatte ich es geschrieben:
          <?

          include ("verbindung.php");

          $sql = 'SELECT counter.count'
                  . ' FROM counter'
                  . ' LIMIT 0, 30 ';
          $ergebnis = mysql_query($sql);
          while($row = mysql_fetch_object($ergebnis))
             {
             echo "$row->count <br>";
             }

          ?>

          1. Lieber eragon,

            Versuche ich dann den PHP Code in die HTML Seite einzufügen zeigt es mir aber nix an.

            wo? Im Browserfenster oder in dessen Quelltext? Ist das Dokument wirklich absolut leer oder steht zumindest irgendetwas darin?

            Deine Problembeschreibungen sind ungenügend.

            echo "$row->count <br>";

            Was soll dieser String werden? $row wird vielleicht aufgelöst, aber ab dem Minuszeichen wird nichts mehr aufgelöst, sondern so ausgegeben, wie es in den Anführungszeichen steht.

            Probiere es doch einmal so:

            echo [link:http://de2.php.net/manual/de/function.sprintf.php@title=sprintf](  
                '%s<br />',  
                $row->count  
            );
            

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo Felix,

              echo "$row->count <br>";
              Was soll dieser String werden? $row wird vielleicht aufgelöst, aber ab dem Minuszeichen wird nichts mehr aufgelöst, sondern so ausgegeben, wie es in den Anführungszeichen steht.

              Probiere es doch einmal so:

              echo [link:http://de2.php.net/manual/de/function.sprintf.php@title=sprintf](

              '%s<br />',
                  $row->count
              );

                
              das ist \*eine\* Möglichkeit. Vielleicht die flexibelste und sauberste, aber auch die für Anfänger am schwersten nachvollziehbare. Wie wäre es stattdessen mit  
                
              `   echo $row->count . "<br>";`{:.language-php}  
                
              oder  
                
              `   echo "{$row->count}<br>";`{:.language-php}  
                
              was beides zumindest einfacher aussieht, auch wenn im zweiten Fall das Syntax-Hilighting des Forums scheitert?  
                
              Ciao,  
               Martin  
              
              -- 
              Elefant zum Kamel: "Sag mal, wieso hast du denn den Busen auf dem Rücken?"  
              Kamel:             "Ziemlich freche Frage für einen, der den Penis im Gesicht hat."  
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              
              1. Lieber Der Martin,

                im Nachhinein glaube ich, der OP hat sein "HTML-Dokument" mit der Endung ".html" auf dem Server gespeichert, sodass der darin enthaltene PHP-Code nicht interpretiert, sondern vom Browser als <?Kommentar ?> ignoriert wird.

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
                1. Vielen dank für den Tip: "HTML-Dokument".

                  habe die Seite als .php gespeichert und schon gehts.

                  Nochmals Vielen Dank für die schnelle Hilfe

            2. Tach!

              echo "$row->count <br>";
              Was soll dieser String werden? $row wird vielleicht aufgelöst, aber ab dem Minuszeichen wird nichts mehr aufgelöst, sondern so ausgegeben, wie es in den Anführungszeichen steht.

              Nein.

              dedlfix.

  2. Hello,

    Der Counter funktioniert, kann aber keine Abfrage erstellen die ich dann in html anzeigenlassen kann.

    Hallo eragon,

    ich habe da mal eine Lösung ganz ohne Datenbank gebastelt. Und küzlich auf besonderen Wunsch noch eine zweite. Selbstverstänclich sein beide nicht perfekt....

    Guckst Du unter http://selfhtml.bitworks.de/snippets/clickcounter/ oder
    http://selfhtml.bitworks.de/snippets/visitcounter/

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hi,

    // Die per GET übergebene URL einlesen und datenbanksicher machen
    $url = addslashes($_GET['url']);

    hier wäre eher die escape-Funktion der genutzten Datenbank, in diesem Fall also mysql_real_escape_string angebracht.

    // Eintrag fuer die übergebene URL um 1 erhöhen.
            $query = "UPDATE $table SET count = count + 1 WHERE url = '$url'";
            @mysql_query($query);
           // Überprüfung, ob noch kein Eintrag für URL vorhanden ist
            if (mysql_affected_rows() == 0) {
                $sql_insert = "INSERT INTO $table (url, count) VALUES ('$url', '1')";
                @mysql_query($sql_insert);
            }

    Das schreit ziemlich laut nach
    INSERT ON DUPLICATE KEY UPDATE

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.