Jump to content
php.lv forumi

jb4

Reģistrētie lietotāji
  • Posts

    212
  • Joined

  • Last visited

Everything posted by jb4

  1. Mēs esam sarakstījuši funkciju bibliotēkas. Bibliotēkās ir funkcijas, kurām padod atsevišķus gaidītus parametrus un tad viņas apstrādā tos parametrus un izdara gaidītās lietas. Viss ir jauki, bet vienu dienu mēs gribam, lai šī funkcija ņem vērā tūkstoš citu lietu, kuras līdz šim neesam padevuši kā parametrus. Rakstīt jaunu funkcijas versiju, kur paredzēt jaunos parametrus? Tas, ka var iekļaut f-jā neparedzētu parametru apstrādi, nav gluds risinājums. Un tā katru dienu jaunu funkciju? Šīs problēmas risināšanai pēdējā laikā izmantoju šādu metodi: uzrakstu jaunu f-jas versiju ar diviem parametriem - $input un $handler, kur $input ir viss tradicionālais ievads un $handler ir nosaukums f-jai, kura interpretēs $input ņemot vērā visu iespējamo nevis tikai tos dažus parametrus, kurus padevām vecajai f-jas versijai. Tālāk piemērs kodā f-jai, kas no asociatīva masīva, kas veidots formā [value]=>label uzģenerē HTML formā noderīgu <option> elementu sarakstu: <?php // Tipiskas f-jas function optionsList($options,$value) { foreach ( $options as $optValue=>$optLabel ) { ?> <option value="<?=$optValue?>"<?=($optValue==$value)?' selected="selected"':''?>><?=$optLabel?></option> <?php } } // F-jas, kādas iesaku rakstīt function optionsList2($options,$value,$optionsHandler=null) { if ( is_null($optionsHandler) ) { foreach ( $options as $optValue=>$optLabel ) { ?> <option value="<?=$optValue?>"<?=($optValue==$value)?' selected="selected"':''?>><?=$optLabel?></option> <?php } } else { foreach ( $options as $option ) { list($optValue,$optLabel) = call_user_func($optionsHandler,$options); ?> <option value="<?=$optValue?>"<?=($optValue==$value)?' selected="selected"':''?>><?=$optLabel?></option> <?php } } } ?> Apdarinātāji (handlers) ir foršā padarīšana. Tā man izdodas saglabāt loģikas nodalījumu no vizualizēšanas. Lai kāds būtu izvads, šādām funkcijām padodu jēlus, neapstrādātus datus, jo tur, no kurienes, es viņas izsaucu, man nav laika speciāli taisīt tieši konkrētai vietai noformētus datus. Ja kādai vietai vajag speciāli noformētus datus, tad tos noformēsim caur apdarinātāju. Cerams, ka noder arī jums.
  2. jb4

    par masīviem

    <select name="valsts"> <?php $valsts = 'est'; $masivs = array('lat'=>'Latvija','est'=>'Igaunija','lit'=>'Lietuva'); foreach ( $masivs as $optValue=>$optLabel ) { ?> <option value="<?=$optValue?>"<?=($valsts==$optValue)?' selected="selected"':''?>><?=$optLabel?></option> <?php } ?> </select>
  3. Vecozēn, ja mans ūdens tev nav noderīgs, nedomā, ka tas citiem arī uzreiz nav noderīgs. forums - tas nav vienai dienai. Ja tu man tagad saki, ka tu ar iframe nodrošini pastāvīgi sakaru starp klientu un serveri, tad ej tu ar savām zināšanām bekot vai zini. slēp savus iframe un tik dragā. augstie kalni gaida, kad tu viņus gāzīsi. peace on earth vai kā tur tagad mēdz teikt.
  4. Izklausās vilinoši, bet es neesmu gatavs nodot savu telefona numuru katram, kas tā pateiktu. Kādu uzņēmumu jūs pārstāvat vai, ja darbojaties individuāli, kā jūs sauc un kāda ir jūsu hostēšanas pieredze. Mana e-pasta adrese ir jaba [iekš] inbox [punkts] lv.
  5. Ar latviešu valodas zināšanām var braukt tikai uz Zilupes teātra dienām. Ja grib programmēt, tad jāmācās angļu valoda. Te tāda pamācība, kas izpušķota ar daudzām ilustrācijām. Varbūt sapratīsiet: http://www.tanguay.at/installPhp5.php5?step=1
  6. jb4

    cookies

    Tāda sīkdatne būs spēkā tikai līdz pārlūkprogrammas aizvēršanai. Aizveram pārlūkprogrammu, ejam atkal iekšā un še tev - balsojam vēlreiz.
  7. Tu vēljoprojām neesi sapratis, kas ir PHP. PHP ir programmēšanas vide uz servera. Javascript - programmēšanas vide lietotāja pārlūkprogramma. Starp šīm divām vidēm pa vidu ir saziņas protokols (saziņas noteikumu kaudze), ko sauc par HTTP (hypertext transfer protocol). Šis te protokols paredz ļoti stingras klienta-servera attiecības. Klients ir tas, kas var tikai dabūt un var pieprasīt. Serveris ir tas, kas var uztvert pieprasīto, nosūtīt atbildi. Abi nav vienādās lomās! Ievēro. Serveris nevar no zila gaisa pieslēgties pie kaut kāda klienta un teikt viņam: vecīt, aizmirsti šito sīkdatni (cookie), atver te mums logu un apēd šito kūciņu. Tā tas nenotiek. Serveris klientam, rupji runājot, var nosūtīt tikai HTML kodu (es teicu - rupji runājot, tāpēc nepiekasieties). Tas HTML kods var saturēt Javascript, kurš, ja lietotājs ļaus, izpildīsies klientā, tas ir, lietotāja pārlūkprogrammā. Tava vienīgā iespēja kaut ko darīt uz lietotāja datora ir rakstīt Javascript. Tavu problēmu iespējams risināt, uzrakstot Javascriptā sīkdatņu izdzēsēju, ko iedarbina pie tā unonload notikuma. Pameklē tīmeklī Javascript (googlē rakstī kaut kādu "delete cookie javascript"), kas to dara - pats no galvas nezinu. Ne par tavu tēmu, bet lai tu zinātu: klients var pieslēgties serverim! Klients var nosūtīt kaut kādu pieprasījumu, bet tā ir servera darīšana, kā viņš to uztvers. Tāds čats HTTP protokolā reāli nav nemaz čats. Nav tā, ka tava pārlūkprogramma klausās, ko saka serveris un tad visus jaunos čata tekstus iedrukā tavā logā (runa nav par IRC, par IRC es nekā nezinu). Ir tā, ka tava pārlūkprogramma katru mīļu brīdi prasa serverim, vai ir kas jauns. Vai ir kas jauns? Vai ir kas jauns? Un tā visu laiku. Ja ir kas jauns, tad kaut kādā Javascript vai citā pārlūkprogrammas programmēšanas vidē tiek nodrošināts, ka tev tas parādās lapā ar rokām nemaz nespiežot nekādus refresh. Pameklē internetā Javascript+HTTPRequest (tieši vienā vārdā HTTPRequest) un tur izlēks labas lietas droši vien. Var rakstīt Javascript, kas pieslēdzas serverim un nolasa atbildes, bet lietotājs pa to laiku lapā nav spiedis nekādas podziņas!! Serveris, var noskaidrot, vai lietotājs ir atslēdzies, spriežot tā - ahā - lietotājs nav man neko prasījis jau veselu mūžību, tātad viņš ir miris, tātad viņa sesija ir dzēšama - tas ir tad, ja sesijas tiek glabātas kaut kur uz servera, piemēram, MySQL datubāzē. Šitais ir ļoti nesakārtoti uzrakstīts, bet doma bija lāpīt kaut kādus tavu zināšanu caurumus, ceru, ka uz dažiem trāpīju.
  8. jb4

    cookies

    orion, nemāci citiem muļķības. viņš tev prasīja par cookies, tad atbildi par cookies. ja tev dzied par cookies erroru, tas nozīmē, ka tu esi nosūtījis lietotājam html kodu pirms šīm darbībām ar cookies. Sīkdatnes (cookies) ir jānosūta lietotājam pirms jebkāda html koda ģenerēšanas, jo sīkdatnes tiek ievietotas tam HTML kodam priekšā un pārlūkprogramma jaunās sīkdatņu vērtības meklē tikai HTML koda priekšā. Ja tu sūti kaut kur HTML koda vidū, pārlūkprogramma tās vairs nemeklē. Tāpēc PHP tev saka priekšā, ka nav vērts sūtīt, jo pārlūkprogramma to nesapratīs. Lai nosūtītu sīkdatnes pirms jebkāda HTML koda sūtīšanas, iespējami divi varianti: ideālais variants: vispirms veicam visas operācijas, kas nav saistītas ar HTML koda ģenerēšanu, tai skaitā, nosūtām sīkdatnes; pēc tam sākam ģenerēt HTML kodu. iesācēju variants: rakstām kā gribam, tikai koda sākumā ievietojam rindiņu ob_start(); šī rindiņa pasaka PHP, ka izdrukātais HTML kods nav uzreiz jāsūta pārlūkprogrammai, bet gan tikai tad, kad tu to norādīsi. Ja tu to speciāli nenorādīsi (skaties http://php.lv/ob_start), tad tas notiks PHP koda izpildes beigās. Līdz ar to, ja tu HTML koda ģenerēšanas vidū uztaisīsi setcookie(...), tad kļūdas nebūs, jo PHP varēs noformēt sīkdatni pirms HTML koda! Kad uzstādi sīkdatni, tad jālieto sekojošs pieraksts: setcookie('nosaukums','vērtība','laiks, cikos kļūt nederīgam','taciņa, kur tas ir spēkā'); Ja man vajadzētu glabāt cookie uz 1 minūti, es rakstītu: setcookie('kukijs','vērtība',time()+60,'/'); Saproti, no kurienes tas +60? Tas ir pašreizējam laikam pieskaitītas desmit sekundes. Jāzina viena lieta: kad kukijus glabā ar setcookie, tad $_COOKIE masīvā tos nemaz nevar uzreiz nolasīt! Tos var nolasīt tikai pēc vienas lapas pārlādes, jo tāds ir sīkdatņu princips - vispirms tās tiek uzstādītas uz lietotāja lapas un tikai tad, ja lietotājs nākamreiz pieprasot lapu, tās nosūtīs tev, tad tu iegūsi $_COOKIE masīvā attiecīgo vērtību. Piemēram, ja lietotājam nebūs atļauta sīkdatņu uzstādīšana, tad arī nākamreiz tu neko tai $_COOKIE masīvā nedabūsi. Es parasti pēc setcookie() vai nu ielieku attiecīgu vērtību ar rokām $_COOKIE masīvā vai arī (daudz labāks veids) veicu redirektu (tā, ka lietotājs vēlreiz pieprasa manu lapu un līdz ar to nosūta sīkdatnes man) ar šo rindiņu: header('Location: skripts.php'); Šo funkciju arī nevar izsaukt, ja esi jau nosūtījis pārlūkprogrammai HTML kodu. Tāpēc lieto ob_start() visu kodu sākumā.
  9. Man liekas, ka tu citiem palīdzi, izmantojot zināšanas, ko iegūsti šajā forumā. Nu tas skrīnšots ir diezgan daiļrunīgs. Vai tev maksā par to atbildi?
  10. Nav normālu līdzekļu, ar kuru palīdzību uz servera uzzināt brīdi, kad lietotājs aizver pārlūkprogrammu. HTTP protokols ir vienkāršs - lapa tiek pieprasīta, saņemta un savienojums izbeidzas. Lietotājs var tavā lapā sēdēt, neko neklikšķināt un brīnīties piecus gadus. Piecu gadu laikā tava lapa jau sen ir izdzēst un atslēga - nolauzta, bet lietotājs nezina! Jo pēc lapas ielādes nav sakaru starp tevi un viņu. Kad uzstāda sīkdatnes un nenorāda to darbības laiku, tad tām vajadzētu izdzēsties pēc pārlūkprogrammas aizvēršanas. Ja tev vajag izdzēst sesiju uzreiz pēc lapas ielādes, tad tev, acīmredzot, sesiju nevajag vispār vai arī tu nesaproti to būtību. Sesija ir līdzeklis pašreizējā stāvokļa uzglabāšanai vairāku lapu garumā. Ja tā ir tā lapa, kur lietotājs beidz darbu tavā sistēmā, tad tev kādā PHP skriptā jāievieto rindiņa session_destroy(). Un nevis HTML daļā, bet vēl pirms HTML ģenerēšanas. Ieliec visu savu skriptu sākumā rindiņu ob_start() un tad tu varēsi laikam session_destroy() izsaukt arī skripta beigās. Tikai neliec to nekādā onload notikumā iekš Javascript. onload notikumā var rakstīt tikai Javascript, bet tu ko ierakstīji?
  11. Ja runa ir par MySQL tabulas lauciņa īpašību auto_increment, tad šī īpašība ir domāta, lai norādītu, ka lauciņā pie INSERT jāģenerē unikāls ID, kas ir automātiski par vienu lielāks nekā iepriekšējam šajā tabulā ievietotajam ierakstam. Ja iepriekš neviens ieraksts nav bijis, tad pēc noklusējuma tiek ievietota vērtība 1. Piemēram, rakstot INSERT pieprasījumu var rakstīt: INSERT INTO tabulasNosaukums (id,vards,uzvards) VALUES ('','Vārds','Uzvārds'); Kā redzams priekš 'id' lauciņa vērtība nav norādīta - tā tiek iegūta automātiski ar auto_increment. Ja man nebūtu auto_increment uzstādījums šim 'id' lauciņam, tad tur atkarībā no pieļaujamā datu tipa tiktu ievietota 0 vai tukšums.
  12. Meklēju PHP5 hostingu Latvijā pie cilvēka, kas zina, ko dara hostinga lietās. Prasības: vieta 100 līdz 150MB, MySQL 4.1, PHP5.0.2->, PHP5 jābūt iekompilētiem vismaz sekojošiem extensions: iconv, tidy, mbstring, xsl, gd2, mysqli, pdf, zip, xmlreader, xmlwriter (no Pecl pakotnes). Jābūt iespējai kaut ko ielikt crontabā. Var nebūt SSH, SFTP gan varētu (bet pārdzīvošu, ja tikai FTP), jābūt ātram un stabilam pieslēgumam. Nekāda masu lapa nav paredzēta, pornogrāfijas nebūs. Maksāt varētu līdz 10Ls mēnesī. Tas būtu personīgi man.
  13. !?! Tas tak nav specpasūtījums, bet gatavs produkts, kuru pērk simtiem cilvēku visā pasaulē. Uztaisīt Lāses piena pakas iepakojumu arī nevar par Ls0.45. Ja kas.
  14. Eu, pacani. Ja vajag servakam OSi, es varu dabūt nullifie Windows 2004 Advanced Server versiju. Karoče zvaniet, sarunāsim. Komjunitī vārdā man nav žēl. p.s. te mums ir tie cilvēki, kurus sauc par latviešiem praktiskajiem.
  15. kirils un Delfins: Ja manas divus gadus vecās brilles nemelo, tad skaitlīši blakus jūsu lietotājvārdiem, kas informē par Jūsu viesošanās biežumu šeit forumā, ir ļoti nelieli. Tāpēc Jūsu aktīvā iesaistīšanās šajā te diskusijā ir viens riktīgs spārnota buļļa sūdiņš. Ne jūs zināt PHP.lv garastāvokli, ne arī Jūs kaut ko saprotat no PHP.lv + Foruma lietošanas pieredze. Pats arī neesmu te rakstījies ilgu laiku, pašam arī netīk ideja tērēt tad, kad it kā varētu netērēt, tomēr saprotams, ka pirkt PHP programmas priekš PHP programmētājiem ir mazliet svēta lieta - mēs tomēr atbalstām PHP līdz ar to. Turklāt, ticu, ka tie, kas še no php.lv foruma veterāniem šo ideju atbalsta, zina labāk par mani un tāpēc pievienošos. Ar diviem latiem. Un jutīšos lepns. P.S. Par PHP.lv garastāvokli. Pirms kāda gada vai vairāk te rakstījos un jautātāji pārsvarā bija rupji un atbildes pavēloši. Pēdējās nedēļas laikā esmu te iegriezies vairākkārt un novēroju, ka jautājumi nav kļuvuši gudrāki (iesācēji visos laikos ir iesācēji), bet vismaz - pieklajīgāki. Forši tas ir. P.S.2. Forumā varētu ieviest reģistrēšanās maksu - īsziņa par Ls0.35 vai cik tur. Ja forums paliks pieejams visiem, tad cilvēki redzēs, ka te atbildes var reāli dabūt un, iespējams, noreģistrēsies par tām mazajām naudiņām un maksās mazumiņu par PHP.lv supportēšanu nākotnē.
  16. jb4

    GD bibliotēka

    Lai kaut kas nesanāktu, kaut kas ir jāmēģina darīt. Ja neko nedara, tad var teikt, ka sanāk viss. Cik es saprotu, tad tev sanāk viss. Ja tev tomēr kaut kas nesanāk, tad ir jāsaka, kas nesanāk. Ja esi kaut kā mēģinājies, tad pastāsti, ko mēģināji. Atver savu php.ini failu (parasti atrodams C:/php/php.ini) [ja installeeji php ar installeri, kur spiedi next->next->next, tad taadu neatradiisi - installee par jaunu) un pie extension pievienoshanas paarliecinies, ka pirms rindinjas, kas attiecas uz gd biblioteeku, nav semikols. Vislabaak ir uzinstalleet php par jaunu. Pamaaciiba forsha ir (shepat forumaa uzzinaaju): http://www.tanguay.at/installPhp5.php5 Ja installeesi kaa pamaaciibaa, tad ar PHP GD probleemas nebuus.
  17. jb4

    [QUOTE][/QUOTE]

    vajag lietot /s modifaijeru
  18. bubu, nemāci cilvēkiem muļķības par action="" lauciņu. ja grib, lai formas ievaddati tiek ielikti pieprasījumā uz to pašu skriptu, tad jāraksta <form action="<?=$_SERVER['PHP_SELF']?>" ... Tas tukšais action="" darbosies tikai tad, ja tu iesniegsi uz index.php vai index.html vai kādu citu, kas tev norādīts apache konfigurācijā kā direktorijas index fails. action="" novedīs uz turieni, kas tev norādīts ir base birkā vai arī uz direktoriju, kurā atrodas formas ģenerēšanas brīdī izpildītais skripts.
  19. Ja tev nav laika lasīt pamācības, tad installē WAMP un viss uzreiz jau būs: PHP5, Apache 1.3 un MySQL 4.0 vienā gabalā. http://www.wampserver.com/index.php?lang=en
  20. jb4

    Nelasa manigos

    Ja ir iesniegta forma, tad PHP pēc noklusējuma formas mainīgos neuzskata par skripta mainīgajiem. Tie ir paslēpti skripta mainīgajā $_REQUEST. Tas ir masīvs. Vai zini, kas ir masīvs? Tas ir vairāku lietu saraksts. Piemēram, vienas klases skolēnus var visus kopā uzskatīt par klases skolēnu masīvu. Skaties šo pierakstu: $skoleni = array('Andris Ābele','Bebrs Brālītis','Cūka Cālīte'); Katram klases skolēnam ir savs kārtas numurs žurnālā - te tas nav uzrakstīts, bet var redzēt, ka pirmais ir Andris Ābele, otrais ir Bebrs utt.. Programmēšanā masīva elementus numurē sākot ar 0, respektīvi, 0.tais ir Andris, pirmais ir Bebrs un trešā ir Cūka. Ja gribam noskaidrot, kurš ir skolēns ar otro kārtas numuru, tad rakstām PHP kodu: echo $skoleni[2]; Ja gribam pievienot skolēnu sarakstam vēl vienu skolēnu, tad rakstām sekojošu kodu: $skoleni[] = 'Dunduks Dirsniņš'; Ja gribam noskaidrot elementu skaitu masīva, tas ir klases skolēnu kopējo skaitu, tad rakstām: echo size($skoleni); Ja gribam izdrukāt visus klases skolēnu vārdus ar cikla palīdzību, tad var rakstīt: foreach ( $skoleni as $skolnieks ) { echo $skolnieks.'<br />'; } Ja gribi ātri uzzināt, kas iekšā masīvā, bet ciklu rakstīt nav spēka, tad var rakstīt: print_r($skoleni); print_r() funkciju atceries. Tā ir noderīgi, kad vajag fiksi zināt, kas ir iekšā masīvos. Vēl ir otra veida masīvi. Tādi, kur elementus atšķir nevis pēc kārtas numura, bet pēc atslēgas vārda. Piemēram, ir saraksts ar maniem draugiem un viņu telefona numuriem, kur kaut kādu telefona numuru var noskaidrot, ja zina drauga vārdu. Tādu masīvu PHP kodā var uztaisīt šādi: $telefoni = array(); $telefoni['Julja'] = 9094545; $telefoni['Natasha'] = 9006969; $telefoni['Nastja'] = 118; Varēju arī rakstīt īsāk: $telefoni = array('Julja'=>9094545,'Natasha'=>9006969,'Nastja'=>118); Tagad, lai noskaidrotu manas mīļākās ielasmeitas (Juljas) telefona numuru, es rakstu: echo $telefoni['Julja']; Vēl dažreiz ir tā, ka nezini, vai ir tavā sarakstā kādas vecenes telefons, vai nav. To var noskaidrot tā: if ( isset($telefoni['Masha']) ) { echo 'Jess. Man ir arī Mašas telefona numurs!'; } else { echo 'Fak. Kāds nezina Mašas telefonu? Man nav!'; } Un tagad atpakaļ pie formas. Pēc formas iesniegšanas visi formas mainīgie tiek izmitināti sarakstā ar nosaukumu $_REQUEST. Tas ir tā otrā veida saraksts, kur elementus atrod pēc nosaukuma. Piemēram, ja formā ir bijis elements 'username', tad tu ievadīto vērtību vari atrast: echo $_REQUEST['username']; Bet tā rakstīt nav droši, jo tu nezini, vai 'username' patiešām ir ievadīts formā. Tāpēc labāk raksti tā: if ( isset($_REQUEST['username']) ) { echo 'Tu ievadīji username: '.$_REQUEST['username']; } else { echo 'Tu, cūka nolādētā! Tu tak ne velna neesi ievadījis!'; } Lai programmu rakstot redzētu visu, kas formā iesniegts, var izmantot to iepriekš minēto f-ju print_r(): print_r($_REQUEST); Tad tu redzēsi ar ko tev ir darīšana. Un pašās beigās vēl viens padoms. Ja tu esi riktīgs duraks un augstāk uzrakstīto nesaproti vai arī ja esi slinks (tāpat duraks), tad, lai izpildītos visi tajā grāmatā rakstītie skripti, katra sava koda sākumā ieraksti rindiņu: extract($_REQUEST); Tad PHP uztaisīs no visiem $_REQUEST elementiem mainīgos un būs tev tas nolādētais $username pieejams. Vēl viena lieta. Visu savu skriptu sākumā liec rindiņu: error_reporting(E_ALL); Tad PHP sapratīs, ka tu vēl tikai mācies un ziņos tev par visām kļūdām, ko tu pielaid. Tas arī ne tikai mācībām, bet reālai izstrādei. Tu jau, protams, vari priecāties, ka ir tā f-ja extract(), bet to funkciju ir jāmāk izmantot... Ja tu taisīsi extract($_REQUEST) un kaut kur kodā, piemēram, rakstīsi, ka vēlies izdzēst failu ar nosaukumu $fails, tad es varētu pārlūkprogrammā adreses lauciņā pierakstīt klāt tekstu '?fails=C:/Documents and Settings/Zoom/MashaPlika.jpg' un Mashas kailfoto uz tava datora izdzēstos. Vai tu to gribi? Nē, tu to negribi. Tāpēc raksti kā īsti džeki, tas ir, izmanto masīvu request. Labsir, priecīgas Lieldienas.
  21. Tas ir jāatkārto: - Kādu XML parseri lieto? - Lietoju XML parseri.
  22. Izlasi http://esuntu.com/wp-content/php5_01.html
  23. Paldies. Pirms kāda laika, kad vēl regulāri kodēju PHP, varēju ar PHP5 tikt klāt MySQL ar veco API, bet tagad vairs nevarēju ;]
×
×
  • Create New...