Setari cu data si ore in php din mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
mybab
Mesaje:26

Setari cu data si ore in php din mysql

Ceau Marplo, mai ma poti ajuta aici la smecheria asta de cod te rog?
Am //(codu de jos) vreau sa il modific asa:
In baza de date am patru coloane prima ii pentru "ora_1", a doua pentru "ora_2" a treia pentru "ziua_1" a patra pentru "ziua_2",
Vreau ca toate 4 sa fie functionale adica:
$ora_1_db = "18";//ora pusa in database//astea vreau sa le modific cand vreau
$ora_2_db = "16";//ora pusa in database//astea vreau sa le modific cand vreau

$ziua_1_db = "6";//Duminica// adica daca ii "6" sa fie duminica//adica sa pot pune 5 sa fie sambata si tot asa/
$ziua_2_db = "2";//Miercuri// adica daca ii "2" sa fie Miercuri//adica sa pot pune si o alta zi, si tot asa/

Eu as vrea sa modific codul de mai jos astfel daca ii ora de exemplu 17 care in baza de date ii(17)$ora_1_db, si ii ziua de Miercuri care in db ii (2)$ziua_1_db, sa imi treaca la urmatoarea promotie adica $ora_2_db si $ziua_2_db ,care( iar cand expira ora_2 si ziua_3 )sa treaca iar la ($ziua_1_db, $ora_1_db) si tot asa.
Codul de mai jos l as putea multiplica si modifica de vreo 20 de ori si sa il pun cu if dar imi ocupa foarte mult si nu pot seta ore diferite.

Cod: Selectaţi tot

//codu de jos
//asta ii facut doar pentru MIERCURI SI SAMBATA 
date_default_timezone_set("Europe/Bucharest");
$hour_actuala = date('H');
$day = date('w');
$change_hour_actuala = $h_f_DB;//din baza de date ora
if($day == 3 && $hour_actuala >= $change_hour_actuala) {
   $datepromo = date('Y-m-d', strtotime('+ 3 day'));
} else if($day == 6 && $hour_actuala >= $change_hour_actuala) {
   $datepromo = date('Y-m-d', strtotime('+ 4 day'));
} else if($day == 0 || $day == 1 || $day == 2 ) {
   $datepromo = date('Y-m-d', strtotime('next wednesday'));
} else if($day == 4 || $day == 5) {
   $datepromo = date('Y-m-d', strtotime('next saturday'));
} else if($day == 3 && $hour_actuala < $change_hour_actuala) {
   $datepromo = date('Y-m-d');
} else if($day == 6 && $hour_actuala < $change_hour_actuala) {
   $datepromo = date('Y-m-d');
}
$afis = $datepromo;
//end codu de jos
Mersi.

MarPlo Mesaje:4343
Salut
Scuze, dar nu stiu cum sa faci ceea ce vrei cu acel cod.

mybab Mesaje:26
Sa pun pentru o saptamana 2 promoti care se repeta identic si pentru urmatoare saptamani, Adica ca de exemplu Marti pana la ora 16 , dupa aceasta ora idiferent ca ii marti sa treaca la promotia cealalta joi pana la ora 17 ca de exemplu, iar daca iara ii joi si trecut de ora 17 sa treaca la prima la marti si tot asa.
Ex.

Cod: Selectaţi tot

Luni (imi afiseaza 05-12-2016)
Marti (imi afiseaza 05-12-2016)(care are si o ora finala 16:00 , si cand trece de aceasta ora imi afiseaza data 08-12-2016 adica Joi)
Miercuri (imi afiseaza 08-12-2016)
Joi (imi afiseaza 08-12-2016) pana la ora17:00 dupa care trece la urmatoarea data adica luni 13-12-2016
Vineri (imi afiseaza 13-12-2016)
Sambata(imi afiseaza 13-12-2016)
Duminica(imi afiseaza 13-12-2016)
Scriptul de mai sus asa functioneaza , doar ca nu pot sa ii dau eu ziua si ora din baza de date(in baza de date as vrea sa am 4 coloane ziua_1 (Marti), ziua_2 (Joi), ora_1 (16) , ora_2 (17) , dar acestea sa le pot schimba cum vreau adica sa pot seta ca de ex. luni pana 13 duminica pana in ora 14.
Scuze de asa mult scris, sper ca am fost inteles
Mersi Marplo

MarPlo Mesaje:4343
Poti sa faci un tabel pentru acele promotii cu acest cod in phpmyadmin:

Cod: Selectaţi tot

CREATE TABLE IF NOT EXISTS promo (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, zi_1 DATE, ora_1 INT(2) UNSIGNED,  zi_2 DATE, ora_2 INT(2) UNSIGNED) CHARACTER SET utf8 COLLATE utf8_general_ci
- Tot in phpmyadmin poti sa adaugi si sa modifici datele din tabel.

Iar in php aplici un Select ca acesta ca sa iei datele care vrei pentru codul tau:

Cod: Selectaţi tot

$sql ="SELECT id, DAYOFMONTH(zi_1) AS nr_zi1, DAYNAME(zi_1) AS name_zi1, DAYOFMONTH(zi_2) AS nr_zi2, DAYNAME(zi_2) AS name_zi2, ora_1, ora_2 FROM promo WHERE id=1 LIMIT 1";
//performs the $sql ..
Select-ul va returna un rand ca acesta, cu valorile de: nume a zilelor, numar si ore; pe care le poti folosi in codul tau cum stii.

Cod: Selectaţi tot

id |	nr_zi1 | name_zi1 | nr_zi2 | name_zi2 | ora_1 | ora_2 	
1  |	  5    |  Monday  |  8     | Thursday |  16   |  17
- Poti sa adaugi in tabel mai multe randuri cu promotii, si selectezi dupa id pe care vrei.

mybab Mesaje:26
Am sa incerc sa l fac asa.
Multumesc