Programozás

Programozással kapcsolatos ötletek, megoldások

PHP switch működése. Típusos switch és típuskonverziók.

Most egy érdekességről fogok írni, aminek igazán gyakorlati hasznát nem látom, viszont jó tudni. A switch elágazás nem egyedi a php-ben. Más nyelvek is megvalósítják, mint például a java, C vagy a pascal, csak más néven és/vagy egy kicsit másképp. Bizonyos esetekben az IF elágazás felváltására szolgál. Két érték pedig többnyire akkor lesz egyenlő, ha a típus is egyezik. Ám PHP-ben az értelmező mondhatni, kénye kedvére változtathatja a típusokat egy-egy ellenőrzés alkalmával. Persze adott, hogy mit mire tud konvertálni. De ha biztosak akarunk lenni a típusok egyezésében is, akkor a == helyett a === -re van szükség. Switch esetén viszont mindig az első verzió, azaz a típusegyeztetés nélküli ellenőrzés történik. Ez egy részt lehet probléma. Más részt ha ez probléma, akkor az if-eket se nehezebb megírni sok esetben. Mégis bizonyos speciális helyzetekben igen csak el kéne gondolkozni, hogy ugyanazt a működést egy IF hogy váltja fel. Ez pedig a break utasítások használatával és a default ág elhelyezésével függ össze.

Megosztás/Mentés

Konfigurálható szép url-ek htaccess-el

Nos, ez már nem az első hasonló témájú bejegyzésem. De úgy gondoltam ebből sosem elég. Korábban írtam arról, hogyan lehet szép url-eket készíteni htaccess-el. Egyben arról is szólt a bejegyzés, hogy hogyan lehet többféleképpen különböző aloldalakat létrehozni. Ennek folytatásaként most mutatok egy megoldást arra, hogy egy config fájlban lehessen egyfajta mintát adni a használni kívánt url-ekre oly módon, hogy közben már azt is megadjuk, az url melyik része milyen $_GET változóba kerüljön.

Ez a megoldás feltételezi, hogy valamennyire már értünk a reguláris kifejezések használatához, de a legfontosabb tudnivalókat én is elmondom. Pár dolgot már kifejtettem a Link attribútumainak megkeresése bejegyzésemben is. És most neki is vágnék az aktuális témának.

Megosztás/Mentés

Lista megjelenítése táblázattal php-ben (oszloponként)

Írtam már hasonló témáról, de ott feltételeztem, hogy a lista elemeit sorban szeretnénk kiírni és majd egy adott oszlopszám után sort törni. De felmerülhet olyan igény, hogy az elemeket egymás alatt, egy oszlopban akarjuk megjeleníteni, ám ekkor is a maximális oszlopszámot szabjuk meg és nem a maximális sorszámot. Így azt külön ki kell számolni, hogy mikor kell "oszlopot törni".

Megosztás/Mentés

Néhány prolog feladat megoldása

Az egyetemen ( PTE TTK Programtervező informatikus ) többek között prolog kurzust is felvettem. Inkább csak érdekességként, így nem merültem el mélyebben a témában, de néhány gyakorló feladatot megosztanék a nagyközönséggel is. Hosszú magyarázatot nem mellékelek, mivel már régen tanultam, és talán nem is tudnék részletesen magyarázni. Azért a fent linkelt wikipédián kívül még egy hasznos oldal: Link

Egy lista elemeinek száma

  1. %---------------------- Egy lista elemeinek száma ---------------------------------
  2.  
  3. %üres lista hossza 0
  4. length1([],0).
  5. %egy lista hossza, ami több mint egy elemet tartalmaz,
  6. %és mindegy mi az első eleme,
  7. length1([_|Y],Z):-
  8.         %pont olyan hosszú, mint az első elemét leszámítva a többi elemének száma,
  9.         length1(Y,V),
  10.         %plusz az első elem
  11.         Z is V+1.
Megosztás/Mentés

PHP reguláris kifejezések - Link attribútumainak megkeresése

A reguláris kifejezésekről nagyon sokat lehetne írni. Bevezethetném az elejétől, ahogy egyszer terveztem is, most mégis maradnék csak egy példa bemutatásánál, ami megkeresi egy html kódban az összes linket és azok összes attribútumát. Azért jó ez a példa, mert több eszköz tárgyalására is lehetőséget ad.

A preg_match függvényt fogom használni. Még lehetne az ereg függvényeket, de azokat ma már nem ajánlott.

Legyen a példa html kód a következő:

Megosztás/Mentés

Űrlapok véletlen újraküldésének megakadályozása

A bejegyzés címe már sejteti a témát, de azért nézzük, miről is akarok én itt beszélni. Adott egy weboldal, és azon egy űrlap. Például egy üzenőfal. Valamint adott egy felhasználó, aki bátran kattint az "elküld" gombra. Az üzenete megjelenik, majd támad egy ingere, hogy frissítse a weblapot, mert mondjuk kíváncsi, hogy válaszoltak-e az üzenetére már. Persze ekkor az ő üzenete is újra el lesz küldve. Na most van olyan fejlesztő, aki erre nem gondol, és van olyan, aki igen. Utóbbiak megoldják, hogy frissítéskor az űrlapok ne legyenek újra elküldve. Vagy esetleg az üzenet tartalmát hasonlítják össze az előzőleg elküldöttel, és ha egyezik, akkor nem lesz újra bejegyezve az adatbázisba, avagy fájlba.

