Beiträge von cottton

    Nö. Du sagst:

    PHP
    if($_POST['l_header'] == "")


    wenn ^das "" ist (ein leerer String ist)

    Umgekehrt (so wie Du es möchtest) sollte es heißen:

    PHP
    if($_POST['l_header'] != "")

    Du kannst aber auch mit empty() arbeiten:

    PHP
    if( empty( $_POST['l_header'] ) ) // wenn $_POST['l_header'] null, false, "" (leerer string), oder auch (achtung!) 0 ist

    Es muss heißen: $mysqli->error
    (also keine Klammern)
    siehe: http://php.net/manual/de/mysqli.quickstart.statements.php

    Die Query stimmt wieder nicht =)
    So hier sollte es aussehen:

    Du musst einen Fehler bekommen.

    Zitat

    Parse error: syntax error, unexpected ')' in ...


    IM Bsp was Du gepostest hast -> Zeile 33 (Du hast die Klammer von der Query ausgeschlossen)

    Dass Du keinen Fehler bekommst, könnte daran liegen, dass Du 'display_errors', aber nicht 'error_reporting' aktiv hast.

    Versuch mal anstatt:
    ini_set('display_errors', true);
    das hier:
    ini_set('error_reporting', -1);
    ini_set('display_errors', -1);

    EDIT: das sind noch mehr Fehler.
    zB

    PHP
    echo"<table id="myTable" class="tablesorter" rules="all">";


    Zeile 42
    Kann gefixt werden durch

    PHP
    echo'<table id="myTable" class="tablesorter" rules="all">';

    EDIT2:
    und noch ein copy/paste -Fehler in der query (Zeile 32)
    sollte heißen:

    SQL
    `ServiceDatum` NOT BETWEEN '2013-01-01' AND '2013-12-31'

    (fast)Alles ist möglich.
    Der mMn einfachste Weg ist, wenn Du Dir aufschreibst, was Du vorhast,
    und dann den Satz auseinander nimmst als wäre es eine Sql-Anweisung.
    Hier wird es allerdings ein wenig speziell.

    Code
    Nun würe ich gerne alle Anlagen Nummern ausgeben    -> SELECT `AnlageNr`
    bei der das aktuellste Einsatzdatum                 -> ORDER BY `Einsaetze` DESC 
    im Jahre 2013 war                                   -> WHERE `Einsaetze` BETWEEN '2013-01-01' AND '2013-12-31'
    und nicht in 2014 oder früher als 2013 vorkommt.    -> HAVING `AnlageNr` NOT IN ~*gekürzt*(`Einsaetze` NOT BETWEEN '2013-01-01' AND '2013-12-31')



    Die Having Anweisung sorgt hier dafür, dass Du nur die `AnlageNr` bekommst,
    die wirklich nur in 2013 vorkommen.
    Existiert also eine `AnlageNr` auch in 2011, dann wird diese nicht ausgegeben.

    Der Container muss sein. Denn Der Bro muss ja die Grenze kennen, ab wo ein Scrollbalken anzuzeigen wäre.
    Es sei denn, die Tabelle geht auf die gesamte Breite der Page - dann kannst (aber solltest wohl besser nicht) Du <body> als Container nutzen.

    Also Bro bekommt Container und die Aufgabe einen Scrollbalken anzubieten, sobald der Inhalt (table) aus Container herausragt.

    BTW - responsive_tables.js (lange nix mehr dran gemacht - gab glaub ich nen bug mit dem on/off -button)

    Ja, denn da ist noch eine Bedingung:

    JavaScript
    if (topCard === n) return;


    Das hier könnte funktionieren.
    (Kennst Du Dich denn mit Javascript aus?)

    Sehe gerade, dass Der Eintrag ja direkt in das php File geschrieben wird.
    Das kann gefährlich werden.
    Warum:
    Du weiß sicherlich, dass man mitten im HTML code PHP nutzen kann. Dabei öffnet man mit
    <?php
    und schließt mit
    ?>

    Das heißt, dass ein Eintrag (Variable $kommentar) mit dem Text:

    PHP
    <?php exit; ?>


    Auf Deiner Seite ausgeführt wird.

    Man kann (und sollte sowieso) sämtliche Benutzereingaben behandeln (Stichwort htmlspecialchars() oder htmlentities() ),
    aber ich würde trotzdem davon abraten PHP Dateien mit Benutzereingaben zu beschreiben.

    Was Du schon mal machen kannst:
    Das hier:

    PHP
    $name = $_POST['name'];
    $email = $_POST['email'];
    $kommentar = $_POST['kommentar'];


    mit dem hier ersetzen:

    PHP
    $name = htmlspecialchars($_POST['name']);
    $email = htmlspecialchars($_POST['email']);
    $kommentar = htmlspecialchars($_POST['kommentar']);


    (htmlspecialchars() siehe: http://php.net/manual/de/function.htmlspecialchars.php)

    Zitat

    htmlspecialchars — Wandelt Sonderzeichen in HTML-Codes um

    Dadurch wird zB das Zeichen < zu &lt;

    Und am Bsp von oben:
    <?php exit; ?> wird zu &lt;?php exit; ?&gt;gt;

    INFO: im Browser werden diese Zeichen wieder normal angezeigt. Er wandelt die HTML-Codes in Benutzerfreundliche Zeichen um.
    Wenn Du Dir aber den Quellcode ansiehst (Rechtsklick "Quelltext anzeigen"), dann siehst Du das, was der Browser als "Rohdaten" bekommt.

    Ich will Dich jetzt nicht noch mehr verwirren. Du kannst die Variante nutzen.
    Aber Du musst darauf achten, dass Du keine Benutzereingaben vergisst zu maskieren.

    Etwas ungewöhnlich den ganzen HTML-Kram mit in die Datei zu schreiben. =)

    PHP
    // str_replace(search, replace, subject)
    $ersetzen = str_replace("<!--Begin-->", $eintrag, $inhalt);


    <!--Beginn... wird gesucht. Und (nur) wenn vorhanden mit $eintrag ersetzt.
    Es wird wohl kein <!--Beginn... in der Datei stehen.
    (Wozu eigentlich?)

    Ich hoffe Du weißt was das Script macht. Sonst macht es keinen Sinn es zu erklären =)

    Im JS wird onclick flipCard(n) ausgeführt.
    Das heißt: wenn Du auf eine neue Seite verweist (Browser lädt), dann führst Du die Funktion per onload aus und übergibst das erste Menü (wahrscheinlich 1).
    probier mal:

    JavaScript
    $(document).ready(function(){
        // Add the appropriate content to the initial "front side"
        var frontFace = $('.face1');
        var frontContent = $('.store li:first-child').html();
        frontFace.html(frontContent);
        flipCard(1); // <- das hier ist neu
    });

    Das liegt daran, dass Bei dem ersten Link ein Link dahinter steckt :D
    Klingt komisch ...

    mit href="#" (heißt glaub ich Sprungmarker? keine Ahnung ...) bleibt der Browser ja auf der Seite - die Seite wird nicht neu geladen.
    Bei einem "echten" Link lädt der Browser die neue Seite.

    Du müsstest die Animation also auch beim Laden, oder besser gesagt NACH dem Laden der Seite anstoßen (onload).

    Das kannst Du gleich mit über die Datenbank erledigen.
    Den PHP Code lässt Du so wie er ist (ohne die neuen IFs) und legst in der DB/Tabelle einen neuen Datensatz an:

    SQL
    tabelle web_leistungen:
    l_id -- am besten der erste Eintrag in der Tabelle 
    l_titel -- Diese Seite ist leider nicht verfügbar
    l_titel_url ... usw
     l_header ... l_header_titel ... l_inhalt ...


    Und damit Deine Funktion IMMER ein Ergebnis liefert - auch wenn es kein passendes Ergebnis für den gesuchten l_titel_url gibt -
    hängst Du an die WHERE-Bedingung einfach ein OR `l_id` = 1


    Das Stellt sicher, dass Deine Funktion immer ein Ergebnis liefert (es wird kein "PHP NOTICE undefined index ..." geben),
    und dass sie immer EIN Ergebnis ausspuckt.

    EDIT:
    Du kannst zwecks dem explode() noch eine Prüfung einbauen:


    Wenn Die url keinen Bereich/Titel hergab, dann ist $seite[2] ja nicht gesetzt und Du würdest wohl den Wert NULL in die Sql-Abfrage schicken.

    Und als Tip: die IF als Kurzschreibweise:
    das Prinzip:
    () ? : ;
    DAS = WENN ? DANN : SONST;

    am Bsp:
    $var = isset($var) ? $var+1 : 1
    wenn $var gesetzt ist, dann $var+1, sonst 1

    Etwas spezieller:

    PHP
    $var = ( /*bedingung*/ )
        ? /*bedingung ist wahr*/
        : /*bedingung ist nicht wahr*/ ;
    
    
    
    
    $var = (isset($var) and $var !== false and $xyz === true)
        ? $var + 1 / 4 * (123.3 + 2) 
        : 0 ;


    Hier also Dein Code:

    PHP
    $seite = explode("/", $_SERVER['REQUEST_URI']);
        $bereich = isset($seite[2]) ? $seite[2] : 1; 
        $object = leistung($mysqli, $bereich);

    Habe dann noch unter Sicherheit eben ein Paßwort für alles eingegeben (auch den XAMPP-Ordner -> oder ist das der Fehler?),


    Du meinst bestimmt:

    Zitat


    Security Konsole MySQL | XAMPP Verzeichnis Schutz
    ...
    XAMPP VERZEICHNIS SCHUTZ (.htaccess)


    zu finden unter http://localhost/security/index.php
    Das ist ok.

    ~Kurze Erklärung:
    Bei "normaler" Installation von xampp findest Du unter c:/xampp/htdocs/
    eine Datei index.php.
    Der Inhalt:


    Wenn Du diese im Browser ausführst ( localhost/index.php ) dann solltest Du auf localhost/xampp/ weitergeleitet werden.
    Sollte etwas "nicht stimmen", bekommst Du den text "Something is wrong with the XAMPP installation :-(" angezeigt.

    Der Ordner htdocs ist das Verzeichnis, in dem PHP ausgeführt werden kann.
    Gehst Du einen Ordner zurück (c:/xampp/bsp_datei.php), dann wird kein PHP ausgefürht.

    Sieh mal nach, ob die Datei index.php im Ordner c:/xampp/htdocs/ existiert und rufe im Browser localhost/index.php auf (xampp apache natürlich starten)

    Nimm die is_admin() und nutze sie für den Moment als Dummy.
    Wenn Du dann einen Login eingebaut hat, kannst Du in der is_admin() die richtige Prüfung einbauen.

    PHP
    // um den admin zu simulieren definierst Du in der config oder in der index (...) eine Konstante:
    define('ADMIN', true);
    function is_admin()
    {
        if( defined('ADMIN') ){
            return true;
        }
        return false;


    so oder so ähnlich.


    Du bekommst also entweder (den Wert) false, oder ein Array mit den gelesenen Zeilen.

    PHP
    $rows = $db -> select("SELECT * FROM `users` WHERE EMail=test@gmail.com");
    
    
    
    
    var_dump($row[0]); // erste zeile


    erwartest Du nur ein Ergebnis, dann liegt das auf $row[0]

    EDIT:
    Nutz mal '

    SQL
    SELECT * FROM `users` WHERE `EMail` = 'test@gmail.com';


    =)

    EDIT: ha, angefangen zu schreiben, afk, abgeschickt und The Scout war schon da :D

    Das einzige was ich sehe ist, dass Du in der ersten Abfrage einen Integer (Zahl) übergibst,
    und beim zweiten einen String der die Zahl 1 enthält.
    Trotzdem sollte das Ergebnis das Gleiche sein.

    Setz mal vor dem Ausführen der ersten Query

    PHP
    ini_set('error_reporting',-1);
        ini_set('display_errors',-1);


    da wird bestimmt ein Fehler gemeldet.