Beiträge von threadi

    Die eigentlich gibt es nicht:

    Code
    float:clear ;

    Außerdem hast Du die ID in der diese falsche CSS-Eigenschaft steht im HTML-Code mehrfach verwendet. IDs dürfen nur 1 Mal pro HTML-Dokument verwendet werden.

    Was mir noch auffällt, ist dass der HTML-Code der Seite in meinem Firefox seltsam verzogen angezeigt wird. Der Einlesefehler den der CSS-Validator hier
    http://jigsaw.w3.org/css-validator/…02%2Findex.html
    mitteilt könnte ein Zeichenproblem sein, vlt. verursacht durch einen falschen Zeichensatz der Datei.

    Möglichkeit 1:
    Sende das Formular generell an ein eigenes Script, welches dann abhängig von der Auswahl im Feld zu der gewählten "Suchmaschine" weiterleitet.

    Möglichkeit 2:
    Verwende JavaScript um abhängig von der Auswahl in dem Feld das action-Attribut des Formulars neu zu setzen.

    Nein, dafür müsste man eine Ebene höher ansetzen. Ein Request an einen Server wird immer vom Webserver abgefangen und auch protokolliert. Wenn man eine Webseite aufruft gibt es folglich einen Request an den Server und auch einen Logeintrag der die aufgerufene URL, Uhrzeit, ggfs. auch noch die (anonymisierte) IP, die übertragene Datenmenge und das Ergebnis des Requests enthält. Und gerade letztere beide Daten sind das was dich interessiert.

    Ich habe mich eben mal auf die Suche gemacht und hier 2 Möglichkeiten gefunden.

    Möglichkeit a)
    Basiert auf dem Fakt, dass eine Datei vom Server nur gelöscht werden kann, wenn kein Prozess mehr darauf zugreift. D.h. solange der Apache auf die Datei zugreift um sie per Download auszugeben, solange liegt sie auch unlöschbar auf dem Server. Wenn man den Gedanken weiterführt, kann man ja alle X Sekunden prüfen, ob die Datei gelöscht werden kann. Wenn sie nicht gelöscht werden kann, dann wird noch auf sie zugegriffen/runtergeladen. Wenn sie gelöscht werden kann, dann wurde sie runtergeladen - und in deinem Fall könntest Du dann den Counter hochsetzen.

    Möglichkeit b)
    Das selbe wie a), nur das man über die Apache-eigene SetEnv-Funktion prüft, ob eine Datei runtergeladen wurde - und wenn ja wird sie gelöscht. Das könnte man in einer Programmierung nun wiederum z.B. mit file_exists() prüfen, und wenn die Datei nicht mehr existiert kannst Du den Counter hochsetzen.

    Das klingt sicher für dich erstmal kompliziert, vor allem weil du eigentlich keine Dateien löschen willst. Dazu hätte ich aber folgenden Vorschlag:
    Bau für jeder runterzuladende Datei einen Link mit Parameter zusammen, z.B. download.php?file=filename.zip. Das download.php-Script liefert dann die Datei zum Download aus. Am Ende des Scripts, nach der Ausgabe des Codes der runterzuladenden Datei, prüfst Du dann in einer Schleife, ob die Datei gelöscht werden kann. Wenn ja, setzt Du den Counter hoch.

    Habe so etwas nie gemacht und finde auch den Aufwand dafür etwas groß. Eine 100%ige Sicherheit, dass eine Datei komplett runtergeladen wurde kann es ohne einen speziell programmierten Download-Manager (Client-Server-Kommunikation während Download, so wie es z.B. der Flash-Updater macht) aber nicht geben.

    Wenn Du mit object hantierst, musst Du davon ausgehen, dass das jeder Browser anders handhabt. Der IE verarbeitet das eben, solange es kein Plugin aktiviert, als ActiveX. Das kannst Du nur dadurch verhindern indem Du auf object verzichtest.

    Das was Du eigentlich damit erreichen willst, macht man heutzutage mit PHP. Du willst ja offenbar eine zentrale Menü-Datei ablegen damit Du das Menü immer nur an einer Stelle ändern musst um es dann automatisch auf allen Seiten ändern zu lassen. Genau das geht mit PHP. Beispiel:

    PHP
    <?php include("../base/menu.html"); ?>

    Dito auch für den Footer oder alle anderen Bereiche die Du so einbinden möchtest.

    Dann verstehe ich nicht was Du mit Klick meinst. Die URL zum Download wird ja aufgerufen durch Klick auf einen Link. Das heißt auch, dass die Datei zum Download dem Nutzer angeboten wird - und in dem Moment wird auch schon der Zähler hoch gesetzt. Das ist schon genau das was dieses Script macht, und hat imho nichts mit dem Klick selbst zu tun sondern eben mit dem Moment der Speicherung.

    Willst Du also eher speichern, ob ein Download erfolgreich durchgeführt wurde?

    Schaffe dir einfach eine "Pseudospalte". Also:

    PHP
    $abfrage = "(SELECT id, beschreibung, '' as placebo FROM information WHERE beschreibung like '%$suchbegriff%')
                 UNION
                (SELECT id, ursache, loesung FROM fehler where ursache like '%$suchbegriff%')
                ORDER BY id";

    Wenn Du außerdem noch die Ergebnismenge sortieren willst, solltest Du einheitliche Spaltennamen per Alias erzwingen. Also:

    PHP
    $abfrage = "(SELECT id, '' as text, beschreibung FROM information WHERE beschreibung like '%$suchbegriff%')
                 UNION
                (SELECT id, ursache as text, loesung as beschreibung FROM fehler where ursache like '%$suchbegriff%')
                ORDER BY beschreibung";

    Bei deinem Statement verbindest Du 2 Tabellen ohne sie wirklich miteinander zu verbinden und suchst auch noch in beiden nach dem selben Begriff. Daher liefert dir MySQL dann eine Ergebnismenge in der jeweils von beiden Tabellen "irgendein" Datensatz enthalten ist.

    Was Du suchst ist UNION. Beispiel:

    PHP
    $abfrage = "(SELECT a FROM t1 WHERE beschreibung like '%".mysql_escape_string($suchbegriff)."%')
    UNION
    (SELECT a FROM t2 beschreibung like '%".mysql_escape_string($suchbegriff)."%')
    ORDER BY a";

    Siehe Handbuch: http://dev.mysql.com/doc/refman/5.0/en/union.html

    Die Zählung wird ja offenbar durch das Setzen der Variable $intDowns ermöglicht. Dort steht scheinbar ja schon der zu speichernde Zähler drinne, was ungenau ist wenn z.B. mehrere Leute gleichzeitig die URL aufrufen.

    Ich würde empfehlen auf diese Variable zu verzichten und statt dessen diesen Teil hier zu ändern:

    PHP
    $sql = "update download set downloads = downloads + 1 where name = '".$arrDownloads[$key]['name']."'";

    Noch (ein letztes Mal) für dich: Bitte lies dir nochmal die Unterschiede zwischen ID-, Klassen- und Element-Selektoren durch.

    Wenn Du ein Element ansprechen willst, dann verwende nur den Elementenamen (wie h1).
    Wenn Du eine ID ansprechen willst, dann verwende #idname (wie h1#idname).
    Wenn Du eine Klasse ansprechen willst, dann verwende .klassename (wie h1.klassename).

    Und das ist unabhängig davon, ob Du den CSS-Code auslagerst oder nicht. Das gilt immer.

    Ich habe auf den # verzichtet, da das CSS-Format in der Datei format.css ausgelagert ist und somit entfällt doch #, oder?

    Nein. Wo steht denn so ein Unsinn? :-o

    Zitat

    Ich habe in den CSS Grundlagen gesehen, dass man "ID" und "class" kombinieren kann, indem mann zunächst die ID nennt und dann das class mit einem Punkt, also:

    cloud.tag1

    Das trifft auf ein Element mit einer ID und einer Klasse zu. Beispiel:

    HTML
    <ul id="what" class="where">
    Code
    #what.where {}

    Leseart: CSS-Eigenschaften gelten für ein Element mit der ID "what" und der Klasse "where".

    Für deinen Fall ist das also der falsche Weg.

    Zitat

    Wie müsste es dann korrekt heißen, wenn o.g. Definition nicht korrekt ist?

    Das habe ich dir oben schon geschrieben.

    Du willst nicht einen Tag namens "cloud" ansprechen sondern die ID "cloud". Also musst Du im CSS überall vor "cloud" vorkommt ein # voranstellen.

    Code
    #cloud

    Weiterhin geht dadurch dann natürlich das hier auch nicht mehr:

    Code
    cloud.tag1

    Nochmal: Du hast kein Tag namens "cloud". Das Element mit der Klasse "tag1" befindet sich innerhalb des Elements, welches die ID "cloud" hat. Also musst Du es so schreiben:

    Code
    #cloud .tag1

    Leerzeichen beachten.

    Schau dir bitte die Grundlagen für CSS-IDs und -Klassen nochmal an.