Új hozzászólás Aktív témák
-
PazsitZ
addikt
válasz
Swifty #11870 üzenetére
Valóban, nem szólítottál meg.
Elnézést kérek, nem gondoltam át ezt a dolgot, csak sebtiben belevágtam a válasz linkbe. Így történhetett az meg, hogy reagáltam a hozzászólásodra.
Becsszó, ígérem vigyázok, többet iylen ne történjen.U.i.: Semmit nem vettem magamra csak kifejtettem, hogy nem értek egyet és kérdést fogalmaztam meg, amire látom nem megy a válasz. Jah, de persze, hát nem szólítottál meg.
-
PazsitZ
addikt
válasz
Swifty #11852 üzenetére
Nem értem miért ne lenne helye elméleti tervezési kérdéseknek is akár?
Vagy csak az szabad kérdezni, hogy ez az error message, melyik sorban miért van szintaktikai hibám?
Nem szabad osztályokkal megoldani egy problémát, tervezési minta alapján levezetett megoldást adni, mert az már nem ez a topik?
Akkor melyik is az a topik?Már felvetődött párszor és talán tényleg idegesítőbb azt beírni minden héten, hogy a 3 mezős formot, hogy kell letárolni.
És légy oly szíves nem kiforgatni a szavaimat. Én is voltam kezdő, amit most megfogalmazok egyáltalán nem erről szól. De kérdései -remélem belátható- nem csak a kezdőknek vannak és talán nem mindenki a feladatot éppen ellátó legprimitívebb megoldást várja.Én lassan emiatt a hozzáállás miatt fogom törölni már az értesítést erről a topikról, bár már eddig is egyre-egyre hanyagoltam az olvasását...
-
PazsitZ
addikt
ha itt minden sorban van két interface meg osztály akkor egy olyan hiba (vagy fejlesztés) ami amúgy egy logikus kódnál 3 óra, itt 2 nap
Megfelelő tesztekkel, rögtön ki kell, hogy bukjon a hiba helye. Ilyen szempontból pont jól beazonosíthatóan, mivel a felelősségi körök szét vannak osztva. Az interface pedig pont egyfajta contract, ami alapján az együttműködést lehet biztosítani.
A szar, logikátlan kódtól persze az OOP sem véd meg egyáltalán, de ezt senki nem állította.százezer (millió) sor
Olyan pedig pont nem létezik, hogy egy teljes rendszert részletesen, véglegesen lespecifikáljanak neked.
Tehát az esetek többségében, úgyis fejlesztési iterációk vannak, ezáltal pedig úgyis vagy aránylag rugalmasan oldod meg a dolgokat, vagy refactorálhatsz.az emberek számára kell azt logikussá tenni és könnyen átláthatóvá.
Itt nem tudom mire gondolsz, mi a nem logikus kód számodra.Jelentősen többet kódolok
Én pont nem azt írtam, hogy jelentősebben többet kódolj.A nem jól tesztelhető kódot, hogy tudja rendesen kitesztelni a megfelelő ember?
Én itt egy kis ellentmondást érzek. Avagy a kitesztelés nem az én gondom, oldja meg más, ahogy akarja?
Egyébként a rosszul tesztelhető kód a legtöbb esetben egy jelzés lehet a kódra nézve. -
PazsitZ
addikt
Alapvetően abban egyetértek, egy házi 2 formos php kódot, lehet felesleges OOP-ben megírni.
Továbbá, ha már adott is egyegyszerűbb kód, felesleges egy csv felolvasást köré 5-10 osztályt felhúzni.Viszont, ha én kezdenék bele, akkor már fognék egy framework-öt, ami segítségével oldanám meg a dolgokat.
Alapvetően a PHP-s framework-ök is OOP irányba mennek, amit az én észrevételeim alapján a nyelv is egyre inkább támogat.
Abban van igazság, hogy ez script nyelv, de ettől még nem a register globals és levegőbe lógó függvények szempontjából kell használni szvsz.Amennyiben pedig elkezdesz egy OOP framework-kel dolgozni, akkor viszont igenis namespace és osztálystruktúrát kell használni, nem kavarni a dolgokat.
A TDD hasznos dolog, kellő rálátás esetén jobban ki is kényszeríti a szebb kódot, SRP-t, amiből már könnyen jön a panaszolt "overgeneralization".
(#11820) Soak:
Egyébként nem olyan könnyű eltalálni a balanszot.
Egyik oldalról ott van az a szabály, hogy csak a kért feature-t fejleszd, ne űrhajót.
Másik részről viszont rá lehet/kell érezni, mi az, ami a következő iterációban biztos be lesz rendelve. Ebben az esetben pedig nem árt, ha kicsit előre gondolkozva tervezel, kellő mértékben absztrakt a kódod, hogy ne kelljen szétdúrni és gyors-hatékony lehess. -
PazsitZ
addikt
Bár sok mindent írtál, már nem tudom mire írtad, mire nem, a sehol sincs hiba válaszokat.
sql error-t, csekkoltad?
Nincsenek extrém méretű field-ek? Mert ekkor ha jól tudom számíthat a max_allowed_packet Bár ezt a hibát dobnia kell az sql-nek.A megfelelő formátumú a fájl az importhoz?
FIELDS: TERMINATED, ENCLOSED, ESCAPED
LINES: STARTING BY, TERMINATED
argumentumok biztos helyesek?
pl.: \r\n vagy csak \n sorvég szerepel a fájlban? -
PazsitZ
addikt
válasz
Sk8erPeter #11388 üzenetére
Tipp: localban 1-2 sor van a tábládban a szerveren meg 100-200 ezer.
De ezt így távolról senki nem fogja tudni megmondani neked.
Senki nem tudja mit, mivel, mikor, miért, kérdezel le, futtatsz, iterálsz, sokszorozol, az alkalmazott külső modulokról nem is beszélve. -
PazsitZ
addikt
válasz
DelArco #11366 üzenetére
Szerintem simán mehetne a dolog sql-ben.
INSERT INTO db5.table (
(SELECT db1.table.f1, db1.table.f2, ... FROM db1.table WHERE db1.table.x = x)
UNION
(SELECT db2.table.f1, db2.table.f2, ... FROM db2.table WHERE db2.table.y = y)
...
ORDER BY RAND()
);Bár az ORDER BY RAND() elég jó terhelést jelent, hosszasan futhat, de ezt úgyis csak egyszer lövöd el generáláskor.
Ez az insert rendezés mondjuk elhagyható, pl. utólag mondjuk a generált táblához hozzárendelsz egy random értékekkel feltöltött indexelt mezőt és lekérdezéskor az lesz az elsődleges rendezési szempontod, minden lekérdezés esetén. -
PazsitZ
addikt
Ne vedd támadásnak, de érdemes lenne átfutnod egy alap HTML tutorialt.
[link] a name attributumot be kell állítani az input tagnek, hogy megkapd mint post-olt adatot. Esetedben ha jól látom mozgastetel_id kell, hogy a name attributum legyen.
<input type="hidden" value="<?php=$sor['mozgastetel_id']?>" name="mozgastetel_id">De jelen esetben ha listát használsz az azonos input nevek nem fognak működni.
A listád esetében inkább egy törlés linket tudnék elképzelni, ami a legegyszerűbb megoldás lehet. Ekkor viszont GET-el kaphatod meg az id-t. -
PazsitZ
addikt
válasz
DelArco #11301 üzenetére
Én személy szerint őszintén sajnálom, ha bármely reakcióm támadólag hatott, csak nem értem miért foglalkoztat ez.
Egyébként nem rémlik, hogy bármilyen kérdést megtiltottam volna, egyrészt jogom sincs erre, másrészt amúgy se tenném.De én tényleg nem értem. Engem sosem foglalkoztatott, különösebben eszembe se jutott, bár valahol úgy rémlik láttam már ékezetes változónevet, de már nem tudom hol.
Amúgy ami még inkább fura volt, hogy belinkeltél egy oldalt, ahol konkrétumok vannak leírva, miért nem szerencsés.
Csak az első ottani hsz-ben - pill, összeszámolom - 2 technikai buktató és 1 szakmai kommunikációs akadály magyarázata van leírva.
Ezért is még inkább érthetetlen számomra milyen választ vársz még?Az meg megint csak ott is, itt is le lett írva, lehetséges a használata, de nem ajánlott.
-
PazsitZ
addikt
válasz
DelArco #11287 üzenetére
Nem tudom mit vársz, felteszel egy kérdést, amit önmagad egy linkkel megválaszolsz.
Erre írjuk, hogy ott van a linkben a válasz, felmerült itt leírt példa is.
Mit vársz még? Tovább megyek, ha nem akarod használni, minek érdekel egy ilyen szélsőséges érdektelen probléma/kérdés? -
PazsitZ
addikt
válasz
DelArco #11282 üzenetére
Lehetni lehet.
De a szabványok nem viccből vannak kitalálva. Ettől függetlenül elvileg lehet ciril betűs kódot is írni, meg magyar ékezetest is, csak nem érdemes.Egyébként már pont a linked első hozzászólásában van 1-2 példa miért nem biztos, hogy ez jó ötlet.
Az az érv, hogy te magyar vagy és nem tudsz angolul, meg szebb a magyar ékezetes szöveg, hát hogy is mondjam..., inkább nem mondom
.
-
PazsitZ
addikt
válasz
Speeedfire #11157 üzenetére
Valóban még nem árt egy mentést nyomni a formázás után.
Na most, én egy html kimentet láttam. Az, hogy ezt php-val, java-val, vagy bármivel tolod ki lényegtelen. Nem is látok konkrétan semmiféle echo vagy php említés a hozzászólásban.
A \n, \t, whitespace az a kódban eredményez sortörést, tabulálást ..., a korábban általad említett <br> pedig a böngésző értelmezésében új sor/sortörés.
Én úgy láttam kódformázásról van szó és azt akarja sortöréssel ellátott-identált formába hozni.Szóval nem értem a problémádat.
-
PazsitZ
addikt
válasz
Peter Kiss #10954 üzenetére
Gondolom olyasmit akarsz, hogy feltöltesz több fájlt és már feltöltés folyamata közben már nevet is adsz nekik.
Gyakorlatilag egymulti uploader-re van szükséged pl. uploadify
Itt a server oldali válaszban visszaadod a lemetett kép id-ját url-jét, nevét.
Majd az uploadSuccess event függvényében megvalósítod, hogy a feltöltött kép esetén bepakolsz egy thumb-ot egy form inputot a név értékkel és a kép_id name-el.
Ezután az oldalon lévő formot elposztolva, már kész van a képek elnevezése, esetleg további paraméterek beállítása.Már ha ilyesmire gondoltál...
Szerk.: (#10955) Soak: úgy néz ki nem ilyenre gondoltál
-
PazsitZ
addikt
válasz
SektorFlop #10924 üzenetére
Autocomplete lesz a te barátod. Mondjuk pl. a jquery-s megoldás: [link]
-
PazsitZ
addikt
válasz
Sk8erPeter #10863 üzenetére
Mondjuk ilyesmit első gondolatra pl. xml-ben küldenék, bár igaz pazarló formátum, de könnyen kezelhető.
Nagy adat esetén bizonyos méret, query sor után csak simán flush-olnám az adatot a php://output -ra.szerk.: Bár ha nagy az adat feldolgozni, meg megint csak memóriaigényes.
Egyébként meg ugye kérdéses milyen query-t akar futtatni, de sima lekérdezés esetén elég pár paramétert átadni (select, from, where, ...) és simán felépíthető a query.
-
PazsitZ
addikt
válasz
Sk8erPeter #10836 üzenetére
Gondoltuk, hogy te nem tudod, mikor még a php.php-t sem ismered
-
PazsitZ
addikt
válasz
trisztan94 #10695 üzenetére
Most picit sarkítva gyakorlatilag az OKJ papír semmit nem ér.
Ha van mögötte tudás, akkor ok, bár pont ekkor már mindegy, hogy van okj papírod vagy nincs.
Na most ingyenes képzésként még rendben van, de így.
Ha meg már ennyi pénzt kidobnak az ablakon, akkor legalább igyekezett volna tanulni.
Nem értem az ilyet. -
PazsitZ
addikt
válasz
Lacces #10673 üzenetére
itt talán az url-ben lévő port-al lehet a gond. file_get_contents egyébként se távoli elérésre találták ki.
Szvsz. a Curl szerintem megoldaná ezt a gondot CURLOPT_PORT opció használatával. -
PazsitZ
addikt
válasz
CSorBA #10669 üzenetére
Nekem nem jut eszembe ilyen alakra alap függvény vagy megoldás.
Csak az általad is említett regexp vagy nem oylan szép explode-trim ügyeskedés.
$string = 'string[66]';
$array = preg_match('#(\w+?)\[(\d+?)\]#', $string, $match);
$resultArr[$match[1]] = $match[2];$string = 'string[66]';
$array = explode('[', $string);
$resultArr[$array[0]] = trim($array[1], ']'); -
PazsitZ
addikt
válasz
trisztan94 #10375 üzenetére
$fh = fopen($dir . $felh . $datum['year'] . $datum['mon'] . $datum['mday'] . '.txt','w');
A tömb string indexeivel van baj.
-
PazsitZ
addikt
válasz
Sk8erPeter #10270 üzenetére
Ha létezik a kép, miért hozod létre újra (ezzel növelve a szerver terhelést)?
header('Content-Type: image/jpeg');
readfile("test.png");(#10275) Soak tudjam, hogy a képet hányszor töltötték be
Akkor viszont mégiscsak a php-n keresztüli kép megjelenítés az optimálisabb szvsz.
Bár igazából az a kérdés számt-e, ha külön megnyitja a képet. -
PazsitZ
addikt
válasz
RootRulez #10239 üzenetére
Ilyen esetben én akkor már tömböt használnék:
$filename = dirname(__FILE__) . '/links.txt';
if (isset($_GET['add']) && !empty($_GET['link'])) {
if (file_exists($filename)) {
$links = unserialize(file_get_contents($filename));
} else {
$links = array();
}
echo 'put: ' . $_GET['link'];
$links[] = $_GET['link'];
file_put_contents($filename, serialize($links));
} else if (isset($_GET['get'])) {
$links = unserialize(file_get_contents($filename));
if (count($links)>0) {
$key = array_rand($links);
$link = $links[$key];
unset($links[$key]);
echo "<a href=\"{$link}\">{$link}</a>";
file_put_contents($filename, serialize($links));
} else {
echo 'nincs link';
}
}
Hozzáadhatsz: link.php?add&link=http://prohardver.hu
Kiolvasás és törlés: link.php?get -
PazsitZ
addikt
válasz
Sk8erPeter #10232 üzenetére
Azért kipróbáltam, hátha mégis én írtam elsőre fejből hülyeséget, de úgy tűnik nem.
Nálam kiszed mindent, ami nem betű, szám vagy alulvonás.
Bár, ha csak másmilyen karakterből áll a fájlnév, akkor tényleg üres lesz. -
PazsitZ
addikt
válasz
trisztan94 #10167 üzenetére
Amint írtad, az adott oldal alapvetően bejelentkezés alapú.
Ebből kifolyólag az adott belépési módon kellene az adott html-t is "levédeni".mod:
Közben látom született új hsz.
Ha máshol, azaz a bejelentkezés is ezen az alapon működik, akkor passz.
Alapvetően a bejelntkezéshez is le lehet rakni-vizsgálni ugyanúgy egy user kulcsot cska akkor az a $_SESSION tömb lesz. -
PazsitZ
addikt
válasz
papa019 #10158 üzenetére
Kiváló példa, adott is az sql injection.
A $category változóban lévő "--" karaktersorozat miatt az értelmező a query további részét kommentnek veszi, így az inserted hibás.
Ezért kell vagy önmagában escapelni a megfelelő karaktert, vagy a javasolt pdo megoldást használni.
Plusz, továbbá, amint látom a $result változód ráadásul még üres is és mivel még aposztróf között sincs így ezzel egy újabb szintaktikai hibához értünk. -
PazsitZ
addikt
Adott unix time érték php-ban és mysql-ben is ugyanaz a unix time.
De használható, az sql UNIX_TIMESTAMP() function is akár. -
PazsitZ
addikt
Ez nem rossz programozó, hanem egy kókler vérpistike.
A leírtak alapján a kérdéses személy, megrekedt a php24 óra alatt könyv szintjén. Ez mondjuk 1 hónap után nem gáz, de több év alatt, igazi teljesítmény, hogy semmi nem ragadt rá.Tény, hogy a kezdeti tanulási ideje rövid a nyelvnek és a nyelv lehetőségei is adottak a gányoláshoz, azáltal ki is termeli a tehetségtelen kóklereket, sajnos.
Na pont az ilyenek májer balf@szok miatt van meg a php fejlesztőkről az általános lenéző vélemény.
-
PazsitZ
addikt
Alapvetően igazad van.
Visszaolvasva mondjuk tényleg hülyeséget írtam ezzel. Akkor page változóban lesz az nike érték.
De a fent említett hiba, hibaüzenet nem emiatt van.(#9969) bazsi44 :
Én mondtam, hogy ne csak másolj
CTRL+C, CTRL+V veszélyes jószág(#9973) Sk8erPeter:
Nem tudom követni ezt a szerkesztgetéses tempót -
PazsitZ
addikt
válasz
bazsi44 #9960 üzenetére
Egyébként elírtam:
echo '<div>'. $result['description'] . '</div>';
helyett:
echo '<div>'. $row['description'] . '</div>';Bár a jelenlegi hiba nem emiatt van, egyébként tényleg nem kötözködés, csak ne csak másold, hanem értsd is meg, amit írsz.
Feltehetőleg valami a lekérdezéseddel van, mert nem resource-t kapsz vissza.
próbáld lekérni mi a hiba:echo mysql_errno($link) . ": " . mysql_error($link) . "\n";
Magyar leírás: [link]
-
PazsitZ
addikt
válasz
bazsi44 #9954 üzenetére
Ha jól értem a kérdést: mondjuk az urlt így adod meg: webshop.php/?page=nike
Akkor page változóban lesz az nike érték.
A kódban ezután pedig eldöntheted melyik tartalmat jeleníted meg:if ($page == 'nike') {
$result = mysql_query("SELECT * FROM table WHERE name='nike'");
} else {
$result = mysql_query("SELECT * FROM table WHERE name='adidas'");
}
while ($row = mysql_fetch_assoc($result)) {
echo '<div>'. $result['description'] . '</div>';
}Az url szépítéséhez meg htaccess, és vagy url routing használható.
-
PazsitZ
addikt
válasz
Sk8erPeter #9932 üzenetére
Valóban érdekes probléma
$date = new DateTime();
$date->modify('last day of next month');
$nextMonth = $date->format('Y-m-d H:i:s');
$nextMonthLastDay = $date->format('d');
echo "$nextMonth";
echo "$nextMonthLastDay";Ha $date->modify('1 month'); kódot próbálod az feltehetőleg az aktuális/kiinduló hónap napszámát adja hozzá, ami 31 így produkál 7. hónap elsejét, aminek azután a napszáma már ugye 31.
-
PazsitZ
addikt
válasz
Speeedfire #9905 üzenetére
Ha már bejelntkezett userről van szó miért nem állítod be belépéskor a setState-el hogy a user isAdmin true vagy false. Bár ekkor még implicit nincs lekezelve a belépett kilépett kérdés, de jobb esetben ezt önmagában rbac szabályokkal gondolom lekezeled a controller hívás előtt.
Jah most olvasom csak végig, hogy gyakorlatilag Athlon64+ is ezt javasolja.
(#9911) Athlon64+:
Azért a singleton se ördögtől való dolog. -
PazsitZ
addikt
válasz
Speeedfire #9897 üzenetére
Nem hiszem, hogy bármiféle performasz jelentősége lenne, mármint amit bármilyen szinten képes vagy érzékelni.
Most az, hogy tegyük fel egy millás iterációban egy ezreddel lassabb hagyjuk.
Bizonyos esetekben teljesen praktikus dolog. Persze agyatlanul felhalmozni, komplex kifejezéseket közé sűríteni értelmetlen, csak arra jó, hogy olvashatatlanná teszi a kódot.A tömör formája kiváltképp megnyerő szvsz. Bár ez csak 5.3+ feature.
$var = $value ? : $otherValue; -
PazsitZ
addikt
válasz
Speeedfire #9894 üzenetére
Hát, hogy pontosan mi akar lenni az jó kérdés, de minimum erre jó a kód törés indentálás.
De mondjuk ilyen szintű dolgot, már sokkal értelmesebb lenne normál if szerkezetre bontani, De talán leginkább máshogy kezelni a problémát szvsz.(($field->widgetView($profile))
? $field->widgetView($profile)
: CHtml::encode(
(($field->range)
? Profile::range(
$field->range,
$profile->getAttribute($field->varname)
)
: $profile->getAttribute($field->varname)
)
)
) -
PazsitZ
addikt
válasz
Speeedfire #9876 üzenetére
Szerintem csak egy utf-8 header kellene.
header('Content-type: text/plain; charset=utf-8'); -
PazsitZ
addikt
válasz
Speeedfire #9725 üzenetére
Mondjuk tegyük fel egy postot akarsz törölni.
Akkor mondjuk főleg ha külön van bontva a post kezelés modulra, tökéletesen jól megvalósítható a post module-ban a törlés funkció, amit azután a modul betöltésével (ami behúzza a szükséges modulokat is automatikusan)Vagy másik megoldás lehet, hogy pl. a post module delete metódusát felülírod. Így a post törlés elintézi a járulékos adat törlését is. Ez akár tranzakcióba is rakható természetesen.
public function delete()
{
$postInfo = PostInfo::model()->findByPk($this->post_id);
if ($postInfo->delete()) {
parent::delete();
}
} -
PazsitZ
addikt
válasz
Speeedfire #9719 üzenetére
Igen, a Yii sajnos nem úgy van megírva, hogy eléggé támogassa az autocomplete lehetőségeket.
Kommentezéssel tudsz segíteni pl. query-k esetében pl. a find-os fgv-ek ugye csak CActiveRecord-al térnek vissza, nem a konkrét modellel. Így az ősosztály CActiveRecord fgv-eket ki tudja egészíteni, de a konkrét model tagokat viszont nem.
A Yii::app()->getModule('module'); is csak általános CModule-al tér vissza.Az ilyen változók esetén a kommentelés segíthet.
$user = User::model()->findByPk(1); /* @var $user User */
$userModule = Yii::app()->getModule('user'); /* @var $userModule UserModule */
Ezután már ki fogja tudni egészíteni, ha a függvényeket is annotációs phpdoc-al látod el.Fontos, hogy az értékadás után legyen (ha elé teszed ki a változó deklarálás ugye felülírja a komment változó hint-et) és csak /* -al kezd az ilyen kommenteket.
Ha osztályt, osztályváltozót, metódus akarsz kommenttel ellátni, ott már a /** alakkal kezdődő komment kell! -
PazsitZ
addikt
válasz
Speeedfire #9712 üzenetére
Persze
A Yii-nél a model() egy static osztálypéldáyosítás.
lásd pl. singleton pattern esetén. is static hívással pédányosítod az osztályt (persze ott a lényeg, hogy mindig csak egy objektum példány létezik).Lényegében ez egy shortcut. a példádban is első eset 2 sor második egy sor és rögtön fűzhető a query. sőt, mivel mindegyik query építő AR model fgv. az objektummal önmagával tér vissza így szépen fűzhetőek a hívások.
Modelnev::model()
->with('masikTabla')
-> ...
->findbypk(2);PHP 5.4-től viszont már lehet többek között majd ezt is:
(new Modelnev)->findbypk(2);De végiggondolva a static fgv. hívás valahol jogosan megengedhető akár példánycontext felől is.
$keresendo_elem = new Modelnev;
$keresendo_elem->model();
Modelnev::model();Mivel a static fgv nem függ az objektumtól miért ne lehetne hívni objektumból?
Visszafele nem igaz, mert egy objektum állapotától adattagjaitól függő metódust meghívsz egy osztályra, ami nem példány, akkor ugye mit kezdjen a method a nem létező példánytagok nélkül? -
PazsitZ
addikt
válasz
Speeedfire #9709 üzenetére
Nem static függvényt nem hívhatsz static-ként.
Ha nem használsz semmi onjektum adattagot vagy nem static hívást, akkor viszont nyugodtan static-ra teheted a fgv-t.Fordítva működik a dolog úgy rémlik.
Példányosított onjektumpéldányból hívhatsz static fgv.-t.class Bar{
public static function staticfgv(){}
public function objMethod(){}
}
$foo = new Bar();
$foo->objMethod();
$foo->staticfgv();
// vagy
Bar::staticfgv();De végiggondolva a static fgv. hívás valahol jogosan megengedhető akár példánycontext felől is.
Míg fordítva nem, mivel optimális esetben a fgv. igényel objektumadattagokat. -
PazsitZ
addikt
válasz
Speeedfire #9643 üzenetére
A tortoisesvn verziód amúgy milyen, nem lehet, hogy az a túl régi?
-
PazsitZ
addikt
válasz
Speeedfire #9592 üzenetére
Egyébként ott van a link a megoldáshoz.
Egy script, amit le kellene futattnod a mivel az új verzióban megváltozott a metadata fájl. -
PazsitZ
addikt
válasz
Sk8erPeter #9366 üzenetére
mindig kötelező lekérnie a szerveroldalról az ÖSSZES cikket Nem.
Erre írtam, hogy: (persze a direkt linkhez kell az egy cikket megjelenítő action)ettől még mindig nem tudta mondjuk elküldeni az ismerősének De.
Erre írtam a javítás-kiegészítést, hogy ha linket mentesz, új ablakban nyitsz, google crawl-ol, meglegyen a single cikk link is.
De ez csak egy szimpla ötlet volt, hogy ajax hívás nélkül is meg lehet oldani, ha a listában teljes content van. De persze jóval egyszerűbb berakni a szimpla linkeket is és nem kell ajaxozni vagy js-ezni.De csak a tisztázás végett: nem kell úgy csinálni, csak feldobtam, hogy így akár is lehet.
(#9369) Sk8erPeter: no problem
-
PazsitZ
addikt
válasz
Sk8erPeter #9363 üzenetére
Ha jól értettem, az volt a kiindulópont, hogy meg akarja jeleníteni listaszerűen felsorolva és különállóan is.
Ha már az oldalon van a 5 cikk content, akkor meg minek újra lekérni? Persze le lehet.
- Egy rész amit írtam kliens oldalt terhel, nem szervert, nem tudom ez neked honnan jön.
- Másrészt, nem egy blokk mozgatás és 2 div display css switch fogja kinyírni a js motort még egy akár ie6-ban sem.Ha a php kódra gondolsz:
Az, hogy most oldalakra tördelve 5-öt vagy 6-ot jeleníti meg vagy mittoménhogy' azt már ő tudja. Irtam is pszeudokódként kell értelmezni, ami kódot leírtam.Most vagy a te problémádat nem értem vagy egyiket se.
Ha valamit nagyon félreértettem volna szóljatok és törölöm a hsz-eket. -
PazsitZ
addikt
válasz
spammer #9359 üzenetére
Egyszerű példa (vedd pszeudokódnak) :
CikkModule.php
{
static function getCikkHTML($cikkId) {
...
}
}CikkController.php:
{
public function cikkekAction(){
foreach($cikkek as $cikk){
echo CikkModule::getCikkHTML($cikk->cikk_id);
}
}
public function cikkAction($cikkId){
echo CikkModule::getCikkHTML($cikkId);
}
}vagy még egyszerűbben listaoldalon ajax hívás nélkül (persze a direkt linkhez kell az egy cikket megjelenítő action):
<div id="cikkek">
<div class="cikk_1"><a onclick="showCikk(1);"></a></div>
<div class="cikk_2"><a onclick="showCikk(2);"></a></div>
</div>
<div id="cikk" style="display:none;"> <a onclick="closeCikk();"></a></div>
<script>
function showCikk(id){
$('#cikk').html( $('#cikk_' + id).html() ).show();
$('#cikkek').hide();
}
function closeCikk(){
$('#cikkek').show();
$('#cikk').hide().html('');
}
</script>Bár megjegyzem pont Yii-ben van rá példa, hogy az egész page contentet lekéri az ajax és csak a megfelelő tartalmat illeszti be sima jQuery selectorral. pl.: $('.cikk_2', '#cikkek').html();
-
PazsitZ
addikt
válasz
Speeedfire #9254 üzenetére
Hozzárendeled egy könyvtárhoz a létező üres repo-t.
Bemásolod, add-olod, majd commit-olod a fájlokat. -
PazsitZ
addikt
válasz
InfiniteReality #9251 üzenetére
Szóval legyenek controllerként viselkedő fájlok, ők küldjenek session, theadert.
Legyenek modul/komponens fájljaid, amik adatot szolgáltatnak.
Ez lehet akár csak DB adatprovider, de kész html tartalmat is adhat, ha úgy jobb neked.
Ezeket, azután akár mindkét controller fájlban használhatod. -
PazsitZ
addikt
válasz
Dave-11 #9244 üzenetére
Ha jól értem az ellenorzes.php-ra áriráníítod a user, nem pedig includolod más fájlba.
Nézd, meg, hogy nincs-e whitespace a <?php nyitó tag előtt.
Ha nincs, gondolom ez az eset áll fenn, akkor én BOM karakterre tippelek. [link](#9249) InfiniteReality:
A kukac használata nagyon egyszerű, de hatalmas szíváshoz vezethet a későbbiekben, amikor majd órákig keresed, valami miért nem működik.Ha egy runtime során kétszer hívsz session_start-ot, akkor szvsz gondold át a kódodat, még párszor.
Ha jól értelmezem a problémád:
ajax, nem ajax, az index.php-tól kérem a tartalmat.
Hogy ajax kérést szolgálok-e ki azt mondjuk akár a kódban is eldönthető, de paraméterből is vezérelheted.
Így az oldalak.php-be nem kell session. -
PazsitZ
addikt
válasz
Brown ügynök #9238 üzenetére
$c->{$route["action"]}();
De Sk8erPeter megoldása is tökéletes.Személy szerint azért egy method_exists vizsgálatot el tudnék oda képzelni még.
-
-
PazsitZ
addikt
válasz
Sk8erPeter #9036 üzenetére
Ubi hibái főként gondolom abból adódnak, hogy sok unstable debian package-et is használnak.
Meg sok third-party package is van hozzá. -
PazsitZ
addikt
A yii-t ahova felraktad ott van a framework könyvtárában van egy yiic futtatható fájl, windows alatt yiiic.bat
Ezt hívod meg, első paraméterként megadva, hogy webapp webes alkalmazást akarsz, második paraméterként pedig, hogy hova szeretnéd kigenerálni, az alap webapp könyvtárat.
Szóval:
/framework_utvonala/yii/framework/yiic webapp /ide_rakd_a_web_applicationt -
PazsitZ
addikt
Azt most már tudjuk, mi a szar, de a temérdek jobb, átláthatóbb, refaktorbarát alternatív javaslatot még nem találtam meg a hsz.-eidben.
Aki pedig azt állatja, hogy minden függvényt azzal kezd, hogy /** */, az biztos ráér programozni
Az annotáció pedig megkönnyíti a további fejlesztést, az autocomplete felhasználás során.
Mert meg sem kell nyitnod függvényt tartalmazó fájlt tudni fogod a be-ki-meneti paramétereket, típusukat és kivételeket, amit dobhat.
Ehelyett ha lehagyod, jobb esetben tízszer nyithatod a fájlt és böngészheted a függvényt, mit miként adj át és várj viszont. Utóbbi minden bizonnyal gyorsabb.A tömbös indexes hibakezeléses megoldásos pedig aranyos, de ne akard már itt megmagyarázni, hogy ez a frankó, mert már nem tudom, hogy sírjak vagy nevessek.
-
PazsitZ
addikt
Nem értem ezt az exception költséges dolgot.
Az oop is költséges, főképp korábbi php verziókban.
De valamit valamiért.
Az meg hogy ilyenekkel nyersz 1 századmásodpercet, nem hiszem, hogy mérvadó.(#8995) modder:
Nem értem mi a problémád az exceptionnel?
Avagy mivel váltod ki, ami szerinted jobb/átláthatóbb?nem biztos, hogy fogod tudni, hogy a kivételedet hol dobod
A kivételed jobb esetben megmondja mi a hiba, így illene tudnod, hol dobod. A modul vagy egyéb logikai egységhez dedikált kiterjesztett kivételosztályról nem is beszélve, ami teljesen egyértelművé teszi, miért és hol használod. Legrosszabb esetben egyébként pedig egy stacktrace meg nehogy már ördögtől való körülményes találmány legyen.
Az hogy dokumentálsz alap, plusz egy exception annotációba - amit jobb esetben az IDE kapásból kigenerál neked- nem kellene belehalni.A kivételek öröklődése és funkcionális kiterjeszthetősége (pl. logolás), amit említettek is, meg csak hab a tortán a használata mellett.
-
PazsitZ
addikt
válasz
Speeedfire #8949 üzenetére
A modelleknek CActiveRecord van egy isNewRecord property-je, ami alapján meg tudja állapítani insert vagy update művelet szükséges.
Bár ez a property állítható, de ebben az esetben még a primaryKey hibás értékre mutat.
Tehát a setPrimaryKey-vel az elsődleges kulcsot is állítanod kell a helyes működéshez.A fent említett módszer helyett viszont sokkal inkább ajánlott a költségesebb, de helyes működést garantáló new Model(); létrehozás, minden új sor beszúrásánál.
-
PazsitZ
addikt
válasz
Speeedfire #8630 üzenetére
Esetleg RenderPartial-al van kitolva a kimenet? Valamiért ajax-os működésre van felkészítve pl. csak rossz action-t hívsz?
-
PazsitZ
addikt
válasz
asuspc96 #8542 üzenetére
Ha megnézzük én is az új hardveraprót rögtön elkezdtem vizsgálni, mennyire támadható. De ártó kódrészletet, azért nem futtattam volna. Ami észrevételem pedig volt, sebezhetőség szempontból azt meg is írtam az illetékeseknek, hogy segítsek.
Konkrét példát ne várj, se itt, se privátban.
A felsorolt könyveket nem ismerem, de biztos van az említettekkel kapcsolatos infó bennük.
Agyhullámos könyvről már volt vélemény [link]
Amit leírtam igazából már bőven elég, angol tudás és google segítségével utána tudsz járni a mikéntnek.Az, hogy te a kiskaput keresed, szép és jó, addig, amíg nem próbálod ki éles rendszeren és a célod, hogy a fejlesztőknek egy bugreportot küldj.
Ellenkező esetben, ez már jogi problémákat vethet fel. Szerintem nagyon nem éri meg, jóval többet veszíthetsz, mint nyerhetsz. -
PazsitZ
addikt
válasz
asuspc96 #8538 üzenetére
Az egész projekt statikus kód, statikus függvényekkel, globál változókkal.
A kód több helyen hibákat "némít" el.
A programkódot csak úgy el die-olni finoman szólva nem a legelegánsabb dolog.
A kód indentálása vad; van, hogy egy sorban is különböző, szóközök, tabok vegyesen
A template megoldásukat nem szívesen szerkesztgetném, de ez nem az én gondom
.
SQL injection ellen használnak mysql_real_escape_string fgv-t.
Viszont, ahogy ránéztem XSS ellen nem találtam bármiféle védelmet.
Ezáltal egy ügyesebb diák lehetséges, hogy lophat magának egy tanár session-t Pár plusz ötös érdekében.Hirtelen átfutva ennyi.
-
PazsitZ
addikt
Az mvc mindenképp jó lehet a kód szervezésben. Viszont az esetedben úgy látaom inkább más a hangsúly. Mivel a kód és html sok framework esetén sincs szétválasztva, csak szétbontva ezáltal minimalizálva.
Tehát szvsz. neked lehet elég lenne kertrendszer helyett egy template-ező motor használni.
pl.: Smarty, Dwoo
Bizonyos szintű template kezelést akár meg lehet oldani egyszerű saját függvényekkel is, de persze kész motor biztonságosabb és komplexebb megoldást nyújt. -
PazsitZ
addikt
válasz
Speeedfire #8422 üzenetére
A példában is az első 3 karaktert nézi csak.
if (substr($sapi_type, 0, 3) == 'cgi') -
PazsitZ
addikt
válasz
Speeedfire #8418 üzenetére
Primitív megoldás, de megteszi:
egy random hash-szerű paraméter-nek megadsz egy random hash értékét és azzal hívva futtatod.tehát: cron.php?eca07335a3=ea2e444264c384420771b6af490b16fb
kódban:
if (isset($_GET['eca07335a3']) && $_GET['eca07335a3']=='ea2e444264c384420771b6af490b16fb') {
...
} -
PazsitZ
addikt
válasz
Speeedfire #8320 üzenetére
svn szerintem azért egyszerűbb, a gitben a local-remote repok - branch-ekkel meg lehet azért kavarodni szerintem, persze normál egyszerű használatnál nem, de komolyabb művelet esetén igen.
Win alá konkrétan a tortoiseSVN-el van tapasztalatom, ez nagyon jó jobbklik menübe beépülő cucc.
Git-et még csak linux alatt próbáltam.A netbeans támogatja mindkettőt, a 7.0 verzió óta tovább fejlesztették és új feature-ök is jöttek úgy rémlik.
-
PazsitZ
addikt
A == automatikus változó cast-olással hasonlít össze, míg a === operátor mivel nem cast-ol, szigorúan típust és tartalmat is figyelembe véve.
[link] When converting to boolean, the following values are considered FALSE:
the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
an object with zero member variables (PHP 4 only)
the special type NULL (including unset variables)
SimpleXML objects created from empty tagsJelen esetben viszont a connection vagy link id.-al vagy false-al tér vissza, tehát nem okozhat gondot, mint azt előttem is írták.
-
PazsitZ
addikt
Na most, ha az asp.net mvc neked magas, akkor php-ban vagy java-ban miből gondolod, hogy jobban fog menni?
probáltam elhelyezkedni sehova sem kellett tapasztalatlan ember
A PHP24oraalatt könyvet kiolvasot sok scriptkid által is, telített PHP-sok között gondolod, hogy ez nincs meg? -
PazsitZ
addikt
válasz
Bencom ™ #8197 üzenetére
Ha syntax highlight kell, akkor szinte bármilyen normálisabb szerkesztő támogatja a html-t.
Ha pedig meg akarod tanulni, akkor ne ilyen nvu-t meg ilyesmit használj, ami látatlanban kiegészítgeti automatikusan a kódot, hanem mondjuk notepad++ -t.
Vagy programozáshoz úgyis előbb utóbb érdemes elővenni valamilyen IDE-t, akkor eclipse, netbeans, jó lehet.Most látva, megközelítőleg, hogy hannan indulsz, lesz az több is, mint 3 hónap, sőt.
De mint mondtam, amit anno én is írogattam kódot, bár működik (pl. PH movies oldal), de a kódot nem szívesen mutatnám meg senkinek.
-
PazsitZ
addikt
A textarea whitespace-t észre se vettem
De az a fura, hogy ha hagysz s whitespace-t a textarea-ban annak meg kellene jelennie, azaz látható az input bevitele során.
A szabvány a selected="selected", de mint írtad, a mai böngészők támogatják más formáját is, azaz gyakorlatilag elég, ha létezik az attributumnév.
-
PazsitZ
addikt
válasz
Bencom ™ #8160 üzenetére
Szerintem felesleges könyvtárral bejlódni, nem feltételezem, hogy túl sok mindent találsz. A neten viszont találhatsz ezeregy pdf könyvet. Persze többnyire angolul. De doksi olvasáshoz úgyis hozzá kell szokni, ha fejleszteni akarsz szvsz.
Bár már vagy egy éve, de volt egy próbálkozás hip-hop php-vel saját részre, de akkor nem tudta lefordítani a kódot hibátlanra. Persze azóta millió push mehetett már bele.
Egyébként a véleményem megosztom a nagy projektről, bár ahogy látom, mások is elmondták és nem győztek meg.
Egyedül, ekkora projektnek nekikezdeni, kezdőként halál.
Már csak azért is, mert ha haladsz vele, akkor a fejlődésed során a régi kódodat magad akarod majd átírni, mert érezni fogod a hibáékat benne. Ezáltal gyakorlatilag egy végtelen ciklusú refactorhoz jutsz és végül sosem lesz kész terméked.
Vagy nem refactorálsz, csak nyomatod és tegyük fel kész lesz. Ekkor egy tervezés nélküli, nem átgondolt, kusza kód lesz az eredmény, ami több sebből vérzik majd.
(#8161) mobal +1 által említettekről nem is beszélve.Terhelés: szerintem a terheléses dolgokon elég lesz akkor aggódnod, ha oda jutsz. Ha véletlenül el is éred az általad kitűzött felhasználóbázist, az nem egyik napról a másikra lesz. Kezdésnek jó ideig elég a php, lehet finomhangolni, DB-t, használni data és code cache-t egyebek...
Tehát érdemesebb lenne kisebb projektekkel megtanulni, minimális alapokat és utána belekezdened a nagy projektbe szerintem.
-
PazsitZ
addikt
válasz
Siriusb #8059 üzenetére
Gyakorláshoz persze, de mivel eddig nem ezt tette, gondoltam, publicban használni is akarja majd, és nem otthonról hosztingolni.
localba meg WAMP, XAMP, linux alatt meg szvsz érdemesebb külön felpakolgatni ezen cuccokat.(#8060) Retekegér: tudtommal igen. Jah mMeg létezik még egy ilyen forma: http://neved.atw.hu/index.php - http://users.atw.hu/neved/index.php
-
PazsitZ
addikt
Erről eszembe jutott, hogy nekem volt régen ilyen próbálkozásom az sql result gyors ki-extract-olására függvényből global változóként. Persze nem szép. Ma már nem is használom/használnék ilyet, mármint global változót.
(#8038) Lacces: Ennek nincs köze a mutatókhoz. A miértre a magyarázat annyi, hogy ez egy script nyelv.
$fetchResult = mysql_fetch_assoc($localpSQLResult);
if ($fetchResult){
foreach($fetchResult as $var_name => $var_value)
{
$var_name = "q_$var_name";
global $$var_name;
$localGlobalVarsArr[] = $var_name;
$$var_name = $var_value;
}
return true;
}
Így global változóként létrehoztam az sql eredményét egy q_ (query) prefix-es változóként.
De a neveket le is tároltam, hogy egy fajta garbage collect-ként üríteni tudjam őket.
Fetch esetén ugye mindig felülíródott a változó tartalma, következő querynél ez a gc opció default lefutott, de szükség esetén letiltható volt.(#8041) Sk8erPeter : Alapvetően szerintem nem ördögtől való dolog ez, persze azért nem kell túlzásba vinni.
Én pl. Factory pattern esetén szoktam használni.Bár itt nem változóként, használod fel a változóban tárolt sztringet, hanem osztálynévként, de a logika hasonló.
Definiálsz sztring konstans értéket a lehetséges osztályok neveivel, majd azáltal pédányosítod a megfelelő osztályt./**
*
* @param const $SQLLayerType SQLLayer constant
* @param DBObj $db
*/
public function __construct($SQLLayerType=null, DBObj $db=null) {
$list = array(SQLLayer::SELECT, SQLLayer::INSERT, SQLLayer::UPDATE, SQLLayer::REPLACE, SQLLayer::DELETE);
if(is_null($SQLLayerType) || !in_array($SQLLayerType, $list)){
$this->SQLLayerType = SQLLayer::SELECT;
}
else $this->SQLLayerType = $SQLLayerType;
$Class = "SQL" . ucfirst($this->SQLLayerType);
$this->SQLObj = new $Class($this->SQLLayerType, $db);
if(!is_null($db)) $this->SQLObj->table($db->getTableName());
} -
PazsitZ
addikt
válasz
Speeedfire #7646 üzenetére
Bár konkrétan analytic-et nem használtam még, de a google API általánosságban jól használható szvsz: [link]
-
PazsitZ
addikt
válasz
Speeedfire #7643 üzenetére
A google analytics egyébként miért nem jó?
vagy esetleg: Piwik
Kliens, de akár szerver oldalról is lehet beletolni az adatokat. -
PazsitZ
addikt
válasz
TonTomika #7339 üzenetére
A "email_1@mail.com" esetén így jelzed, hogy stringről van szó.
Ha változóba rakod a stringet $variable = "email_1@mail.com", akkor nincs szükség erre, a változó string típusú.Az esetedben ott volt a hiba, hogy az if feltételvizsgálatban te értékadást írtál.
Az összehasonlításhoz két egyenlőségjel kell.
if ($to == 1) {$emailto = 'email_1@mail.com';} -
PazsitZ
addikt
válasz
TonTomika #7335 üzenetére
Nem tudom minek a "
Továbbá nem tudom ilyen felület ez, de közvetlenül input paraméterből berakni az emailt nem túl jó megoldás szvsz.
A mail fgv.-ed egyáltalán true-val tér vissza?<select id="to" name="to">
<option value="0" selected="default">Válassz!</option>
<option value="bolt1">Bolt1</option>
<option value="bolt2">Bolt2</option>
<option value="bolt3">Bolt3</option>
</select><?php
$list = array(
'bolt1' => 'email_1@mail.com',
'bolt2' => 'email_2@mail.com',
'bolt3' => 'email_3@mail.com',
);
$to = $_POST['to'];
if ( isset($list[$to]) ) {
echo $to;
}
?> -
PazsitZ
addikt
Igenis van értelme, ha fontos jelentősen elszeparálnod a html-php részt.
Természetesen egyáltalán nem szükséges ilyen megoldáshoz egy komplett smarty keretrendszer, ha úgysem használod ki eléggé.
tehát az alap iránynak van értelme, bár szvsz. inkább többszereplős projektekben, lehet vele jól elválasztani a php app logikát és a megjelenítés logikáját.(#7301) mobal: Régebben smarty-t használtam, manapság már nem, a többivel kapcsolatosan pedig nincs tapasztalatom.
Új hozzászólás Aktív témák
Hirdetés
- Iphone 13 Pro Max 128 GB /// 86% Akku // Számlával és Garaniával
- Iphone 12 Pro Max 128 GB /// 88% Akku // Számlával és Garanciával
- Xiaomi Redmi 9A 32GB Kártyafüggetlen 1Év Garanciával
- Apple iPhone 12 Pro Max 128GB Kártyafüggetlen 1Év Garanciával
- Samsung Galaxy S23PLUS 256GB Kártyafüggetlen 1Év Garanciával
- Ultimate előfizetés új fiókra akár 2105 Ft/hó áron! Azonnali, automatizált aktiválással, csak Nálam!
- Nvidia Quadro M2000/ M4000/ P2000/ P2200/ P4000/ P5000/ RTX 4000/ RTX A2000 / RTX A4000
- Csere-beszámítás! Számítógép PC Játékra! I3 14100F / RTX 3060 12GB / 32GB DDR4 / 500GB SSD
- Samsung Galaxy A41 64GB Kártyafüggetlen, 1Év Garanciával
- Gamer laptop felvásárlás Magas áron, gyorsan és egyszerűen!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest