Pereiti prie turinio

PHP skriptas img išvedimas pagal laiką [ Pagalbos ]


Rekomenduojami pranešimai

Sveiki, iškilo bėda, PHP esu nelabai patyres, mėginau info ieškoti google tačiau, galbūt neteisingai pateikiu užklausa, nes nieko tinkamo nerandu. Reiktu Jūsų pagalbos, galbūt galite padėti. Reikalingas PHP kodas kuris pagal laiką PVZ Penktadienis 22:00 išvestu img kitu laiku pvz šeštadienis 00:00 išvestu jau kitą img.

 

Gal galite padėti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Netestavau:

 

<?php

<?php

$timenow = time();
$current_img_url = 'https://placeholdit.imgix.net/~text?txtsize=33&txt=default&w=350&h=150';

$imgs = [

   [
       'url' => 'https://placeholdit.imgix.net/~text?txtsize=33&txt=old&w=350&h=150',
       'time' => '1487971817',
   ],
   [
       'url' => 'https://placeholdit.imgix.net/~text?txtsize=33&txt=upcomming&w=350&h=150',
       'time' => '1488137435',
   ]

];

foreach ( $imgs as $img )
{
   if ( $timenow > $img['time'] ) {
       $current_img_url = $img['url'];
   }
}

echo '<img src="' . $current_img_url . '">';

 

Čia tau liko timestamp susigeneruoti. Kaip tai daroma manau išsiaiškinsi.

 

P.S. čia gal kiek netinkamas pvz. šiam atvejui, jei tie paveiksliukai kartojasi cikliškai reiktu naudoti tokį variantą:

 

Papildau funcija kuri čia labiau tiktu:

 

<?php

   function get_img($time, $day_req = '1', $img = 'https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150') {

       $dateTime = new \DateTime('now', new \DateTimeZone('Europe/Vilnius'));
       $day = $dateTime->format('N');
       $timenow = $dateTime->format('Hm');

       $exp_time_interval = explode('-',$time);

       // Pašalinam visus simbolius išskyrus skaičius, reikia tam, jog PHP range funkcija supranta tik 
       // integer reikšmę, tad toks 22:20 konvertuojasi į 2220, 9:30 į 930  ir t.t.
       $requested_time_from = preg_replace("/[^0-9]/", "", $exp_time_interval[0]);
       $requested_time_to = preg_replace("/[^0-9]/", "", $exp_time_interval[1]);

       // Jeigu šiandien diena nr 7 ir dabartinis laikas patenka į įvesta intervalą
       // Čia visi laikai atrodo kaip 820 2140 2200, kitaip tariant iš jų pašalintas :
       // Yra ir kitų būdu, čia tik vienas iš n.
       if ( $day == $day_req && in_array($timenow, range($requested_time_from, $requested_time_to))  ) {

           return '<img src="'.$img.'">';

       }

       return 'No imgs now...';

   }

   echo get_img( '21:50-22:00','7', 'https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150' );

 

Pirmas parametras tai laiko intervalas tiesiog, antras savaitės diena, trečias paveiksliukas aišku.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai tam visų pirma padaryti reiks, kad kažkoks vartotojas tuo laiku apsilankytų tavo puslapyje, kad serveris praleistų generaciją.

Arba teks daryti CronJob serveriui, jei reikia labai tikslaus laiko.

 

Mano parašas padarytas taip kad kas valandą būtų generuojamas naujas. Bet tam mano puslapyje turi kažkas apsilankyti. Jei niekas per valandą neapsilanko, naujo parašo niekas ir nepadaro.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai tam visų pirma padaryti reiks, kad kažkoks vartotojas tuo laiku apsilankytų tavo puslapyje, kad serveris praleistų generaciją.

Arba teks daryti CronJob serveriui, jei reikia labai tikslaus laiko.

 

Mano parašas padarytas taip kad kas valandą būtų generuojamas naujas. Bet tam mano puslapyje turi kažkas apsilankyti. Jei niekas per valandą neapsilanko, naujo parašo niekas ir nepadaro.

Kam čia cronjobas? Useris ateina, jam dinanmiškai rodo paveiksliuką, cron'as reikalingas būtu jei šie duomenys būtu saugomi į DB kokią nors.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Netestavau:

 

