Autor Zpráva
Fisir
Profil
Ahoj,
zabývám se webovou evidencí, ve které si uživatel může libovolně přidávat věci, odebírat. Dále jsem udělal evidenci manipulace, která je s evidencí věcí propojená. Věci mají svou tabulku, jedinečné id. Manipulace má také svojí tabulku, ve které má sloupce id, Artikl, Výdej, Datum. Sloupec Artikl obsahuje jedinečné id věci, která je uložená v tabulce artikly. Já nyní potřebuji získat z databáze věci, se kterými se manipulovalo tento měsíc. (Přesněji řečeno, podle parametru v adrese, ten bude obsahovat číslo měsíce.)
Sesmolil jsem tento kód:
<?php
// připojení k databázi

$sqlt = mysql_query("CREATE TEMPORARY TABLE fakturace (artikl INT(10) NOT NULL PRIMARY KEY);");

$y = Date("Y", Time());
$datum = $_GET["m"].".".$y;

$sql = mysql_query("SELECT DISTINCT Artikl FROM manipulace WHERE Datum LIKE '%".$datum."';");
while($row = mysql_fetch_object($sql)){
    mysql_query("INSERT INTO fakturace VALUES ('".$row["Artikl"]."');");
    $sqlv = mysql_query("SELECT artikl FROM fakturace;");
    while($row2 = mysql_fetch_object($sqlv)){
        $sqlz = mysql_query("SELECT * FROM Artikly WHERE id='".$row2["artikl"]."';");
        while($row3 = mysql_fetch_object($sqlz)){
            echo($row3["Artikl"]);
        };
    };
};
echo(mysql_error);
?>
K mé zlosti ten kód nefunguje, ani mysql_error nic nevypisuje. Proč? Případně, máte nějaký jiný nápad jak toto vyřešit?
Kajman
Profil
Na to stačí jeden jednoduchý dotaz.
SELECT *
FROM   Artikly
WHERE  id in (SELECT Artikl
              FROM   manipulace
              WHERE  Datum >= '2012-03-01'
                     and Datum < '2012-04-01')
Fisir
Profil
Reaguji na Kajmana [#2]:
On je problém v tom, že v databázi datum není uložené jako datum. Ono se totiž zobrazuje uživateli a uživatel jej může editovat.
A také potřebuji každé id jen jednou.


Pak jsem zkoušel tenhle kód a stejně nic:
$sql = mysql_query("SELECT *
FROM   artikly
WHERE  id in (SELECT DISTINCT Artikl
              FROM   manipulace
              WHERE  Datum LIKE '%.3.2012')");
while($row = mysql_fetch_object($sql)){
    echo($row["Artikl"]);
};
echo(mysql_error());
mysql_error() stále nic nevypisuje.
Kajman
Profil
Fisir:
On je problém v tom, že v databázi datum není uložené jako datum. Ono se totiž zobrazuje uživateli a uživatel jej může editovat.

Ano to jste si zadělal na problém. Opravte si to, dokud je čas. Uživateli to samozřejmě můžete převést na jiný formát a stejně ho přijmou před ukládáním a převést si to na korektní datum pro uložení.

A také potřebuji každé id jen jednou.
Ten kompletní dotaz snad zobrazil nějaké vícekrát?
Fisir
Profil
Reaguji na sebe [#3]:
Hm, stačilo místo mysql_fetch_object použít mysql_fetch_array.
Už je to funkční! Děkuji Kajmanovi za základ SQL dotazu!

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: