Autor Zpráva
macadan
Profil
Zdravím,

potřeboval bych poradit jak z mysql databáze vyčíst specifické objednávky daného uživatele (který je v tu dobu přihlášený)..

  <table border=1>
      <tr>
        <td><p>Uživatel</p></td>
        <td><p>Objednávka</p></td>
      </tr> 
    <?php
        require "db.php";
        $co = "SELECT jmeno_uziv,nazev_dresu FROM objednavky";
        $ward_list = mysql_query($co);
        while (list($uziv,$dres) = mysql_fetch_array($ward_list)){
        echo '<tr><td><p><strong>'. $uziv .'</strong></p></td><td><p>'. $dres .'</p></td></tr>';
        }
    ?> </table>]

Úplný výpis z databáze jsem už zvládnul, teď to jen v tom selectu (nebo i někde jinde.. nevím, v php jsem začátečník) potřebuji upravit, aby vybiraly jen sloupce s jmenem uzivatele, ktere se shoduje s tim, co je ulozene v session.

Zkousel jsem neco jako
SELECT jmeno_uziv,nazev_dresu FROM objednavky WHERE jmeno_uziv = ".$_SESSION['login']."
ale to mi vracelo prazdnou tabulku.

Pro uplnost jeste php soubor, kde se zpracovava login:
session_start(); // Budeme pracovat se session, musíme je nastartovat.
if(isset($_POST['jmeno'])){
    require_once 'db.php';
    $name = $_POST['jmeno'];
    $pass = md5($_POST['heslo']);
    $query = mysql_query("SELECT * FROM `uzivatele` WHERE `nickname` = '$name' and `heslo` = '$pass'") or die (mysql_error());
    // Vybereme uživatele se zadaným jménem a heslem
    $Vysledek = mysql_fetch_array($query);
    if($Vysledek['jmeno']){ // pokud tato proměnná obsahuje data, bylo zadané správné jméno a heslo
        // Do sessions si uložíme pár informací o přihlášeném
        $_SESSION['prihlasen'] = 1;
        $_SESSION['login'] = $Vysledek['jmeno'];
        $_SESSION['UserId'] = $Vysledek['id_uz'];
        $bl="shop.php";
        header("location: $bl"); // přesměrujeme na index
        exit;
    }else{
        $bl="login_fail.html";
        header("location: $bl"); // špatně zadané údaje
        exit;
        // echo "Zadal jsi špatné údaje";
    }
    mysql_free_result($query);
}else{
    echo "Zde nic není.";
}
ob_end_flush();
?>
juriad
Profil
Chyběly ti tam apostrofy. A samozřejmě escapování vstupu (pro jistotu).
$co = "SELECT jmeno_uziv, nazev_dresu
FROM objednavky
WHERE jmeno_uziv = '" . mysql_real_escape_string($_SESSION['login']) . "'";

Mimochodem, zvaž opuštění stařičkého rozšíření mysql_. Viz http://www.fisir.tk/itblog/mysql_
macadan
Profil
Ah, už to jde. Apostrofama to nebylo, to byla akorát nepozornost při psaní příspěvku. To escapování ale pomohlo, díky.
juriad
Profil
macadan:
Obecně bys měl zajistit, že všechny řetězce, které do databáze ukládáš jsou neškodné.
Není na škodu, touto funkcí prohnat všechny řetězce, které do databáze ukládáš.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: