Beiträge von Arne Drews

    Hallo,

    Ja aber dann bekommst Du die Anzahl aller Downloads doch ganz einfach:

    SQL
    SELECT count(`download_id`) Menge FROM `table_downloads`

    Wenn Du das pro downlad_id haben möchtest, gruppierst Du das noch:

    SQL
    SELECT `download_id`, count(`download_id`) Menge FROM `table_downloads` GROUP BY `download_id`

    Zumindest, wenn ich das jetzt richtig verstanden habe?

    Gruß Arne

    Hallo,

    Zitat

    Tja, wer kein Javascript nutzt kann auch keine Fremdinhalte einbinden. Oder es wird eine Alternative angeboten.

    Wie kommst Du auf den Trichter?
    Eine andere Vorgehensweise habe ich Dir in #10 genannt.

    Zitat

    Mit str_replace werden die Zeilenumbrüche durch <br> ersetzt und in $final gespeichert.


    Es gibt zum Ersten auch nl2br() und zum zweiten, sprach ich nicht vom $final als resultierende Variable, sondern davon, dass Du $final bereits als Source-Variable verwendest.
    Woher kommt diese? Die ist in Deinem Script bis dahin nicht existent.

    Zitat

    Der Inhalt kann auch direkt in einer Variablen geschroeben werden.

    Ändert nichts daran, dass allow_url_fopen aktiv sein muss!

    Zitat

    Mit preg_match hole ich nur den Inhalt vom ersten <pre>..</pre> Element der Seite.

    Ja gut, was das generell macht weiss ich. Mir war ncht klar, wo Du die Anforderung gelesen hast.
    Aber es scheint, als wenn das nur ein Beispiel sein sollte.

    Die Lösung bleibt insgesamt unsauber, man sollte das wie in #10 beschrieben über cURL und DOMDocument/DOMXPath lösen.

    Gruß Arne

    Hallo,

    djheke: Kannst Du Deinen Dreizeiler kurz erläutern?!
    Mir fallen direkt ein paar Dinge auf:

    • Was soll das preg_match() bewirken?
    • Wo kommt $final her, Du verwendest es als dritten Parameter Subject in str_replace().
    • Abgesehen davon ersetzt man keine Variablen mit Teilen von sich selbst.
    • Über JavaScript allein bleibt das eine unsichere Lösung, Stichwort: NoScript & Co.

    Voraussetzung für URLs mit file_get_contents() ist ein aktiviertes allow_url_fopen.
    Dies ist nicht bei jedem Provider aktiv!

    Eine bessere Lösung wäre cURL und den Response mit DOMDocument/DOMXPath verarbeiten.

    Gruß Arne

    Hallo,

    Zitat von modem-kind

    wenn du ein KindElement
    (ALLE Elemente im HTML sind KindElemente von irgend einem anderem )
    float: ...; zuweist, !Verlassen! sie die Ebene des ElternElements / und aller Vorfahren -

    Was ist das denn für ein Humbug?!
    Verlassen tut kein Element irgend ein anderes, das Verhalten, was Du meinst trifft eher auf position:absolute; zu.

    float gibt eine Art Flussplan für Elemente an. Wenn ich folgendes habe:

    HTML
    <div class="wrapper">
        <div class="left">links</div>
        <div class="right">rechts</div>
    </div>
    Code
    .wrapper { width:75%; }
    .wrapper > DIV { display:inline-block; width:45%; }
    .left { float:left; }
    .right { float:right; }
    .right:after { clear:both; }


    Dann verlässt keiner der beiden inneren DIVs den wrapper-DIV! Sie werden beide nebeneinander innerhalb dessen angezeigt.

    Zitat von modem-kind

    Ihr weiteres Verhalten hat dadurch keinen Einfluss mehr auf Ihr ElternElement / zb. die höhe -
    das ist so als würde man einen Luftballon aufblasen
    wollen aber hält den neben den Mund
    nix passiert !

    Das von Dir nachfolgend angesprochene clear an der richtigen Stelle behebt das Problem!
    Die Elemente bleiben dennoch innerhalb des Elternelementes, überragen aufgrund des floating allerdings dessen Rahmen, bis korrekt gecleared wird!

    Gruß Arne

    Hallo,

    Zitat

    Sehr oft wird auch der Einsatz einer Sitemap empfohlen, aber diese würde ich jetzt nur noch bei einer mindestens 3-stufig verschachtelten Website-Struktur einsetzen, wo es auch Unterseiten gibt, die nicht direkt von der Startseite zu erreichen sind, sondern von Unterseite zu Unterseite.


    Ich würde die immer einsetzen, wenn Du willst, dass Google ein Interesse an Deiner Seite hat.
    Eine Sitemap hilft Google, Deine Seite bzw. deren Struktur zu kennen und verstehen.
    Anhand der Daten bist Du dann auch mit entsprechenden Tools in der Lage Schwachstellen besser zu analysieren.

    Ich stelle immer eine XML, eine HTTP und eine TXT zur Verfügung.
    Google favorisiert allerdings HTML noch vor XML, wenn ich mich grad nicht täusche.
    Das müsste ich nochmal unbestätigt stehen lassen, aber ich meine das war so.

    Gruß Arne

    Hallo,

    Zitat von paine_one

    ich hab sonst immer alles direkt da hin geschrieben wo es gebraucht wird, war für mich immer einfacher dann direkt was zu finden und co.

    Du findest Dich bei Einhaltung des EVA-Prinzips besser zurecht, als vorher ;)

    Nur mal als Beispiel, Dein Rechner in die grobe Richtung EVA gewandelt:

    1. Die reine HTML-Ansicht, die nur noch aus HTML und Platzhaltern für die Werte aus PHP besteht ( content.html ):

    2. Die Verarbeitungsdatei, in der die Berechnungen durchgeführt und einige HTML-Elemente vorbereitet werden:


    Das ist grob angeschnitten das EVA-Prinzip. Ich habe mir hier nicht die Mühe gemacht, alles anzupassen, sondern wollte Dir nur kurz zeigen, wie Du es Dir einfacher machen kannst, wenn Du bestimmte Dinge beachtest.
    Ich denke, auch wenn Du in PHP am Anfang stehst, sollte Dir der Vorteil klar werden.

    Gruß Arne

    Oha... Da ist einiges im Argen, sorry.

    Dein SELECT-Bandwurm mit dem Gewicht kannst Du schonmal als Beispiel so kürzen:

    Das ersetzt die kompletten 300 Options per Hand!

    Zitat von paine_one

    ich habe die ranges noch mal eingebaut aber umgekehrt so das bei "Deine Werte" die Wiederholungsanzahl ausgegeben werden soll, dort erscheint aber nur "float(X)" (X steht für eine Zahl)
    Im Prinzip soll bei Deine Werte bei Wiederholungen der % Wert zurück gewandelt werden in den Wert den man oben ausgewählt hat.


    Am einfachsten ist, Du übergibst das direkt im Value mit und trennst das PHP seitig voneinander:

    PHP
    list( $fLoopRange, $sLoops ) = explode( ';', $_POST['wdh'] );
    Zitat von paine_one

    dort erscheint aber nur "float(X)" (X steht für eine Zahl)

    Das zeigt so ein wenig, dass Du so gar nicht weisst, was Du tust, kann das sein?
    Nimm halt echo anstatt dem var_dump()!

    Zitat von paine_one

    Die angaben sind mehrstellig nach dem komma des ergebnisses, wie kann ich das auf eine stelle nach dem komma reduzieren?

    Mit round() rundet man Fliesskommazahlen und mit number_format() kann man dafür sorgen, dass auch wirklich alle die gleichen Nachkommastellen haben:

    PHP
    $fMaxPower = number_format(round(($gew * 100 / $fmp), 2), 2);

    Deine (1RM)-Tabelle - was auch immer das ist - kannst Du übrigens mit einem Loop auch deutlich kürzen:

    Einigermassen gekürzt sieht Dein Code zum Vergleich dann so aus:


    Es gibt aber zudem noch so einiges, was Du verbessern solltest:

    • Trenne die Verarbeitung von der Ausgabe und lerne das EVA-Prinzip!
    • <font>-Tags sind deprecated, das geht alles über CSS viel komfortabler
    • Nutze keine geschützten Leerzeichen zum Positionieren, auch das geht mit CSS deutlich besser.
    • PHP_SELF solltest Du nicht verwenden, lass stattdessen das action-Attribut einfach leer!
    • u.v.m.

    Gruß Arne

    Hallo,

    Ja, wenn Du von Responsive redest, geht es erstmal nur um das Ein-/Ausblenden von Elementen in Abhängigkeit des Viewports.
    Wenn Du Elemente gar nicht erst laden willst, kannst Du eine Mischung aus dem Link von MrMurphy und dem Responsive-Gedanken nutzen:


    • Erstelle leere Elemente
    • Ermittel per JavaScript ( jQuery ) den Viewport
    • Lade entsprechende Inhalte der anzuzeigenden Elemente

    Das ist aber kein wirkliches Responsive im eigentlichen Sinne!
    Und ich halte den Aufwand dafür auch für viel höher, als die zusätzlichen HTTP Requests, die Du damit generierst.

    Nutze Responsive so, wie es gedacht ist oder baue verschiedene Seiten für die Viewports.

    Gruß Arne

    Hallo,

    Warum setzt Du das erst in Backticks und entfernst die danach wieder :confused:

    EDIT: Grad gesehen, Du nutzt die als Delimiter, war ich geistig nicht drauf vorbereitet... :)
    Mit diesem Pattern greifst Du auch sftp und subdomains ab:

    Code
    #(\s+)?((s?f|ht)tps?://([\w\d-]+\.)?[\d\w-]+\.[a-z]{2,5}(.*)?)(\s+)?#i


    Geht sicherlich besser, aber für Dein Zweck sollte das passen.

    Gruß Arne

    Hallo,

    Die Ajax-Variante ist keine allgemeine Lösung!
    Dabei geht es um Inhalte, die auf Wunsch des Users angezeigt werden können.
    Beim ResponsiveDesign geht es aber nicht darum, Imhalte nachladbar zu gestalten, sondern die Views für Endgeräte zu optimieren.
    So macht es bei Smartphones bspw. in vielen Fällen keinen Sinn, grosse Slider ( oder auch einfach nur Header-Bilder ) anzuzeigen, weil die Viweports dann meist schon dicht sind.

    Der Sinn, dem User jetzt anbieten, dies nachzuladen erschliesst sich mir nicht.
    Um generell Platz zu sparen und nur die für den User entsprechende Informationen anzuzeigen, ist das Event bezogene Nachladen von Inhalten sinnvoll und gebräuchlich.
    Aber mit Responsive hat das erstmal nichts zu tun.

    Im Responsive gibt es nur die Größenanpassung oder das tatsächliche Ausblenden über display:none;

    Zitat von AnyKey

    Werden Bilddateien, die man in der mobilen Darstellung mit 'display:none' oder 'visibility:hidden' trotzdem geladen?

    Ja...

    Gruß Arne

    Hallo,

    Zitat von mike36

    Meine Funktion html_link() steht gleich am anfang von dem Code den ich gepostet habe.

    Stimmt. Hatte ich übersehen.

    Zitat von mike36

    Die Ausgabe der abgefragten Dateien funktioniert, nur werden mir eben die Links aus dem Text welchen ich abfrage nicht in "klickbare" links umgewandelt.

    Ach so, Du meinst Links, die sich quasi im node_revisions.body befinden?

    Ja, Deine Pattern matchen nicht.
    Ich habe mal als Test ein ganz einfaches Pattern verwendet:

    PHP
    $str = preg_replace( '#((f|ht)tp://[\w.-_]+\.[a-z]{2,5})#i', '<a href="$1">$1</a>', $str );


    Das ist zwar kein sehr genaues Pattern, aber das matcht zumindest.

    Du musst also Deine Pattern überarbeiten, der Rest des Scriptes scheint zu stimmen.

    Gruß Arne

    Hallo,

    $aPowerRange kannst Du dann ablösen durch Dein zweites Dropdown wdh.
    Da musst Du allerdings dann in den Option-Values die jeweilige Leistung in % reinschreiben.
    Zugriff hast Du dann über POST:

    PHP
    $fMaxPower = ($fWeight * 100 / (float)$_POST['wdh']);


    Damit sparst Du Dir dann auch den array_filter- & Co. Aufwand.

    Gruß Arne

    Hallo,

    Grundsätzlich kann man dazu nur etwas sinnvolles sagen, wenn Du etwas mehr Infos gibst.
    Bspw. kennen wir Deine Funktion html_link() nicht.

    Zudem:

    • mysql_* Funktionen sind deprecated, nutze eine der Alternativen MySQLi oder PDO.
    • Nutze kein SELECT *, sondern gib die Spalten an, die Du brauchst: SELECT `title`, `filepath`, `body`
    • Wo soll der klickbare Link sein, bzw. aus welchem Feld soll der generiert werden?

    Gruß Arne