Pereiti prie turinio

Sukūriau mažą skriptą, reiktų kuris galėtų patikrinti klaidas


Rekomenduojami pranešimai

Sveiki, mokinuos toliau PHP ir vis bandau sukurti kokį skriptą, dabar sukūriau paprastą skriptą lažybų prognozėm, jeigu kuris programuotojas galėtų patiktrinti nors paviršutiniškai permesti akim, praneškit. Arba jei mokamai, tai nors kainas praneškit.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dėk čia, arba į kokį github :)

 

Prisegu.

Nedariau projekte dar jokių admin prisijungimų, tik visos formos, visi failai norėčiau sužinoti kaip pagerinti kodą, kurių funkcijų man nevertėtų naudoti ir kurias vertėtų.

tex.rar

Redagavo Marw
Nuoroda į pranešimą
Dalintis kituose puslapiuose

pastabų labai daug galima duoti, bet aš matęs ne vieną jau iškeiktą asmenį šiame forume, todėl galima rasti analogiškų palyginimų šioje subforumo dalyje. Paprastučiai, palengvinantys gyvenimą pastebėjimai:

 

Naudok masyvus:

if ($row['status'] == 'Laimėta') { $style = 'background-color: #67FEA3'; }
if ($row['status'] == 'Pralaimėta') { $style = 'background-color: #FF4040'; }
if ($row['status'] == 'Grąžinta') { $style = 'background-color: #0E67DB'; }
if ($row['status'] == 'Laukiama') { $style = ''; }

keičiam į:

$statusArray = array(
   'Laimėta' => 'background-color: #67FEA3',
   'Pralaimėta' => 'background-color: #FF4040',
   'Grąžinta' => 'background-color: #0E67DB',
   'Laukiama' => FALSE
);

 

Toliau, variablai neturėtų būti lietuviškais pavadinimais, o ypač iš mysql. Tam reikėtų naudoti INT. Pvz 1 = laimėta, 2 = pralaimėta, 3 = grąžinta, 0 = laukiama. Variablus, kuris ką reiškia gali apsirašyti constantose ir pan.

 

Tokios maytės pastabėlės. Šiaip main pastebėjimas, tai būtų - nekombinuok HTML ir PHP logikos. Tvarkingas išvedimas daug geriau. Pasidomėk MVC.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

pastabų labai daug galima duoti, bet aš matęs ne vieną jau iškeiktą asmenį šiame forume, todėl galima rasti analogiškų palyginimų šioje subforumo dalyje. Paprastučiai, palengvinantys gyvenimą pastebėjimai:

 

Naudok masyvus:

if ($row['status'] == 'Laimėta') { $style = 'background-color: #67FEA3'; }
if ($row['status'] == 'Pralaimėta') { $style = 'background-color: #FF4040'; }
if ($row['status'] == 'Grąžinta') { $style = 'background-color: #0E67DB'; }
if ($row['status'] == 'Laukiama') { $style = ''; }

keičiam į:

$statusArray = array(
   'Laimėta' => 'background-color: #67FEA3',
   'Pralaimėta' => 'background-color: #FF4040',
   'Grąžinta' => 'background-color: #0E67DB',
   'Laukiama' => FALSE
);

 

Toliau, variablai neturėtų būti lietuviškais pavadinimais, o ypač iš mysql. Tam reikėtų naudoti INT. Pvz 1 = laimėta, 2 = pralaimėta, 3 = grąžinta, 0 = laukiama. Variablus, kuris ką reiškia gali apsirašyti constantose ir pan.

 

Tokios maytės pastabėlės. Šiaip main pastebėjimas, tai būtų - nekombinuok HTML ir PHP logikos. Tvarkingas išvedimas daug geriau. Pasidomėk MVC.

 

Ačiū už komentarą. Tai man ir reikia gero spyrio į sėdimąją, kad ateity būtų vis mažiau keikimų :)

Beje, galit normaliai gal paaiškinti mysql vs mysqli? Kaip teisingai includinti failą duombazės, kad visada jis būtų tvarkingas?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pora pastebejimu:

  • pasikartojantis kodas - iskelk tokius dalykus kaip DB connection i objekta, nereikes perrasineti kodo;
  • venk ranka rasyti SQL queries, geriau pasirasyk paprasta query construktoriu, kuris tvarkingai visus gaunamus duomenis escapintu ir pan, daug saugiau ir tvarkingiau;
  • venk bereikalingai kurti kintamuosius
    $result = mysql_query($order);	//order executes
    if($result){...}
    //pakeisciau i
    if(mysql_query($order)){...} //ypac tada, kai nezadi $result naudoti
    


  • uzmesk aki i MVC, daug tvarkingiau viskas atrodys
  • cia jau asmeninis principas, bet man niekad nepatiko, kai html su php maisomas kodas:
    echo "<tr style='".$style."'>";
    echo "<td>".$row['id']."</td>";
    echo "<td>".$row['date']."</td>";
    // pakeisciau i
    <tr style='<?php echo $style; ?>'>
    <td><?php echo $row['id']; ?></td>
    <td><?php echo $row['date']; ?></td>
    


Redagavo Ispirit
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pora pastebejimu:

  • pasikartojantis kodas - iskelk tokius dalykus kaip DB connection i objekta, nereikes perrasineti kodo;
  • venk ranka rasyti SQL queries, geriau pasirasyk paprasta query construktoriu, kuris tvarkingai visus gaunamus duomenis escapintu ir pan, daug saugiau ir tvarkingiau;
  • venk bereikalingai kurti kintamuosius
    $result = mysql_query($order);	//order executes
    if($result){...}
    //pakeisciau i
    if(mysql_query($order)){...} //ypac tada, kai nezadi $result naudoti
    


  • uzmesk aki i MVC, daug tvarkingiau viskas atrodys
  • cia jau asmeninis principas, bet man niekad nepatiko, kai html su php maisomas kodas:
    echo "<tr style='".$style."'>";
    echo "<td>".$row['id']."</td>";
    echo "<td>".$row['date']."</td>";
    // pakeisciau i
    <tr style='<?php echo $style; ?>'>
    <td><?php echo $row['id']; ?></td>
    <td><?php echo $row['date']; ?></td>
    


 

Ačiū. Užduosiu klausimų:

1. Kaip geriausiai tą db connectiona iškelti į objektą, ir kaip jį geriausiai includinti?

2. Su tais sql query, pradinukui sunkiai sekasi, gali kažką patarti?

3. MVC- vis nagrinėju, skaitinėju, bet labai daug čia tos info, kad net nebežinau kas čia gerai kas ne, galima gal kokį linką į geriausą tutorialą?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

pastabų labai daug galima duoti, bet aš matęs ne vieną jau iškeiktą asmenį šiame forume, todėl galima rasti analogiškų palyginimų šioje subforumo dalyje. Paprastučiai, palengvinantys gyvenimą pastebėjimai:

 

Naudok masyvus:

if ($row['status'] == 'Laimėta') { $style = 'background-color: #67FEA3'; }
if ($row['status'] == 'Pralaimėta') { $style = 'background-color: #FF4040'; }
if ($row['status'] == 'Grąžinta') { $style = 'background-color: #0E67DB'; }
if ($row['status'] == 'Laukiama') { $style = ''; }

keičiam į:

$statusArray = array(
   'Laimėta' => 'background-color: #67FEA3',
   'Pralaimėta' => 'background-color: #FF4040',
   'Grąžinta' => 'background-color: #0E67DB',
   'Laukiama' => FALSE
);

 

Toliau, variablai neturėtų būti lietuviškais pavadinimais, o ypač iš mysql. Tam reikėtų naudoti INT. Pvz 1 = laimėta, 2 = pralaimėta, 3 = grąžinta, 0 = laukiama. Variablus, kuris ką reiškia gali apsirašyti constantose ir pan.

 