<?php

$timenow = time();
$current_img_url = 'https://placeholdit.imgix.net/~text?txtsize=33&txt=default&w=350&h=150';

$imgs = [

[
	'url' => 'https://placeholdit.imgix.net/~text?txtsize=33&txt=placeholder&w=350&h=150',
	'time' => '234324234234243234',
],
[
	'url' => 'https://placeholdit.imgix.net/~text?txtsize=33&txt=placeholder&w=350&h=150',
	'time' => '234324234234243234',
]

];

foreach ( $imgs as $img )
{
if ( $timenow == $img['time'] ) {
	$current_img_url = $img['url'];
}
}

echo '<img src="' . $current_img_url . '">';

 

Čia tau liko timestamp susigeneruoti. Kaip tai daroma manau išsiaiškinsi.

 

 

foreach :facepalm:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pasiūlyk geresnį/paprastesni variantą, matomai sunku normalų postą parašyti 3 kartus meningitu persirgus.

 

Čia man įdomu, kuris čia iš mūsų meningitu persirgęs, kad tokiems dalykams foreach'us kiša :lol: Ir dar pamenu, aiškina man, koks jis afigenas programeris, ir pan. :lol: Pasirodei visu gražumu :)

Redagavo wicked
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Čia man įdomu, kas meningutu persirgęs iš mūsų, kad tokiems dalykams foreach'us kiša :lol: Ir dar pamenu, aiškina man, koks jis afigenas programeris, ir pan. :lol: Pasirodei visu gražumu :)

Taip ir nepasakei nieko naudingo.

Ir aš neaiškinau koks aš afigienas, aš aiškinau koks tu tūpas.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Surast tavo postus ir pacituot, kur tu man aiškinai, kad tu apie WP geriau nei aš išmanai, ilgiau su WP už mane dirbi ir panašiai?

Tai tu pasakysi ką nors naudingo, šiam posto autoriui kuris nieko kaip sako nesupranta apie PHP? Nes kol kas tu esi čia nulis.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, iškilo bėda, PHP esu nelabai patyres, mėginau info ieškoti google tačiau, galbūt neteisingai pateikiu užklausa, nes nieko tinkamo nerandu. Reiktu Jūsų pagalbos, galbūt galite padėti. Reikalingas PHP kodas kuris pagal laiką PVZ Penktadienis 22:00 išvestu img kitu laiku pvz šeštadienis 00:00 išvestu jau kitą img.

 

Gal galite padėti?

<?php

$weekDay = date('N');
$hour = date('G');

// Rodys tik penktadieniais
if ( $weekDay == 5)
$img = 'penktadienis';
// Rodys tik sekmadieniais nuo 18h iki 18:59
else if ($weekDay == 7 && $hour >= 18 && $hour < 19)
$img = 'sekmadienisPo18';
// Rodys tik sekmadieniais nuo 19h iki 23:59
else if ($weekDay == 7 && $hour >= 19)
$img = 'sekmadienisPo19';
// Rodys visomis dienomis, kai netenkins sąlygos
else
$img = 'default';

echo '<img src="'. $img . '.png">;

 

Maždaug kažkas tokio turi būti, o jau pačias sąlygas pagal save susidėti gali. Kad ir kas pusvalandį, pridedant minutes į sąlygą. Paprasčiau kažin ar gali būti, nors šis pavyzdys turi ir trūkumų, jei reikia didesnės manipuliacijos data ir laiku.

Daugiau apie date(); - čia

 

P.S. Pirmas pavyzdys loginė nesąmonė.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

<?php

$weekDay = date('N');
$hour = date('G');

// Rodys tik penktadieniais
if ( $weekDay == 5)
$img = 'penktadienis';
// Rodys tik sekmadieniais nuo 18h iki 18:59
else if ($weekDay == 7 && $hour >= 18 && $hour < 19)
$img = 'sekmadienisPo18';
// Rodys tik sekmadieniais nuo 19h iki 23:59
else if ($weekDay == 7 && $hour >= 19)
$img = 'sekmadienisPo19';
// Rodys visomis dienomis, kai netenkins sąlygos
else
$img = 'default';

