Aktív témák
-
cucka
addikt
nézd meg jobban, biztosan kell legyen rajta * gomb.
(angol kiosztásnál shift + 8, magyarnál ált. altgr + - )
pityegéshez meg próbáld meg kikapcsolni a beep-et, szerintem az lesz a nyerő megoldás. device manager-ben bepipálod, hogy ''show hidden devices'', és a ''non plug and play'' kategóriában találod. -
cucka
addikt
válasz
Hujikolp #545 üzenetére
legegyszerűbb előltesztelős a while ciklus. while (feltétel) {<ciklusmag utasítások>}. a php az elején megvizsgálja, hogy igaz-e a feltétel, ha igen, akkor lefuttatja a ciklusmagot majd visszatér az elejére, és újból megvizsgálja, stb. a feltétel bármi lehet.
a for ciklus fejlettebb, előltesztelős, 3 része van. for (értékadás; feltétel; utasítás)
az értékadás valójában egy tetszőleges utasítás, ami egyszer fut le, méghozzá a ciklus legelején, az ismétlődő rész előtt. a for addig fut, amíg a feltétel igaz nem lesz. az utasítás tetszőleges, általában itt növeljük a ciklusváltozónkat, amelytől függ a feltétel értéke.
pl.
for ($i=2;$i<10;$i+=2){print $i;} - kiírja a 10-nél kisebb páros számokat
$i=2; while ($i<10) {print $i; $i+=2;} - ugyanez while-al
végtelen ciklus - végtelen sokszor fut le, mert a ciklusfeltétel mindig igaz.
hátultesztelős: do..while. a lényege, hogy a ciklusmag egyszer mindenképp lefut, utána történik a ciklusfeltétel ellenőrzése. -
cucka
addikt
minden url-ben nem megengedett karakter gondot okoz, így a szóköz is. a megoldás a percent encoding. a spec. karakter helyett %xy-t írunk, ahol xy az illető karakter ascii kódja hexában. szóköz helyett pl. %20-at. szerencsére a php olyan okos, hogy automatikusan visszaalakítja ezeket a jelöléseket.
[link]
mod: egyébként ha parancssorból használod a php-t akkor át tudod adni normálisan is a paramétereket, nem kell belőlük url-t gyártani. erre jó a $argc és $argv változó (hasonlóan működnek, mint c-ben). [link]
[Szerkesztve] -
cucka
addikt
mit jelent a teljes egyezés? ugye szavakra bontod, ha akarod, hogy csak akkor számítson találatnak, ha a szövegben is szó a keresett szöveg, akkor LIKE '% szoveg %' a feltételed, megfigyelheted, hogy előtte-utána szóköz van. persze ez nem fog működni mondat első-utolsó karakterére, vagy ha vessző van a szó után, stb..
szerintem a legegyszerűbb úgy megoldani, ha az eddigi módon leválogatod a találatokat, majd php-vel kiszűröd azokat, amelyek nem jók. ennek rengeteg módja lehet, a legcélszerűbb mondjuk reguláris kifejezéseket használni. (eregi vagy preg_match függvények, attól függően, hogy milyen fajta reg.kifejezésekhez van gusztusod. perl-es változat mondjuk jóval hatékonyabb) -
cucka
addikt
válasz
Hujikolp #519 üzenetére
belenéztem kicsit alaposabban a kódba, félelmetes, hogy mennyire nem használsz olyan alapvető dolgokat, mint a ciklusok, függvények. szóval:
van 10 darab számsor változód, amelyekben egy-egy <option> tag található. mi lenne, ha készítenél egy függvényt, ami paramétertől függően visszatér egy ilyennel. pl. ha a paraméter értéke 51 és 60 között van, akkor visszaadja azt a stringet, ami most a $szamsor_6 változóban van. ez azért lenne jó, mert tetszőlegesen nagy számokra is működne.
van 10 darab if-ed. mindegyikben egyre több számsor változót iratsz ki, az if-ek feltétele a $szam változó értékétől függ. mi lenne, ha indítanál egy for ciklust, ami 1-től megy $szam-ig és minden lépésben 10-et nőne a ciklusváltozó? a ciklusmagban meghívnád a fenti függvényt, paraméterként a ciklusváltozódat adva.
az eredmény egy olyan kód lenne, amit már lehet programnak nevezni, dinamikus, bármilyen bemeneti adatokra működik, ezen kívül nem lenne 5 képernyő hosszú, csak 1. -
cucka
addikt
egyrészt ez a kód nem igazán jó, pl. egyik if-ben használsz egy $wordcount nevű inicializálatlan változót. ezen kívül az sql lekérdezés LIKE részének átírásával tudod alakítani azt, hogy milyen találatokat kapj. select distinct használata miért indokolt? csak mert elég lassú dolog.
-
cucka
addikt
válasz
Hujikolp #517 üzenetére
a kézzel kiírás is működik, de attól még nem igazán jó megoldás. ugye ha 17 elemed van, akkor 2 <option>-t fogsz kiírni (1-10 és 11-20), ha 35 elemed, akkor 4 option-t.
de mi van, ha 300 elemed van? kiírsz kézzel 30 <option> tag-et?
vagy: mi van, ha 20 elem van, és valaki felvisz még egyet, akkor meg kell várni, amíg te kézzel beleírsz a php-ba még egy <option>-t?
röviden: a dinamikus weboldal pont attól dinamikus, hogy egy adatbázis alapján készül el a kód, nincs semmilyen változó adat beledrótozva a forráskódba. -
cucka
addikt
hopsz lejárt az 5perc
szóval a ciklusok akkor jönnek be, ha teszem azt listázni akarod az elérhető lapokat, akkor nyilván $szam lesz a ciklusváltozó és mondjuk 10-enként lépteted, akkor a ciklusmagban található általánosabban leírt kifejezés helyes url-eket fog generálni, függetlenül attól, hogy mennyi a $szam értéke -
cucka
addikt
válasz
Hujikolp #513 üzenetére
izé, kicsit félreolvastam #512-ben, vagyis nem ciklussal kell csinálni, hanem egy kis ésszel.
ugye value=\''belepes.php?menu=letoltesek&tipus=scm
&mennyit=41,''.$szam.''\''>41-50</option>''; alakú szöveget kell generálni, tudva a $szam értékét.
ekkor nyilván 41=1+10*floor(($szam-1)/10) , 50=10*ceil($szam/10). vagyis ezeket használva bármelyik $szam értékre tudsz majd helyes url-t generálni.
[Szerkesztve]
[Szerkesztve] -
cucka
addikt
érdekes problémába ütköztem.
szeretnék viszonylag hosszú szövegeket tárolni egy mysql táblában, a kérdéses oszlop típusa mediumtext.
ha egy hosszabb (1-2 ezer karakteres) szöveget próbálok insert-elni, a következő hibaüzenetet írja ki a mysql_error() : Data too long for column 'oszlopnev' at row 1
furcsa, mert a mediumtext típusú mezőbe elvileg ennél nagyságrendekkel hosszabb szövegek is beférnek. ötlet?
mod: még érdekesebb, hogy ha a fenti hibaüzenetet generáló query-t kimásolom és kézzel lefuttatom, akkor működik. (ez egy egyszerű insert, semmi extra nincs benne)
[Szerkesztve] -
cucka
addikt
-
cucka
addikt
á, olyan körülményesen oldjátok meg
function levag($s,$h)
{
$i=$h;
while (($i>0)&&($i<strlen($s))&&(!ctype_space($s[$i])||ctype_space($s[$i-1])))
{$i--;}
if ($i==0){$i=$h;}
return substr($s,0,$i);
}
$s a szöveg, $h meg a hosszúsága a kimeneti szövegnek. ha a hossz kisebb, mint az első szó hossza, akkor üres string visszaadása helyett félbevágja a szót, szerintem ez így praktikus.
[Szerkesztve] -
cucka
addikt
-
cucka
addikt
válasz
Briganti #335 üzenetére
először: ha a lekérdezésed több sort ad vissza, akkor abból csak az utolsót fogod eltárolni az $e_ kezdetű változókban. használj 2dimenziós tömböt, sorait akár a $row-ból is felépítheted, nem kell minden mezővel külön pöcsölni.
másodszor: ha a lekérdezésed mindig egy sort ad vissza, akkor az a ciklus fölösleges
harmadszor: ha a lekérdezés véletlenül nem ad vissza egyetlen sort sem, akkor azt hogyan kezeled le?
negyedszer: biztos vagy benne, hogy a $_SESSION['login'létezik? ellenőrizd isset()-el.
-
-
cucka
addikt
sőt, a ''sózás'' akár kézzel is elvégezhető. másrészt igaz, hogy az md5 algoritmusra találtak egy brute force-nál hatékonyabb kulcsütközés-generáló algoritmust, de az sem annyira gyors, hogy feltétlenül megérje pöcsölni vele. persze ha banknak fejlesztenék szoftvert, akkor mást használnék, általános esetben viszont szerintem elégséges lehet az md5 által nyújtott védelem is.
-
cucka
addikt
1. fejben vagy papíron kitalálod, pontosan milyen legyen a regisztrálás menete
2. létrehozod a szükséges táblát az adatbázisban, amelynek az oszlopai a júzer adatai lesznek. lásd sql doksi, create table utasítás
3. megírod a regisztráláshoz szükséges űrlapot html-ben. küldéshez használj POST-ot
4. megírod a php kódot, ami az űrlapban található adatokat kiszedi a POST tömbből és ellenőrzés után beírja az adatbázisba. ajánlott és etikus a jelszavakat lekódolva tárolni (lásd md5 nevű függvény, valószínüleg minden elterjedt adatbázisban megtalálható).
ez így a legegyszerűbb, lehet bonyolítani mindenfélével (konfirmáló email, biztonsági ellenőrzések, satöbbi). mi a kérdés? és esetleg nézz utána, mit a szintaxis szó jelentése -
cucka
addikt
válasz
Briganti #308 üzenetére
GET az az url-ben továbbítja a változókat. előnyös ha csak kevés adatra van szükség, illetve így bookmark-olni is lehet az oldalt. pl. oldal.php?vált1=ert1&valt2=ert2 . lásd pl. google, ahol a keresés összes paraméterét az url-ben küldi át.
POST a háttérben történik az adatcsere, jó, ha nagy mennyiségű adatról van szó, ha nem szeretnéd kitenni az url-be az adatokat (pl. jelszó). lásd pl. bármilyen űrlap, ahol jelszót kell beírni, vagy prohardveren a hosszászólás-szerkesztő oldal.
[Szerkesztve] -
cucka
addikt
válasz
Briganti #296 üzenetére
egyrészt id számolásához használj auto increment-et, mint ahogy már említették
másrészt ez a query így nem valószínű, hogy jó lesz. ugye a $query az egy string, a stringbe pedig szeretnél behelyettesíteni értékeket. ezt kétféleképpen tudod:
- konkatenálás. $query=''insert into...''.$_POST[first_name].''query többi része, stb.''
- változókat {} közé rakod a string-ben. $query=''insert into...{$_POST[first_name]}query többi része, stb.''
Aktív témák
Hirdetés
- Rágyúr a macOS-re a 3DMark
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Nagyrobogósok baráti topikja
- Fejhallgató erősítő és DAC topik
- AMD GPU-k jövője - amit tudni vélünk
- Íme az új Android Auto!
- Vezetékes FEJhallgatók
- Elemlámpa, zseblámpa
- Bluetooth hangszórók
- Milyen billentyűzetet vegyek?
- További aktív témák...
- Eladó konfig! Ryzen 7 7800X3D 2TB SSD 64GB DDR5 RX9070XT 16GB!
- Új, makulátlan állapotú Samsung Galaxy Buds FE, fehér, fél év garancia
- Új, makulátlan állapotú Samsung Galaxy Watch7 44mm ezüst, 2 év garancia
- Új, makulátlan állapotú Samsung Z Fold 6 256GB Tengerészkék, független, 2 év garancia
- Használt TP-Link Deco M4 - AC1200 Router (Mesh-ként is használható)
- DDR3 BAZÁR! 8GB 16GB 1333MHz 1600MHz 2400MHz DDR3 memória garanciával hibátlan működéssel
- Dell és HP szerver HDD caddy keretek, adapterek. Több száz darab készleten, szállítás akár másnapra
- Csere-Beszámítás! MSI Gaming X RTX 4060Ti 16GB GDRR6 Videokártya!
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
- BESZÁMÍTÁS! Gigabyte H610M i5 13400F 16GB DDR4 512GB SSD RX 6700XT 12GB DeepCool MATREXX 40 650W
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged