#1 před 3 lety

raul66
Člen
Registrovaný: 16. 6. 2009
Příspěvky: 11

Error pri dopyte

Zdravim,
mam tento dopyt:

$guery ="SELECT DISTINCT DATE_FORMAT(res_time, '%d%m%Y') AS den,
exc_excercise_name, res_result FROM res INNER JOIN exc ON
res_exc_id=exc_id WHERE res_sub_id=1 AND res_usr_id=1
AND den <= $DO AND den >= $OD ORDER BY day DESC";

Pred nim mam formular, kde ked potvrdim dany formular(hladam dany datum od do), tak mi vypise tuto hlasku:
Unknown column ‚den‘ in ‚where clause'Unknown column 'den‘ in ‚where clause‘.Ale ved ja tam mam column den definovany, je to vlastne res_time, len som ho formatoval.Prehladal som vsetky fora, ale nikde nic konkretne, neviete mi poradit?

Dik

 

#2 před 3 lety

nAS
Člen
Registrovaný: 18. 12. 2008
Příspěvky: 261

Re: Error pri dopyte

SQL dotazy se provádějí tak, že se nejprve vyhodnotí podmínky a teprve poté se dělá výběr sloupců, takže to nemůže fungovat z logiky věci. Budeš tedy muset naformátovat ty proměnné $OD a $DO a porovnávat přímo se sloupcem res_time.


$application->run(); // Run Forrest, run!

@MartinMajor

 

#3 před 3 lety

raul66
Člen
Registrovaný: 16. 6. 2009
Příspěvky: 11

Re: Error pri dopyte

Uz som to naformatoval, ale vzdy ked do formulara zadam datum, ktory je v databaze, tak mi vypise iba prazdnu stranu bez vysledkov. mam pocit, ze zle formatujem tie datumy, v databaze, ten ‚res_time‘ je vo formate: ‚2009–05–31 00:00:00‘.Tie premenne $OD a $DO sa vo formulary zadavaju vo formate:‚1–6–2009‘.Nevedel by si mi poradit,ako ich sformatovat, aby mi to hadzalo vysledky?
Dakujem

<?php
if (isset($_POST['submit'])){
                $premenna=($_GET["id"]) * 1;
                $denOD=$_POST['denOD'];
                $mesiacOD=$_POST['mesiacOD'];
                $rokOD=$_POST['rokOD'];
                $denDO=$_POST['denDO'];
                $mesiacDO=$_POST['mesiacDO'];
                $rokDO=$_POST['rokDO'];
                $OD=$rokOD."-".$mesiacOD."-".$denOD;
                $DO=$rokDO."-".$mesiacDO."-".$denDO;
                if (($denOD>$denDO) and ($mesiacOD=$mesiacDO) and ($rokOD=$rokDO)){
                        print $error1;
                }
                else if (($mesiacOD>$mesiacDO) and ($rokOD=$rokDO)) {
                        print $error1;
                }
                else if ($rokOD>$rokDO){
                        print $error1;
                }
                echo $OD, $DO;
                $guery ="SELECT DISTINCT DATE_FORMAT(res_time, '%e.%c.%Y') AS res_time, exc_excercise_name, res_result FROM res INNER JOIN exc ON res_exc_id=exc_id WHERE res_time BETWEEN '$OD' AND '$DO' AND res_sub_id=1 AND res_usr_id=1 ORDER BY res_time DESC";
                $result = mysql_query($query);

                if($result){
        echo "<table cellspacing='20'>",
                "<tr>",
                "<th>","</th>",
                "<th>","</th>",
                "<th>",
                $sum_good,"</th>",
                "<th>",$sum_bad,"</th>",
                "<th>",$fruitfull,"</th>",
                "</tr>";
                for ($n=0; $n!=mysql_numrows($result); $n++){
                $res_time = mysql_result($result, $n, "res_time");
         $exc_excercise_name = mysql_result($result, $n, "exc_excercise_name");
        $res_result = mysql_result($result, $n, "res_result");
    while(list($res_time,$exc_excercise_name,$res_result) = mysql_fetch_array($result)){
      echo "<tr>",
      "<td class='time'>",
      $res_time,"</td>",
      "</tr>","<tr>",
      "<td>","</td>",
      "<td class='font'>",
      $exc_excercise_name,"</td>",
      "<td>","</td>",
      "<td>","</td>",
      "<td class='result'>",
      $res_result,"%","</td>",
      "</tr>";
          }
    echo "</table>";
  }
  else {
        print (mysql_error());
  }
  print (mysql_error());
  }
?>

 

#4 před 3 lety

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: Error pri dopyte

Jukni na funkce sprintf().

$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);

 

#5 před 3 lety

raul66
Člen
Registrovaný: 16. 6. 2009
Příspěvky: 11

Re: Error pri dopyte

Uz som nakoniec nasiel chybu, bola to v tom WHERE, kde sa dany stlpec musi volat tak ako je v databze, takze ziadny day ale res_time.Ale mam dalsi problem a to takyto dopyt:

$query="SELECT DATE_FORMAT(res_time, '%Y-%m-%d') AS day,
exc_excercise_name, COUNT(res_result) AS total,
COUNT(res_result)*res_result AS good,
COUNT(res_result)*(1-res_result) AS bad,
SUM(res_result)/COUNT(res_result)*100 AS
res_result FROM res INNER JOIN exc ON res_exc_id=exc_id
WHERE DATE_FORMAT('$OD', '%Y-%m-%d') >= day AND
DATE_FORMAT('$DO', '%Y-%m-%d') <= day AND res_sub_id=1 AND
res_usr_id=1 GROUP BY res_exc_id,day ORDER BY day DESC";

Vyberam z databazy vysledky prikladov podla datumu a grupujem ich podla nazvov prikladov.Dalej potrebujem zobrazit celkovy pocet pokusov,dobrych pokusov, zlych pokusov a uspesnost. Uspesnost a celkovy pocet pokusov to vypisuje dobre, ale pocet dobrych a zlych pokusov nespravne…

 

Zápatí