Autor Zpráva
Silencer
Profil
Mam taky problem s vypisovanim zapasov, ktore potrebujem zobrazit na titulnej stranke.
V PHP nie som az taky zbehly, mam niekolko scriptov, ktore upravujem podla potreby.
Narazil som vsak na problem. V skusobnej databaze mam napr. 3 zapasy, jeden je uz po case odohrania, dva sa este len maju odohrat. A prave v tom je problem, ze sa mi nedari zobrazit iba prave ten jeden, ktory je nablizsie k aktualnemu datumu. Dokazal som ich zoradit podla datumu, ale ked dam do premennej $linesperpage=1; ,aby mi vypisovalo iba jeden zapas, tak mi nevypise nic.
Predpokladam, ze to je kvoli tomu, ze on zistuje celkovy pocet vsetkych zapasov, teda aj odohratych.
Nedokazal som vsak urcit podmienku, aby zistoval iba tie zapasy, ktore nie su odohrane, teda maju v stlpci odohrane nulu.

Tu je ta podmienka, kde bude asi problem. Moje pokusy o zapis sice boli syntaxovo spravne, ale neurobili to co som chcel. Mozno niekto budete vediet.

$query = "select * from zapasy order by datum asc limit $record, $linesperpage  ";


Tabulka v databaze obsahuje premenne: id datum domaci hostia odohrane golyD golyH pozn
Premenna odohrane by mala nadobudat hodnoty 0 - neodohrany zapas, 1 - odohrany zapas.
Pre istotu prikladam cely zaciatok zdrojaku az po vypis:


$linesperpage=3;


if (!isset($record)) $record=0;
{
$result = mysql_query("select Count(*) as posttotal from zapasy ") or die(mysql_error());
$row=mysql_fetch_Array($result);
$totalposts=$row[posttotal];
}

if ($record < $totalposts){
$query = "select * from zapasy order by datum asc limit $record, $linesperpage ";
$result = mysql_query($query);
$number = mysql_numrows($result);
}
if (($record + $linesperpage) < $totalposts) {
$nextrec = $record + $linesperpage;
} else {
$nextrec = $record;
}

if ($record - $linesperpage >= 0) {
$prevrec = $record - $linesperpage;
} else {
$prevrec = 0;
}

