Beiträge von cottton

    Zum Fehler: das passiert, weil ohne `` der Server versucht das Wort zu "erkennen".
    Mit Unterstrichen geht da so gut wie alles klar. Mit Bindestrich nicht. (Am besten im db-seitig immer nur klein Schreiben und Unterstriche verwenden.)
    (Ich würde empfehlen immer die `` zu verwenden. Es gibt reservierte Namen. Wenn Du Spaltennamen/Tabellennamen immer mit `` schreibst, dann solltest du keine Probleme bekommen)

    Zum Problem:

    PHP
    <?php
    // $stmt = $DB_con->prepare("SELECT `world-coins` FROM user_daten;"); false
    $stmt = $DB_con->prepare("SELECT `world-coins` FROM user_daten WHERE `user_id` = :user_id;"); // oder wie auch immer du den usser identifizierst


    Du hattest immer den gleichen Benutzer (nämlich den Ersten) ausgewählt)

    EDIT:
    BTW: Ausgabe (post, get, aus files oder db) immer maskieren:

    PHP
    // echo $_SESSION['email'] 
    echo htmlspecialchars($_SESSION['email'])

    Weil der Rückgabewert von $this->getUserByEmail($email) in $user gepackt wird.
    $user = $this->getUserByEmail($email);
    Du kannst die Variable natürlich auch umbenennen.

    Was ist/passiert in page.php? Soll man dort hin, wenn man sich eingeloggt hat?
    (Thema Benennung - page.php sagt nix aus =) )

    Zitat

    Das heißt so wie, session['email'] gibt es nicht aber daten waren richtig


    8| Stell den Glühwein weg 8o

    Zitat

    Einloggen klappt aber werde direkt zu page.php weitergeleite


    Ja, muss ja. Denn Wenn Login klappt, wird doch $_SESSION['email'] gesetzt.

    Btw: würde nicht nur auf isset prüfen, sondern auch, ob die session email nicht leer ist.
    Warum: wenn $_SESSION['email'] mal FALSE ist, dann ist es auch gesetzt.

    Na dann brauchst Du doch aber den :vorname nicht in der WHERE-Bedingung.
    Login per eMail und PW. Die Query änderst Du in der Hinsicht, dass Du mehr auswählst (SELECT)
    Vorschlag:


    EDIT: Fehlerbeseitigung

    Warum sollte man sich mit Vornamen einloggen können?
    Ich finde es schon schlimm, wenn man sich mit der eMail einloggen kann/muss. (ich raff es nicht, warum das bei "den Großen" wie FB, google und co so gemacht wird)

    Ich würde es nicht empfehlen, den Vornamen für den Login zu verwenden.

    Ha! Hab ich gar nicht gesehen :D
    Deine Funktion gibt do true zurück, wenn $stmt->rowCount() > 0,
    also die eMail gefunden wurde.

    Tipp: nenne Funktionen am besten immer danach, was sie tun.
    In dem Fall hier könnte die Funktion heißen: ifEmailExists($email)
    So liest man schon, was da passiert/erwartet wird: if email exists, ...

    ungetestet (klar)

    Was nutzt Du eigl: mysqli_ oder PDO ?

    Nix reinquetschen. Wenn Du da mal was vergisst, dann können "komische Sachen" passieren.

    Das Problem war der Query-String:

    PHP
    <?php
    $email = 'q@q.de';
    $sql = 'select ... from ... where email = $email';


    Ergibt den String
    select ... from ... where email = $email
    wegen den einfachen Anführungszeichen.

    PHP
    <?php
    $email = 'q@q.de';
    $sql = "select ... from ... where email = $email";


    Ergibt den String
    select ... from ... where email = q@q.de
    =)

    Ok, also hast Du die 4 Tabellen-Daten per PHP sortiert.
    Das ist unnötig -- das kann der Sql-Server schneller. Ist aber kein muss. Macht halt nur Sinn :D

    Wenn Du jetzt alle zusammen führen willst, dann sind die Daten ja sicherlich schon in Arrays (PHP).
    Dann wäre wohl das einfachste array_merge().
    http://php.net/manual/de/function.array-merge.php

    PHP
    <?php
    $array = array_merge($arr1, $arr2, $arr3);


    Du wirst das Array dann noch einmal sortieren müssen, denk ich.

    Das hast nu davon, wenn Du keine Platzhalter verwendest!
    Ok, ich sehe Du verwendest sie ja, aber einmal haste es "vergessen" -- und an der Stelle hast Du den Fehler gemacht.
    (steht alles in comments)

    BTW:

    PHP
    <form action="<?php $_SERVER['REQUEST_METHOD']?>" method="POST">


    Das macht doch keinen Sinn =)
    <?php $_SERVER['REQUEST_METHOD']?> -- OHNE echo schreib dort rein garnix hin.
    Was Du sicherlich willst ist, dass die gleiche Seite aufgerufen wird. Dann lass das Feld leer.

    PHP
    <form action="" method="POST"> <!-- action="" gleiche seite wird aufgerufen -->

    Naja, dan JOIN bzw LEFT JOIN.
    Deinem Code entnehme ich , dass es 4 Tabellen gibt: kunden, web_kunden kundenerinnerung und web_kundenerinnerungen.
    (verwirrend)
    Du wählst eine (SELECT) und joinst die anderen ran.
    Dabei kommt es an, ob die Beziehungen (ON ...) immer vorhanden sind, oder vorhanden sein können.
    Im Normalfall gibt es zB eine eindeutige Kunden id - zB einfach nur id oder kd_id.

    Um dafür eine Query zu schreinben, müssen wir erstmal wissen, wie die Tabellen aussehen.
    Du kannst (wenn es öffentlich verfügbar sein darf) die Create-Statements posten.
    (bekommst Du zB durch: SHOW CREATE TABLE meine_tabelle; siehe http://dev.mysql.com/doc/refman/5.7…eate-table.html)

    Ich gehe mal nur von Tabelle kunden und kundenerinnerung aus.

    Für jeden Kunden gibt es (logisch) einen Datensatz in der (Haupttabelle) Tabelle kunden.
    Für jeden Kunden kann es keinen, einen, oder mehrere Einträge in der Tabelle kundenerinnerung geben.

    Tabelle Bsp:


    Kunde mit id 1 hat keine Einträge in Tabelle kundenerinnerung.
    Kunde mit id 2 hat einen, und Kunde mit id 3 hat gleich mehrere Erinnerungen.

    Ein SELECT sähe dann in etwa so aus:

    SQL
    SELECT 
        `kd`.`id`, `kd`.`kdnr`, `kd`.`name`, -- von `kunden` selectiert
        `kde`.`msg`, `kde`.`something` -- von `kundenerinnerung` selectiert
    FROM `kunden` AS `kd` -- AS `alias name`
    LEFT JOIN `kundenerinnerung` AS `kde` 
        ON `kde`.`id` = `kd`.`id` -- wenn das feld in beiden tabellen id heisst, kannst du auch USING (`id`) nutzen
    WHERE 
        `kd`.`id` = ?
        AND ...


    Suchst Du nun nach kd.id 1, dann bekommst Du in etwa:

    Code
    id  | kdnr  | name |  msg | something
    ------------------------
    1   |123    | hans | NULL | NULL


    (msg und something NULL, denn in der 2ten Tabelle gab es keine Übereinstimmungen.)
    Beim Select auf kd.id 3 sollte sowas rauskommen:

    Code
    id  | kdnr  | name  |  msg          | something
    ----------------------------------------------------
    3   |125    | wurst | 'text 3.1'    | 'something 3.1'
    3   |125    | wurst | 'text 3.2'    | 'something 3.2'
    3   |125    | wurst | 'text 3.3'    | 'something 3.3'


    Hoffe das hilft irgendwie =)

    Ha ja, die Link-Poster und Weg-renner :D
    "404" ... oder redirect auf Homepage ... das is .. naja, zur Sache:

    Hast Du schon was? Wie weit bist Du in PHP?
    Am besten Du postest den Code um den es geht. Dadurch werden beide Fragen beantwortet, und man kann da ansetzen.