Tokios maytės pastabėlės. Šiaip main pastebėjimas, tai būtų - nekombinuok HTML ir PHP logikos. Tvarkingas išvedimas daug geriau. Pasidomėk MVC.

 

$statusArray = array(
   'Laimėta' => 'background-color: #67FEA3',
   'Pralaimėta' => 'background-color: #FF4040',
   'Grąžinta' => 'background-color: #0E67DB',
   'Laukiama' => FALSE
);

 

O šitą kaip dabar man padaryti, kad jis veiktų kaip if?

 

<?php    echo $style[''.$row['status'].'']; ?>

 

Šitaip veikia, bet ar tai teisingas kodas?

Redagavo Marw
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nera jokio skirtumo ar i array susidesi duomenis ar kitaip. Tai jokios esmes nesudaro nei greiciui, nei kodo skaitomumui. (Cia del pirmuju patarimu.)

 

Kas labiausiai tave pastumes i prieki, tai MVC naudojimas, patarciau pasiimti CodeIgniter framework. Jis labai paprastas pradedantiesiems. MVC privalumas, kad siek tiek labiau organizuotas kodas. Tai svarbu kai svetaine pasidaro didele, tada zymiai sunkiau nepasimesti tarp visu funkciju ir panasiai.

 

Pacioje pradzioje man ir buvo sunku suprasti kas tas MVC. Nors yra pilna aprasymu, bet kazkodel kol nezinai kas tas MVC, tai labai sunku suprasti kas jis yra.

 

MVC sudaro 3 pagrindiniai tipai failu: model, view ir controller.

View - cia dedamas HTML kodas

Model - cia dedamas PHP kodas

Controller - siuose failuose beveik neturi buti kodo. Sio failo esme, tai pagal URL uzkrauti reikiama HTML ir PHP koda.

 

Controller pvz: (aisku realybeje siek tiek kitaip viskas veikia):

<?php

// controller pavyzdys
include('model.php'); // cia bus funkcija kuri gauna vartotojus is duomenu bazes

$users= get_users(); // get_users() - funkcija aprasyta model.php

include('view.php'); // sitame faile yra html, jis suka cikla ir atspauzdina vartotojus is kintamojo $users


?>

 

Ar ne pats paprasciausias pavyzdys koki teko matyti? :)

Redagavo wwwOgrasLt
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nera jokio skirtumo ar i array susidesi duomenis ar kitaip. Tai jokios esmes nesudaro nei greiciui, nei kodo skaitomumui. (Cia del pirmuju patarimu.)

 

Kas labiausiai tave pastumes i prieki, tai MVC naudojimas, patarciau pasiimti CodeIgniter framework. Jis labai paprastas pradedantiesiems. MVC privalumas, kad siek tiek labiau organizuotas kodas. Tai svarbu kai svetaine pasidaro didele, tada zymiai sunkiau nepasimesti tarp visu funkciju ir panasiai.

 

Pacioje pradzioje man ir buvo sunku suprasti kas tas MVC. Nors yra pilna aprasymu, bet kazkodel kol nezinai kas tas MVC, tai labai sunku suprasti kas jis yra.

 

MVC sudaro 3 pagrindiniai tipai failu: model, view ir controller.

View - cia dedamas HTML kodas

Model - cia dedamas PHP kodas

Controller - siuose failuose beveik neturi buti kodo. Sio failo esme, tai pagal URL uzkrauti reikiama HTML ir PHP koda.

 

Controller pvz: (aisku realybeje siek tiek kitaip viskas veikia):

<?php

// controller pavyzdys
include('model.php'); // cia bus funkcija kuri gauna vartotojus is duomenu bazes

$users= get_users(); // get_users() - funkcija aprasyta model.php

include('view.php'); // sitame faile yra html, jis suka cikla ir atspauzdina vartotojus is kintamojo $users


?>

 

Ar ne pats paprasciausias pavyzdys koki teko matyti? :)

 

Hm, įdomiai, laiko yra - noro yra, belieka bandyti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

 

MVC sudaro 3 pagrindiniai tipai failu: model, view ir controller.

View - cia dedamas HTML kodas

Model - cia dedamas PHP kodas

Controller - siuose failuose beveik neturi buti kodo. Sio failo esme, tai pagal URL uzkrauti reikiama HTML ir PHP koda.

 

 

 

nu nu, papasakok plačiau apie model / view / controller :lol:

Nuoroda į pranešimą
Dalintis kituose puslapiuose

pastabų labai daug galima duoti, bet aš matęs ne vieną jau iškeiktą asmenį šiame forume, todėl galima rasti analogiškų palyginimų šioje subforumo dalyje. Paprastučiai, palengvinantys gyvenimą pastebėjimai:

 

Naudok masyvus:

if ($row['status'] == 'Laimėta') { $style = 'background-color: #67FEA3'; }
if ($row['status'] == 'Pralaimėta') { $style = 'background-color: #FF4040'; }
if ($row['status'] == 'Grąžinta') { $style = 'background-color: #0E67DB'; }
if ($row['status'] == 'Laukiama') { $style = ''; }

keičiam į:

$statusArray = array(
   'Laimėta' => 'background-color: #67FEA3',
   'Pralaimėta' => 'background-color: #FF4040',
   'Grąžinta' => 'background-color: #0E67DB',
   'Laukiama' => FALSE
);

 

O geriausia stilius. ypač pasikartojančius, apskritai apsirašyti CSS. Nereiks išvedinėti CSS taisyklių, beliks tik

class="won" (lost, returned, waiting)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

$statusArray = array(
   'Laimėta' => 'background-color: #67FEA3',
   'Pralaimėta' => 'background-color: #FF4040',
   'Grąžinta' => 'background-color: #0E67DB',
   'Laukiama' => FALSE
);

 

O šitą kaip dabar man padaryti, kad jis veiktų kaip if?

 

<?php    echo $style[''.$row['status'].'']; ?>

 

Šitaip veikia, bet ar tai teisingas kodas?

 

$statusArray[$row['status']]

Nuoroda į pranešimą
Dalintis kituose puslapiuose

TL;DR: Pažaidžiau su index puslapiu, panaudojau Silex mikro-karkasą, Twig šablonus, Doctrine DBAL (DB abstrakciją).

 

Repositorija - https://github.com/apsimetu/tex (pakeistas tik index.php failas)

Silex šaka - https://github.com/apsimetu/tex/tree/silex/tex (Silex, Twig, Doctrine)

 

Kad būtų aiškesnė veiksmų eiga, galima eiti per kiekvieną kodo pakeitimą - https://github.com/apsimetu/tex/commits/silex

 

 

Pirmas pastebėjimas, kad SQL faile https://github.com/apsimetu/tex/blob/4aa5618f7e12ca2d89a3b9cc004811d93069ede0/nimbo_tex.sql#L22 ir https://github.com/apsimetu/tex/blob/4aa5618f7e12ca2d89a3b9cc004811d93069ede0/nimbo_tex.sql#L43 vietoj latin1 turėtų būti UTF8 kitaip projektas turės problemų ateityje su koduotėmis.

 

 

Viena svarbiausių problemų projekte yra kodo ir atvaizdavimo maišymas kartu. Pradėjau iškeldamas dalį PHP kodo į failo viršų - https://github.com/apsimetu/tex/blob/a06054e01d8a198843c9bed5f72e88328037d8c2/tex/index.php

 

Čia autorius matyt per klaidą paliko fetch_array - https://github.com/apsimetu/tex/commit/6ad798da914de5bc8df5ea1582d01796ae28c64f

 

Čia berods dar viena autoriaus klaida. Manau bandyta vietoj datos su laiku rodyti tik datą, bet gavosi taip, kad visi įrašai rodo šiandienos datą - https://github.com/apsimetu/tex/commit/364b24ae418233d03bf843c0feb261cfafd91604

 

Jau iškelta pagrindinė puslapio lentelė, tačiau šablone dar likę šiek tiek logikos kurią reikėtų ištraukti - https://github.com/apsimetu/tex/blob/f4482605ef57520c249a562b731382d11239ad9a/tex/index.php

 

Apvalom šabloną ištraukdami stilaus logiką į atskirą funkciją - https://github.com/apsimetu/tex/commit/b72d5921f10b2c6276c8be19b6aef7a6b8e8c620

 

Ištraukiam Facebook kodą į atskirą funkciją, kad dar šiek tiek apvalyti šabloną - https://github.com/apsimetu/tex/commit/d2787a5890bf98ef107568deb52ffa62ea6e6d40

 

Ištraukiamas paskutinis didesnis PHP logikos kodas naudojamas puslapiavimui. Dabar jau PHP kodas atskirtas nuo HTML, puslapis atrodo švaresnis - https://github.com/apsimetu/tex/blob/73169452b1f3b562571e07fd77e78566f47e4fce/tex/index.php

 

Nedidelė optimizacija - https://github.com/apsimetu/tex/commit/41fb46ba934254712a429a4e92d595e4ec88457b

 

 

Dabar jau būtų galima pradėti galvoti apie PHP kodo atskirimą į atskirą failą, duomenų bazės funkcijų atskyrimą, šablonų sistemos naudojimą. Dviračio išradinėti nereikia, visa tai padeda atlikti karkasai (framework'ai). Šiam pavyzdžiui nenorėjau naudoti pilno karkaso, tokio kaip Symfony, Laravel ar Yii, tad buvo puiki proga man pačiam susipažinti su vienu iš mikro-karkasų - Silex. Twig šablonus taip pat naudoju pirmą kartą (geriau vėliau negu niekada) :)

 

Silex karkasas

 

Susiinstaliuojam Silex naudodami Composer - https://github.com/apsimetu/tex/commit/44725ee87246d287fb3f67b61203cfd508ece5e8

 

Susiinstaliuojam Twig šablonus naudodami Composer ir bandom index failo šablona naudodami tik statinę informaciją (tiesiog HTML be PHP) - https://github.com/apsimetu/tex/commit/b329b6c9e20bc9f412bff8affca2835e8a3b6a64

 

Iš seno index failo perkeliam DB prisijungimą ir funkciją kuri generuoja statistikos rezultatus. Šiuos rezultatus paduodam į šabloną ir pačiam šablone naudojam Twig ciklo funkciją atvaizdavimui.

 

Kaip ir su statistika, tuo pačiu būdu įkeliam puslapiavimą - https://github.com/apsimetu/tex/commit/bf07363ce143e416cc075346040a3c0deae528ca

 

Toliau eina pagrindinė lentelė, bet kol kas praleidžiam stulpelius, kur reikia šiek tiek logikos - https://github.com/apsimetu/tex/commit/4f23cfbd500f4df9885b3b11bba81022af57ba3d

 

Twig leidžia gan elegantiškai formatuoti datą - https://github.com/apsimetu/tex/commit/56efb6cc6b60c1e0b28824d0f661a4cc6fbdec6a

 

Lentelės eilučių spalvai nustatyti galim naudoti CSS klases. Pasirodo lietuviškos raidės klasių pavadinimam tinka :) - https://github.com/apsimetu/tex/commit/0dc8a42b884043dfd4dc5923fc3b1f8680d8a857

 

Su Facebook stulpelio logika šiek tiek sudėtingiau, reikia susikurti Twig pagalbinę funkciją - https://github.com/apsimetu/tex/commit/6db40016dd30f57597c4df32ad0731b2f06c88fe

 

Viskas veikia, bet procedūrinės mysqli funkcijos atrodo ne savo vietoj :) Kad jau naudojam karkasą, galim pasinaudoti ir karkaso suteikiama duomenų bazės abstrakcija. Silex naudoja Doctrine DBAL (be ORM). Instaliuojam naudodami Composer https://github.com/apsimetu/tex/commit/ec3b9fa70e7bf782216d7bb70ac9299baf9bd44e

 

