Autor Zpráva
baja
Profil *
jedná s v podstatě o to, že mam dva datumy zadávaný ve formuláři a z toho bych pak chtěl vytvořit asi nějaký cyklus, kdy se bude datum1 zvyšovat třeba o 4 dny dokud bude datum1 menší nez datum2, a to datum1 se vždy zapíše do databaze.

zjednodušeně

cyklus pokud datum1<datum2 {

vepis datum1 do databaze
zvys datum1 o 4 dny}
Taps
Profil
baja:
// podmínka pro porovnání datumu
if(mktime(0, 0, 0, $mesic_1, $den_1, $rok_1) < mktime(0, 0, 0, $mesic_2, $den_2, $rok_2)){
//zapis do databaze
$datum=$rok_1.'-'.$mesic_1.'-'.$den_1;
$sql=mysql_query("insert into(datum) tabulka values('$datum')");
//zvýšení datumu
$date=Date($datum,strotime(+4 day));
}


baja
Profil *
ale já bych potřeboval cyklus, kdy se v tý podmínce budou porovnávat dva datumy zadávný z formuláře a pak se k tomu datumu1 v tom cyklu prictou ty 4 dny a zase se buď provede ten cyklus a nebo se ukončí, když datum 2 už nebude větší
Alphard
Profil
baja:
Rozumnější bude spočítat rozdíl rozdíl mezi oběma daty a pak přičíst patřičný počet dní. Funkce strtotime() a trocha matematiky by měla stačit, cyklus není nutný.
baja
Profil *
Teď nevim, jstli jsem to dobře pochopil, ale přijde mi to špatně.

Já potřebuju, že když budu mit například datum 15.5.2010 a druhým datum bude 25.5.2010, tak aby se mi do databáze přidalo nejdřív 15.5.2010, pak se pričetly 4dny, zase by se zkontrolovalo, jestli datum1 je větši než datum2, pokud ne, tak by se do databáze přidalo 19.5.2010 a zase nastejno, takže by se přidalo 23.5.2010 a pak by to skončilo, protože datum pak už bude 27.5.2010
Wertrik
Profil *
baja:
Mohlo by to jít řešit na straně mysql, tedy většina.

Stačil by vypočítat rozdíl mezi daty ve dnech. Z toho vypočítáš kolikrát se provede ten cyklus (počet dní/4dny) a to celé můžeš pro jistotu zaokrouhlit nahoru.

Ten cyrkus bude prostý. Víš kolikrát se provede a jen si vypočítáš o kolik dní se má zvýšit datum (číslo cyklu*4dny).

Potom ti stačí jen
INSERT ADDDATE(expr,days) WHERE 
ADDDATE(expr,days) < "$datum2"

Pokud bys to chtěl "optimalizovat" tak můžeš kontrolovat vložené řádky. Pokud žádný nebude cyklus breakneš.

Myslím že je to vše co potřebuješ vědět.
Držím pěstičky...
baja
Profil *
Wertrik:
Nešlo by to nějak přes PHP? To by bylo asi pro mě lepší a jednodušší, tomu co jsi napsal moc nerozumim
baja
Profil *
Se v tom pořád plácám a nemůže vymyslet, jak na to přičítání času k datumu, který přijde z formuláře, nemohl by mi s tim ještě někdo pomoct?
Alphard
Profil
<?php
$datumStart = "2010-04-11";
$datumMez = "2010-06-15";

$s = strtotime($datumStart);
$m = strtotime($datumMez);

$interval = ceil(($m - $s)/345600);

for($i = 1; $i <= $interval; $i++)
{
  echo date("Y-n-j", strtotime("$datumStart + ".(4*$i)." day"))."<br>\n";
}
baja
Profil *
Díky, díky, trochu jsem to upravil, aby to zobrazovalo i to počáteční datum a aby to nepřekročilo hodnotu meze a už to jede

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:

0