Megosztás/Mentés

PMP - PoetMonkey Project

PoetMonkey logó

A Poet.hu egy jó lehetőség azoknak, akik szeretnének verseket, egyéb irodalmi műveket publikálni, de nincs saját weboldaluk. Vagy csak olvasni szeretik a verseket. Van viszont néhány hiányossága a felületét illetően. Már ha szabad így fogalmaznom. Bár már folyamatban van az új design és weboldal készítése, úgy gondoltam, Firefox vagy Google Chrome böngészőt használók számára készítek egy scriptet, ami pár funkciót kényelmesebbé tesz az oldalon. Kezdeti nagy terveimhez képest csak két ötletet valósítottam meg. Valójában ez csak egy példa verzió, ha úgy tetszik. És ha lesz időm, ötletem, amit kivitelezni is lehet, akkor majd bővülnek a funkciói. Amíg még érdemes bővíteni.


Megosztás/Mentés

PHP paraméterátadás url-ben és szép url-ek htaccess-el

Ismét egy gyakori kérdést dolgoztam fel, amit amatőr php programozók tesznek fel rendszeresen. Szokásomhoz híven igyekszem ismét a már működő de rossz megoldástól a minél szebb megoldás felé haladni. A Többféle megoldás bemutatásának célja, hogy az olvasó ne csak egy kész megoldást kapjon, hanem lássa is az alternatívákat. Hogy ő maga választhasson.


Feltetted már valaha, vagy fel akartad tenni a következő kérdést valakinek?

Hogy lehet olyant csinálni, ami itt ezen az oldalon is van, hogy ilyen kérdőjelek, meg & jelek vannak az url-ben, és úgy változik az oldal tartalma?

Talán nem pont így fogalmazódott meg benned a kérdés, de ha valaha is ott motoszkált a fejedben hasonló, és még nem kaptál rá választ, vagy már kaptál választ, de érdekel többféle módszer, akkor olvasd tovább ezt a bejegyzést és megkapod a választ.

Ezen kívül kitérek még a szép url-ek kérdésére is. Amikor már nem látszik az url-ben sok & jel,
hanem olyan, mintha mindig más mappát nyitna meg. Valójában pedig csak az apache szervernek mondjuk meg, hogy irányítson át egy másik url-re, ami már a fent említett megoldást használja, vagy php-ból szimuláljuk.

Megosztás/Mentés

HTML lista újrarendezése javascripttel

ScreenShot

Szép ez a kép itt bal oldalt. Nemde? Talán nem, de nem is az a lényeg, hanem a funkció. Lehet nem tűnik értelmesnek egy html listában az elemeket össze vissza mozgatni. De ha például ezekben a listákban egy űrlap szövegmezői vannak, amiknek számít a sorrendje ( tömbös megvalósítás ), akkor máris értelmét nyeri. De most a cikkben a mozgatás megvalósítására fogok koncentrálni.

JavaScript DOM manipuláló metódusokkal lehet mozgatni különböző csomópontokat szinte bárhova. De arra, hogy több lista elemet két irányba is mozgathatóvá tegyünk, két lehetőség adódna.

  • Egy függvényt írunk, ami paraméterként kapja meg a mozgatandó elem azonosítóját és a mozgási irányokat.
  • Módosítjuk HTMLLIElement osztályt. Konkrétan felveszünk moveUp() és moveDown() metódusokat a html "li" elemekhez.
  1. Osztalyneve.prototype.fuggveny = function()
  2. {
  3.      //ide a műveletek
  4. }

Én az utóbbit választottam. Előnye, hogy onnantól kezdve bármilyen lista elemet az adott listában könnyedén egy metódushívással eggyel lejjebb, vagy feljebb lehet mozgatni. A megoldásomban csak 1 lépést, de módosítható volna, hogy paraméterként átadható legyen a lépések száma. Ezt már az olvasóra bízom. Többszöri hívással is előidézhető ugyanez.

Megosztás/Mentés

Javascript karakterszámláló text inputok-hoz

Ez már egy viszonylag régen írt script, csak a napokban rájöttem, hogy ide még nem töltöttem fel. Mire is jó? Természetesen szerveroldali ellenőrzés mellett, plusz kényelmi funkcióként beépíthető ilyen számláló szöveges beviteli mezőkhöz űrlapoknál. Így a felhasználó gépelés közben is tudja, hány karaktert írhat még. Iwiw-en is ilyent lehet látni a privát üzenet küldésnél például.

A függvény ennyi lenne:

  1. function ccounter_func(msginputId,ccounter_inputId,max,addevent)
  2. {
  3.         var msginput = document.getElementById(msginputId);
  4.         var ccounter_input = document.getElementById(ccounter_inputId);
  5.         var msglen = msginput.value.length;
  6.  
  7.         ccounter_input.value = (msglen > 0) ? max - msglen : max;
  8.  
  9.         if(msglen > max) {
  10.                 alert("Üzenet max hossza: "+max);
  11.                 msginput.value = msginput.value.substring(0,max);
  12.                 ccounter_input.value=0;
  13.         }
  14.         if (addevent)
  15.         {
  16.                 msginput.onkeyup = function() { ccounter_func(msginputId,ccounter_inputId,max); }
  17.         }
  18. }
Megosztás/Mentés