Bandom konvertuoti pirmą mysqli funkciją į Doctrine. Atrodo viskas veikia - https://github.com/apsimetu/tex/commit/ce4ef5815e2242d3dd04f770c1b892841e814895

 

Žinoma query() metodas neduoda jokių pranašumų prieš mysqli funkciją ir jo naudoti nepatartina, tad keičiam į fetchAll() metodą ir tuo pačiu nebereikia kurti masyvo laikyti rezultatams - https://github.com/apsimetu/tex/commit/e3f61c45c582151176cf52b3240e1391650e29d4

 

Toliau konvertuojam puslapiavimo užklausą - https://github.com/apsimetu/tex/commit/ea3ffc3acdf52b7d46c5c106939e065cb81c47cd

 

Toliau imam lentelės rezultatus. Čia pasinaudojam parametrų atskirimu nuo pačios SQL užklausos. Lipdyti SQL užklausą maišant tekstą ir kintamuosius yra bloga praktika - https://github.com/apsimetu/tex/commit/a32b956ae8d42cd7f36b5d27127c465cc3789517

 

Dabar visos mysqli funkcijos jau pakeistos, todėl galim panaikinti mysqli prisijungimą prie DB - https://github.com/apsimetu/tex/commit/746088795dd7acfe3a983d927352c10db4ea5bbf

 

HTTP užlausos parametrams skaityti, vietoj _GET masyvo galim naudotis patogesniu Request objektu - https://github.com/apsimetu/tex/commit/870de1a29f76d2be0048989046d5c044c3b6107b

 

Dabar silex.php failas atrodo jau neblogai, bet gan didelę dalį jame užima Twig pagalbinės funkcijos kodas. Jam kontroleryje ne vieta, tad sukuriam atskirą klasę TwigExtensions, kur laikysim visas pagalbines Twig funkcijas reikalingas šiam projektui - https://github.com/apsimetu/tex/commit/2e58a8e97ae65fd2d01cbdf9a24cc54a18b1ce6b

 

Daug geriau, bet nesinori kiekvieną kartą sukūrus naują klasę naudoti require_once failo viršuje. Mes naudojam Composer, tad galim pasinaudoti autoload funkcionalumu - https://github.com/apsimetu/tex/commit/5a90cded278fbce836ca75056f2bcb370da85567

 

Užklausos į duomenų bazę kontroleryje yra bloga praktika, tad iškeliam jas į repositoriją - https://github.com/apsimetu/tex/commit/25b9774c22e0b9ad5124461dd95b3ef6cb24ef9c

 

Na ir skaitomumo dėlei galim iškelti visą su aplikacijos inicijavimu susijusį kodą į atskirą failą - https://github.com/apsimetu/tex/commit/4aa5618f7e12ca2d89a3b9cc004811d93069ede0

 

 

Šiuo metu orginalaus index.php failo atitikmuo atrodytu taip:

<?php

require_once __DIR__.'/../vendor/autoload.php';

require_once __DIR__.'/bootstrap.php';

use Symfony\Component\HttpFoundation\Request;

$app->get('/', function (Request $request) use ($app) {

   $headerStats = $app['repository']->getHeaderStats();

   $numberOfPages = $app['repository']->getNumberOfPages();

   $page = $request->get('page', 1);
   $start_from = ($page-1) * 5;

   $bets = $app['repository']->getPaginatedBets($start_from, 5);

   return $app['twig']->render('index.twig', [
       'headerStats' => $headerStats,
       'numberOfPages' => $numberOfPages,
       'bets' => $bets,
   ]);

});

$app->run();

 

Tai tiek šiam kartui. Komentarai? Pull requests welcome :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ačiū alter už ilgą atsakymą, viską atidžiai peržiūrėjau, bet man dar sunku kai ką čia suprasti, kad ir pataisei :D