echo '<img src="'. $img . '.png">;

 

Maždaug kažkas tokio turi būti, o jau pačias sąlygas pagal save susidėti gali. Kad ir kas pusvalandį, pridedant minutes į sąlygą. Paprasčiau kažin ar gali būti, nors šis pavyzdys turi ir trūkumų, jei reikia didesnės manipuliacijos data ir laiku.

Daugiau apie date(); - čia

 

P.S. Pirmas pavyzdys loginė nesąmonė.

 

O tavo pavyzdys nieko vertas, makaronų kodas beviltiškai netinkantis šioje situacijoje.

Kodėl yra loginė nesamonė paaiškink geriau, labai įdomu, kaip aš pvz., pasakiau, kad tavo pavyzdys nieko vertas, nes jau temoje rašė, kad jis norės bet kokias datas prisidėti, tai ką tu if else rašinėsi?

 

Mano pvz netinkamas tik tuo atveju jei tai yra pasikartojantys paveiksliukai kurie kartojasi kas savaite. Bet tai nėra logikos klaida, ne toks defination yra loginės klaidos.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu kodėl nesąmonė, gal tas žmogus nori vieną sekundę tiesiog parodyti tą paveikslėlį ir tiek, viskas čia OK gi su tuo. Parodė ir gana :)

Oj tu durneliuk išvis dėl ciklo kabinaisi, mistipinau simboli comparinimo galvodamas apie kažką kito, vietoje $timenow == $img['time'] turi būti $timenow > $img['time'] pats to neįžvelgei nes jau senai apsiputojęs būtum, eik dabar barščių srėbti, o tam kas pastebėjo aišku pliusas.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Oj tu durneliuk išvis dėl ciklo kabinaisi, mistipinau simboli comparinimo galvodamas apie kažką kito, vietoje $timenow == $img['time'] turi būti $timenow > $img['time'] pats to neįžvelgei nes jau senai apsiputojęs būtum, eik dabar barščių srėbti, o tam kas pastebėjo aišku pliusas.

 

O tu biški neachujel čia 'durneliukais' svaidytis, Romka? Neįžvelgiau, nes nežiūrėjau - pamačiau, kad elemento išrinkimui naudoji foreach ciklą - to užteko, kad akys pradėtų vemti - toliau nebežiūrėjau ir net nebeliko noro gilintis :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O tavo pavyzdys nieko vertas, makaronų kodas beviltiškai netinkantis šioje situacijoje.

Kodėl yra loginė nesamonė paaiškink geriau, labai įdomu, kaip aš pvz., pasakiau, kad tavo pavyzdys nieko vertas, nes jau temoje rašė, kad jis norės bet kokias datas prisidėti, tai ką tu if else rašinėsi?

 

Mano pvz netinkamas tik tuo atveju jei tai yra pasikartojantys paveiksliukai kurie kartojasi kas savaite. Bet tai nėra logikos klaida, ne toks defination yra loginės klaidos.

 

Sorry, nėra būtent loginės klaidos. Viskas su tavo pavyzdžių kaip ir gerai, jei norima paveiksliuką rodyti tik vieną sekundę. Tik nenumanau scenarijaus, kodėl būtent to norima. Tokį variantą įsivaizduoju tik kokiam žaidime, kai tam tikrą sekundę parodomas paveiksliukas ar panašiai.

Kadangi autorius pats rašė, kad yra nepatyręs PHP, tai, manau, kad ir parašė klaidingai ir turėjo omeny, kad nori paveiksliuką rodyti tam tikrą dieną, tam tikru laiku ir vis jis keistųsi. Čia autoriaus klaida, kad nesugeba parašyti ko konkrečiai nori.

Niekur nepaminėta, kad bus tų paveiksliukų 10 ar 100. Tad ciklą ir masyvą kam naudoti? Ok, būtų 100 paveiksliukų, tai ir masyvus ir ciklus, ir klases ir dar ką nors gali naudoti. Tuo programavimas ir įdomus, kad tą pačią užduotį galima atlikti dešimtimis skirtingų būdu.

 

