Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz pvt.peter #11049 üzenetére
Csak azt mondom, ami hirtelen eszembe jutott, lehet, hogy lehetne még ezerszer jobb megoldással (pl. template-ezéssel).
Esetleg gyűjthetnéd egy private $tabs = array(); tömbbe a füleket (privát osztályon belüli változó), ahol a tömb kulcsai maguk a fül azonosítói lennének. Kiegészíthetnéd az addNewTabet úgy, hogy egyből a HTML-tartalmat is hozzáadod:
public function addNewTab(tabId, tabLabel, htmlContentOfTab)
Aztán lenne egy renderTabs() metódus, ami legenerálná az összes fület ciklusokkal, úgy, hogy létrehozná a megfelelő linkeket (ez egy ciklus), meg hozzácsapná az azonosítókkal ellátott diveket (ez még egy ciklus).
Az osztályon belül a private $tabs = array(); tömbbe valahogy így gyűjthetnéd ki (ami az osztályon belül így lenne elérhető: $this->tabs):
$tabs = array(
'fragment-1' => array(
'label' => 'One',
'content' => '<p>tartalom egy.............</p>'
),
'fragment-2' => array(
'label' => 'Two',
'content' => '<p>tartalom kettő.............</p>'
),
'fragment-3' => array(
'label' => 'Three',
'content' => '<p>tartalom három.............</p>'
),
);Ez csak első megközelítés, de ezt így nagyon egyszerű lenne megvalósítani. Persze gondolni kell az XSS elkerülésére is biztonsági okokból, ha WYSIWYG-jellegű admin-felület lenne a tartalom belepakolására.
[ Szerkesztve ]
Sk8erPeter
-
Soak
veterán
válasz pvt.peter #11049 üzenetére
Szia !
http://ideone.com/nUwsA ez megcsinálja azt kódot amit szeretnél (mármint a mellékelt kódrészletet) , egy osztály tulajdonságainak megfelelő számút, majd azok értékét beteszi magába a tabsba .
Szerk : A fül neve pedig a tulajdonság neve.
[ Szerkesztve ]
-
válasz pvt.peter #11049 üzenetére
Valami ilyesmire gondoltam, ehhez hasonló irányt nagyobb versenyzők is követtek, nem véletlenül. Hiba lehet benne, nem próbáltam ki, igazából egy sornyi megvalósítást se akartam írni, de így talán egyértelműbb.
---
#11050, Sk8erPeter, ezt hívják ocsmány megoldásnak, no offense.
---
#11051, Soak, az OO-val még nem kerültél közelebbi barátságba, de nagy pirospont a külön header és tab-ok legyártásáért, innen már csak egy lépés a NVI (non virtual interface, én is ezt használtam).
-
válasz pvt.peter #11093 üzenetére
Lehetne, hogy egybe rakd őket, csak akkor rugalmatlanabb a kód. Ha mondjuk most megcsinálod, amit szeretnél, és később az alkalmazásod egy másik részén is szeretnél hasonlót, de mégis kicsit más lenne pl. a body rész (akár teljesen üres, bár ennek most nem sok értelme lenne), akkor az új leszármazott osztályodban csak a _renderBody() metódust kell újraírni, minden más maradhat a helyén, feltéve, hogy nem szükséges még valami plusz hozzáadása.
Ha egybe raknád (mondjuk a Render()-be), akkor a bővítés úgy történne nagy valószínűséggel, hogy az új osztályodba bemásolnád a régi Render() kódját, és módosítgatnád pár ponton, ez nagy méretű duplikáció.
Ettől nagyobb fokú rugalmasságot pedig úgy érheted el, ha megoldod azt, amit a Render()-hez írtam a kommentbe.
-
-
-
Sk8erPeter
nagyúr
válasz pvt.peter #11150 üzenetére
JS-kódra, HTML-kódra:
http://jsbeautifier.org/PHP-kódra:
http://beta.phpformatter.com/Sk8erPeter
-
Sk8erPeter
nagyúr
válasz pvt.peter #11153 üzenetére
Szívesen! Tényleg nagyon hasznos, a PHP-s kódformázó a szintaktikai hibákat is kidobja egyből.
(#11159) Speeedfire :
utólag is lehet formázni kimenetet NetBeans-szel. Úgyhogy PazsitZ jól mondta, NetBeans ugyanúgy alkalmas kódformázásra, mint az előbbiek. Pl. létrehozol egy új (akár PHP-s) fájlt, bedobod a kimeneti HTML-kódot, és megnyomod a formázást, aztán megvan.(#11157) Speeedfire :
azért lehet jobb a PHP_EOL, mert az adott platformnak megfelelő sorvége-jelet fogja kimenetként adni, pl. \n-t vagy a Windows-os \r\n-t.[ Szerkesztve ]
Sk8erPeter
-
19.Norbika
csendes tag
válasz pvt.peter #11049 üzenetére
Javítsatok ki ha tévedek, de nem erre találták ki a DOMDocument php lib-et?
Teljes osztályspecifikáció:
[link]Új elem létrehozás:
[link]Sok php,html és programozási oktató anyag, tutorial és fórum itt:
[link]Nightvis | www.nethq.hu - html,php,js,jquery,c#,sql programozás
-
-
CSorBA
őstag
válasz pvt.peter #11215 üzenetére
<input type="reset" name="torol1" id="torol1" value="Töröl" onclick="torol('input1')"/>
Ez nem anomália, hanem a kód azt csinálja amit kell A hiba az, hogy reset az input típusa, amire a torol() eseményt kötöd. Mivel formban van, speciális dolgot csinál, vagyis alapból is resetel. Épp ezért nem szerencsés ehhez még pluszban ilyen eseményt rendelni, mert tök mindegy, hogy ellenőrzöd js-el, a reset ki fogja resetelni, mivel erre való
Így jó lesz:
<input type="button" name="torol1" id="torol1" value="Töröl" onclick="torol('input1')"/>szerk.: Offba raktam, mert ez nem a Javascript hanem a PHP topic.
[ Szerkesztve ]
-
-
Sk8erPeter
nagyúr
válasz pvt.peter #11381 üzenetére
Használd az "u" modifiert, úgy már nem cseréli le kettőre. A patternben meg ez is elég:
/(?:[^A-z\d\.-])/Példa:
$pattern = '/(?:[^A-z\d\.-])/u';
$replacement = '_';
$subject = 'teniszütő akármi lálálá ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP';
echo preg_replace($pattern, $replacement, $subject, -1);Eredmény:
tenisz_t__ak_rmi_l_l_l___RV_ZT_R__T_K_RF_R_G_PSzerk.: magyarázat:
Itt vannak a modifierek: [link]
az említett modifier:
"u (PCRE_UTF8)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5."[ Szerkesztve ]
Sk8erPeter
-
sztanozs
veterán
válasz pvt.peter #11584 üzenetére
XSS ellen nem vééééd, de ... paraméterezett lekérdezés - és nem kell semmit ellenőrizni, escapelni és trükközni.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
válasz pvt.peter #11767 üzenetére
Alapötletként ezt tudnám javasolni:
<?php
class View {
private $_file;
public $Data;
public function __construct($viewFile, array $data) {
$this->_file = $viewFile();
$this->Data = $data;
}
public function Render() {
require $this->_file;
}
}Ebben az esetben, a view fájljában hozzáférsz a $this-hez, így eléred a $Data-t is benne:
<ul>
<?php
foreach ($this->Data["rows"] as $object) {
echo "<li>";
echo $object->Name;
echo "</li>";
}
?>
</ul>Nehogy sima query result-ot adj a view-nak! Csak sima bejárható kollekciókkal szabad dolgoznia, amelyekben objektumok vannak.
Ne használd a mysql_ cuccokat. Válaszd a mysqli_-t vagy inkább PDO-t.[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz pvt.peter #11778 üzenetére
"Amennyiben hozzáadtunk új beviteli mezőket akkor bizony az oszlopok nem fognak megegyezni. Tehát vmilyen módon bővíteni kellene a meglevő struktúrát"
Ez nem túl jó ötlet. Ha valaki rosszindulatúan, vagy csak szórakozottságból hozzáad még 30 textfieldet, akkor annyival több meződ lesz az adatbázisban, ahol meg ezek nincsenek kitöltve, ott mind NULL érték lesz, tök feleslegesen?
Vagy nem értem, mi a cél ezzel, mi benne a ráció, szerintem ez rossz tervezés.
Nehéz általános receptet adni, sztem jobb lenne, ha a konkrét célt írnád le (milyen célra kell nyilvántartani az adatokat, stb.), úgy könnyebben tudnánk konkrét ötletet is írni.(#11771) blacee :
ez az elérési út létrehozására vonatkozó instrukció elég furcsa "megoldásnak" tűnik valóban, kétlem, hogy ez lenne a helyes út.
Nem tudom, OpenWrt-s cuccra nem raktam még fel webszervert és PHP-t, nem próbáltam, de itt konkrét leírások vannak:
http://wiki.openwrt.org/doc/howto/php
ez konkrétan Lighttpd-re:
http://wiki.openwrt.org/doc/howto/http.lighttpd#configuring.lighttpd.and.php5
Ez alapján sem sikerül?[ Szerkesztve ]
Sk8erPeter
-
oleslie
aktív tag
válasz pvt.peter #11780 üzenetére
Én ha nem akarnám indexelni/keresni az újonnan felvett oszlopokat (csak tárolni az adatokat), akkor az ilyen bővíthető adatokat egy `TEXT` cellában tárolnám, az adatokat pedig serialize/unserialize. És nem piszkálnám a tábla szerkezetét.
[ Szerkesztve ]
Egyszerű életet élek. Ami üres megtöltöm, ami tele van kiűritem
-
cucka
addikt
válasz pvt.peter #11780 üzenetére
Nem szeretném, hogy úgy tűnjön, leugatok a magas lóról, de ez az elképzelés úgy szar, ahogy van. Egyszerűen felejtsd el, nem lesz jó, nem fog működni, sz*pni fogsz vele.
Ezt a feladatot úgy oldod meg, hogy 1 helyett 2 táblád van: az egyikben vannak a személyek, a másikban meg a személyek extra mezői. Így tetszőleges számú extra mezőt felvihetsz tetszőleges számú személyhez.[ Szerkesztve ]
-
-
sztanozs
veterán
válasz pvt.peter #12042 üzenetére
google, első találat...
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
DNReNTi
őstag
válasz pvt.peter #13428 üzenetére
Szia,
Ez is sima php mysql_ parancsokat használ, csak létrehoz egy "Database" osztályt benne függvényekkel, amelyekkel a későbbiekben könnyebben lehet boldogulni. Ezzel tehát nem kerülöd ki a mysql_ parancsok használatát.but without you, my life is incomplete, my days are absolutely gray
-
Sk8erPeter
nagyúr
válasz pvt.peter #13428 üzenetére
Igazából azt pötyögted be, ami kommentekben is megtalálható, túl sok új nincs benne. Ez a query1(), query2() elég mágikus név, mit akarsz vele megvalósítani? Mindenesetre már az elnevezés is rossz. De legfőképp az, hogy fel akarod fedezni a spanyolviaszt: ne akarj n+1-edik adatbázis-kommunikációs wrapper osztályt csinálni, ott a mysqli és a PDO, valamint remek ORM-ek vannak. Írtad, hogy a mysql_ függvények használatára vagy kényszerítve, de ezt az érvet sajnos nem tudjuk elfogadni. Tehát minimum mysqli vagy PDO, a mysql_ kezdetű függvények használatáról 2013-ban már nincs is értelme beszélni.
Volt már korábban itt egy (v. több) hitvita a topicban, hogy Singleton-minta jó-e vagy sem, a vége az lett, hogy több érv szól a nem mellett (itt olvashatsz róla többek közt: [link], meg persze a topicban, a Singleton szóra rákeresve).Sk8erPeter
-
válasz pvt.peter #13428 üzenetére
Semennyire. A csatlakozáshoz szükséges adatok tárolói mind private-ok, hol lehet őket beállítani? Konstruktorban csatlakozik a szerverhez (miért is?), de be lehet zárni menet közben a kódban, így a későbbi részek meg is haltak, ha használni akarják. Állapotot tartalmazó cuccok nem lehetnek static változóban sosem. Ennél durvább már csak az lehetne, ha ehhez hasonló kóddal perzisztens kapcsolatokat használna valaki.
Ha jól emlékszem, a mysql nem is tud SQL tranzakciókat kezelni.
@Sk8erPeter
Van értelme wrapper-t csinálni, mert a mysqli és a PDO még nem az, illetve mind a kettő ocsmányul néz ki, plusz sosem tudhatod, mikor mondják azt, hogy PDO nincs, csak mysqli, akkor cserélhetsz mindenhol mindent, emellett meg tudja könnyíteni a tranzakciókezelést, be tudsz szúrni pl. PDO driver-specifikus beállításokat, ilyesmi.
Új hozzászólás Aktív témák
- Milyen autót vegyek?
- MasterDeeJay: Volta a bányából azaz CMP 100-210 kisteszt (Tesla V100 mining)
- Telekom mobilszolgáltatások
- Kertészet, mezőgazdaság topik
- exHWSW - Értünk mindenhez IS
- Facebook és Messenger
- EAFC 24
- Házimozi haladó szinten
- OLED TV topic
- Székesfehérvár és környéke adok-veszek-beszélgetek
- További aktív témák...
- LG NanoCell 55NANO766QA Halvány píxel csík
- Philips 58PUS8545/12 1 ÉV GARANCIA Játék üzemmód
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5