if ($number == 0){
echo '<br>žiadny zápas<br>';
}
elseif ($number > 0) {

$count=0;

while ($count < $number){


Keby nahodou v tom nebola chyba, uz sa moze vyskytovat iba vo vypise, ktore ale podla mna funguje spravne. Teoreticky by som mohol oddelit databazu neodohratych a odohratych zapasov, ale chcem im usetrit robotu, aby nemuseli kazdy zapas dva krat nahadzovat. Preto som chcel rozdelit zapasy na odohrate, zobrazovat najblizsi neodohraty zapas a na inom posledny vysledok.
Tu je zvysok zdrojaku, vynechane su nedolezite casti (ako napr. prevod cisla mesiaca na slovny nazov):


$row = mysql_fetch_array($result);

$id = $row[id];
$datum = $row[datum];
$domaci = $row[domaci];
$hostia = $row[hostia];

$teraz=date("YmdHi");

$den1=SubStr("$datum",6,2);
$mes1=SubStr("$datum",4,2);
$rok1=SubStr("$datum",0,4);
$hod1=SubStr("$datum",8,2);
$min1=SubStr("$datum",10,2);

$date1=$den1.'. '.$mes1.' '.$rok1.'<br>'.$hod1.' : '.$min1.' hod.';

if ($teraz < $datum) {
echo '
<p align="center"><b>'.$date1.'<br><br>
'.$domaci.'<br>-<br>'.$hostia.'

</b></p>

'; }

$count++;
}

}

?>


Dakujem velmi pekne za akukolvek radu. Uz minule ste mi zdarne pomohli, dufam, ze aj teraz sa mi podari vyriesit tento problem.
tiso
Profil
nejak takto:
select * from zapasy where odohrane=0 order by datum asc limit 0,1
Silencer
Profil
nejak takto:
select * from zapasy where odohrane=0 order by datum asc limit 0,1


Mozno to tak funguje, ked su tie zapasy prave tri v pomere aky uvadzam hore. Ale pocas sezony sa moze stat, ze neodohraty bude ziaden, jeden, desat, odohratych 2 alebo 50. Ta 0,1 funguje v mojom priklade, ale ked som nahodil dalsie zapasy, jeden neodohraty, jeden odohraty, opat nezobrazilo ani jeden zapas.
Asi tam nebude moct byt absolutna hodnota. :-(
A mozno aj bude musiet byt ta podmienka o nieco vyssie, kde sa zistuje celkovy pocet riadkov. Ale tam som to skusal, akosi to nepomohlo, neviem vsak, ci som to robil spravne.

zatial diky
24k
Profil *
Jakym stylem rozlisujes odehrane a neodehrane?
24k
Profil *
sakra nic, mas tam nekde chybu.. jstli chces napis na ICQ, vecer ti poradim

176-071-471
Joker
Profil
Silencer
Pokud platí, že:
Premenna odohrane by mala nadobudat hodnoty 0 - neodohrany zapas, 1 - odohrany zapas.
pak podmínka dotazu SELECT:
WHERE odohrane=0
vybere jenom neodehrané zápasy, což je to co chcete, ne?
Silencer
Profil
Ano, ta podmienka je sice spravna, ale z tych vsetkych neodohranych zapasov chcem vytiahnut ten s najblizsim datumom, co korenspoduje s
order by datum asc

chyba vsak bude asi v urceni limitu alebo v spravnom usporiadani datumu ...
Kajman_
Profil *
if (!isset($record))
{
$result = mysql_query("select Count(*) as postold from zapasy where datum<curdate() ") or die(mysql_error());
$row=mysql_fetch_Array($result);
$record=$row['postold'];
}
Silencer
Profil
A ta druha podmienka:

if ($record < $totalposts){


$query = "select * from zapasy order by datum asc limit $record, $linesperpage ";

$result = mysql_query($query);

$number = mysql_numrows($result);

}

ma vyzerat ako potom? Lebo tam pouzivam premennu totalposts a nikde ju nedefinujem.

Diky.
Kajman_
Profil *
To se snad nemění... jen record nenastavíte na počátek

if (!isset($record)) $record=0;

ale počtem zápasů z historie.
Silencer
Profil
Record sa sice nenastavi na nulu, ale spominanym poctom zapasov z historie, ako potom ale definujem premennu totalposts?
Ked som vyskusal iba doplni tvoj kod a nechat tam moj stary, vyzeralo to takto nejako:

if (!isset($record))
{
$result = mysql_query("select Count(*) as postold from zapasy where datum<curdate() ") or die(mysql_error());
$row=mysql_fetch_Array($result);
$record=$row['postold'];
$result = mysql_query("select Count(*) as posttotal from zapasy") or die(mysql_error());
$row=mysql_fetch_Array($result);
$totalposts=$row[posttotal];
}

if ($record < $totalposts){
$query = "select * from zapasy where odohrane=0 order by datum asc limit $record, $linesperpage ";
$result = mysql_query($query);
$number = mysql_numrows($result);
}


Vtedy sa mi sice zobrazoval zapas, ale opat ked som zmenil zapasov starsich ako sucasny datum, nevypisoval sa ani jeden alebo viac. Pokusmi som zistil, ze premenna $linesperpage musi byt vzdy nastavena o jeden viac, ako je pocet starsich zapasov s premennou odohrane=0.

Pritom ja mam nizsie podiemku pri vypise, ze kontroluje aktualny datum a iba ked je mensi ako datum zapasu, tak vypise zapas. Mozno aj to robi problemy.
Silencer
Profil
Dokaze mi niekto poradit?
Toto téma je uzamčeno. Odpověď nelze zaslat.

0