PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
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
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.
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());
}
?>
Jukni na funkce sprintf().
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
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…