Bandau dabar visą puslapį statyti ant framework, iki šiol sunkiai žinojau kas tai, tad ilgas darbas gal prives prie norimo rezultato.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prašom. Silex dalis gal šiek tiek per sudėtinga pradedančiajam, bet pakeitimai orginaliam index.php faile yra gan paprasti, jei kažkuri konkreti vieta neaiški - klausk.

 

Jei nesi pratęs prie Github ar šiaip peržiūrinėti pakeitimus failuose naudojant "diff" (pvz. https://github.com/apsimetu/tex/commit/6ad798da914de5bc8df5ea1582d01796ae28c64f), gali tiesiog atsidaryti index.php failo istoriją - https://github.com/apsimetu/tex/commits/master/tex/index.php ir prie kiekvieno veiksmo spausti ant "<>" simbolio. Tokiu būdu matysi pilną failo būseną po kiekvieno pakeitimo.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prašom. Silex dalis gal šiek tiek per sudėtinga pradedančiajam, bet pakeitimai orginaliam index.php faile yra gan paprasti, jei kažkuri konkreti vieta neaiški - klausk.

 

Jei nesi pratęs prie Github ar šiaip peržiūrinėti pakeitimus failuose naudojant "diff" (pvz. https://github.com/apsimetu/tex/commit/6ad798da914de5bc8df5ea1582d01796ae28c64f), gali tiesiog atsidaryti index.php failo istoriją - https://github.com/apsimetu/tex/commits/master/tex/index.php ir prie kiekvieno veiksmo spausti ant "<>" simbolio. Tokiu būdu matysi pilną failo būseną po kiekvieno pakeitimo.

 

Aš bandau su CodeIgniter

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nekuriant naujos temos užduosiu visus rūpimus klausimus čia.

Tai vat, įmanoma kaip nors atvaizduoti visuose puslapiuose headerį su jame patalpintais duomenimis iš sql, kad nereikėtų kiekviename puslapyje atskirai jo rašyti?

 

Dabar yra tarkim:

 

	public function index()
{
	$this->load->model('main_model');
	$data['result'] = $this->main_model->get_tipsters();
	$this->load->view('template/header_view',$data);
}

 

ir tame header view:

		<?php foreach($result->result() as $row): ?>
		<div id="tipster"><a href="<?=site_url();?>/bets/author/<?=$row->name;?>"><img src="<?=$row->photo;?>" /><br /><?=$row->name;?></a></div>
	<?php endforeach; ?>

 

Ir jis veikia tik konkrečiai tame view faile, bet neveikia kituose.

Yra koks sprendimas?

Redagavo Marw
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei puslapiai bus generuojami iš to pačio controller'io, gali susikurti "konstruktorių" (klasės funkcija kuri yra automatiškai vykdoma kuriant objektą):

 

class Welcome extends CI_Controller
{
   // Masyvas kuriame laikom template kintamuosius
   private $templateData = [];

   public function __construct()
   {
       parent::__construct();

       $this->load->model('main_model');
       $this->templateData['tipsters'] = $this->main_model->get_tipsters();
   }

   public function index()
   {
       // Čia eina puslapio logika ir į $data masyva galim dėti kintamuosius
       // skirtus tik tam puslapiui
       $data['pavadinimas'] = "Index puslapis!";

       // Sugeneruojam puslapį kuris randasi /views/pages/index.php. Nerodom
       // puslapio iš karto (trečias parametras - true), bet įrašom sugeneruotą
       // HTML į $body kintamajį
       $this->templateData['body'] = $this->load->view('pages/index', $data, true);

       // Generuojam ir rodom template.php
       $this->load->view('template', $this->templateData);
   }
}

 

template.php atrodytu maždaug taip:

 

<html>
<head></head>
<body>

   <div id="header">
       <?php $this->load->view('header'); ?>
   </div>

   <div id="content">
       <?= $body ?>
   </div>

   <div id="footer">
       <?php $this->load->view('footer'); ?>
   </div>

</body>
</html>

 

Na o visi vidiniai puslapiai gali būti laikomi /views/pages direktorijoj.

 

Galbūt paprasčiau būtų naudoti kokią šablono biblioteką.

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ą...