Čia galima diskutuoti ir diskutuoti, kol nėra autorius parašęs būtent ko nori. Ar sekundę rodyti, ar parodyti paveiksliuką vieną kartą, ar rodyti kiekvieną penktadienį vis tą patį paveiksliuką. Nes nuo užduoties aišku, priklauso ir kodas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O tu biški neachujel čia 'durneliukais' svaidytis, Romka? Neįžvelgiau, nes nežiūrėjau - pamačiau, kad elemento išrinkimui naudoji foreach ciklą - to užteko, kad akys pradėtų vemti - toliau nebežiūrėjau ir net nebeliko noro gilintis :)

 

Tai gal tiesiog per durnas esi dėl to nesigilinai. Protingas, savo sprendimą parašytu, o tūpas botas tik trolina.

 

Sorry, nėra būtent loginės klaidos. Viskas su tavo pavyzdžių kaip ir gerai, jei norima paveiksliuką rodyti tik vieną sekundę. Tik nenumanau scenarijaus, kodėl būtent to norima. Tokį variantą įsivaizduoju tik kokiam žaidime, kai tam tikrą sekundę parodomas paveiksliukas ar panašiai.

Kadangi autorius pats rašė, kad yra nepatyręs PHP, tai, manau, kad ir parašė klaidingai ir turėjo omeny, kad nori paveiksliuką rodyti tam tikrą dieną, tam tikru laiku ir vis jis keistųsi. Čia autoriaus klaida, kad nesugeba parašyti ko konkrečiai nori.

Niekur nepaminėta, kad bus tų paveiksliukų 10 ar 100. Tad ciklą ir masyvą kam naudoti? Ok, būtų 100 paveiksliukų, tai ir masyvus ir ciklus, ir klases ir dar ką nors gali naudoti. Tuo programavimas ir įdomus, kad tą pačią užduotį galima atlikti dešimtimis skirtingų būdu.

 

Čia galima diskutuoti ir diskutuoti, kol nėra autorius parašęs būtent ko nori. Ar sekundę rodyti, ar parodyti paveiksliuką vieną kartą, ar rodyti kiekvieną penktadienį vis tą patį paveiksliuką. Nes nuo užduoties aišku, priklauso ir kodas.

 

tldr...bet paskui perskaičiau.

 

Pataisiau, kaip ir sakiau, sumaišiau == su > ir pridėjau šiam atevejui skirta funkcija.

Redagavo Prodev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

tldr...bet paskui perskaičiau.

 

Pataisiau, kaip ir sakiau, sumaišiau == su > ir pridėjau šiam atevejui skirta funkcija.

O kalbant apie makaronus. Tarkim, būtų 1000 paveksliukų. Tavo pavyzdys rodys jį tik kartą, ir įsivazduoju kaip kiekvienu krovimu vis suks ir suks ciklą iki reikiamo img. Ne ką mažesni makaronai nei su if. Tik tiek, kad kodas gražesnis. ;)

Jei būtų 1000 ar kažkiek paveiksliukų, po parodymo reiktų trinti parodytą paveiksliuką iš masyvo, kad kiekvienu kartu nereiktų to masyvo sukti. O tam puikiai tiktų DB ar koks TXT failas, kad po parodymo trintų lauk parodytus img.

 

 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O kalbant apie makaronus. Tarkim, būtų 1000 paveksliukų. Tavo pavyzdys rodys jį tik kartą, ir įsivazduoju kaip kiekvienu krovimu vis suks ir suks ciklą iki reikiamo img. Ne ką mažesni makaronai nei su if. Tik tiek, kad kodas gražesnis. ;)

Jei būtų 1000 ar kažkiek paveiksliukų, po parodymo reiktų trinti parodytą paveiksliuką iš masyvo, kad kiekvienu kartu nereiktų to masyvo sukti. O tam puikiai tiktų DB ar koks TXT failas, kad po parodymo trintų lauk parodytus img.

 

Mano pirmas pvz., konkrečiai čia netinkamas. Aš jį dariau su mintimi, jog tą masyvą paduos iš DB, aš to kodo netikrinau, ten praktiškai pseudo kodas yra, antra funkcija kurią parašiau čia tinkamiausia +- veikianti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...