Jump to content
php.lv forumi

Lynx

Reģistrētie lietotāji
  • Posts

    228
  • Joined

  • Last visited

Everything posted by Lynx

  1. Pag, tu patiesi met to andrisp kodu iekšā php? Heh, varu pateikt priekšā: tas ir javascripts ;) Un javascripts izpildās client side, tavā gadijumā nav jēgas viņu laist caur php. To tekstu iemet vienkārši iekšā .js failā, includo headeros un pielāgo savām vajadzībām.
  2. Pēc viņa apraksta: viņš ir aizpildijis formu, bet spiežot submit nekas nenotiek. Tas visticamāk nozīmē, ka viņam formā nav norādīts action. Iesaku pamodificēt html kodā formu un sataisīt šādi: <form action="cels_uz_formas_apstrades_koda_atrashanas_vietu.php" method="POST"> Bet kā jau andrisp minēja: tas ir vienkārši language fails, ko tu mums rādi un nav iespējams noteikt precīzu problēmu.
  3. Lynx

    Login

    Es parasti lietotāju tabulā ielieku lauku last_login, kurš tiek updeitots ik pa pāris minūtēm, kad cilvēks pārvietojas pa lapu. Pēc tam vienkārši, lai saprastu vai cilvēks ir online nodefinējam laiku, kādam jaiztek, lai nebūtu online un pārbaudam. Ja vēlamies saskaitīt cik kopā lietotāju ir online var izmantot kaut ko līdzīgu šim: SELECT COUNT(id) FROM users WHERE last_login + 600 > NOW()
  4. Lynx

    Domēns!

    Neredzu iemeslu, kapēc būtu jaliek atsevišķš ports. Ja tev ir apache, izmanto <VirtualHost> direktīvu un sakonfigurē cik tev domēnus vajag uz servera. Un noorganizē, ka nics piesaista tev viņus vienai ip. Uz IIS tas arī ir izdarāms ļoti vienkārši izmantojot menedžeri, precīzi neatceros. Palasi manuāli.
  5. Eh, iesakau padomāt, ko tu tikko esi uzrakstījis :) Pārtulkošu: if(1 + 1 < 1) { izpildam; } Kā redzi ir nepareiza loģika, un nekad nevarēs izpildīties šis if. Tāpat es īsti nesaprotu, kapēc tev pēc 1s ir jaizdzēš fails. Tur jau ir jaizmanto sleep(1), lai panāktu 1 sekundes pauzi. P.s Tavā gadijumā, nav nepieciešams lietot pēdiņas iekšā time() funkcijai. Starp citu, labāk izmanto $_SERVER['REQUEST_TIME'], ja tev ir php 5.1+, strādās ātrāk. Un neredzu jēgu $dat pārtaisīt par mainīgo, ja tu tālāk to $dat neizmanto.
  6. Manuprāt, viņam noteikti jau ir primary key, vajag šim laukam tikai pievienot auto increment. mysql_query('ALTER TABLE `war3users` CHANGE `id` INT NOT NULL AUTO_INCREMENT');
  7. Kā teiktu bubu: netaisi muļķigas quotes :P Un es ceru, ka manā variantā tu šo komentāru rindu: //..... nomainīji ar pārējo nepieciešamo kodu(kuru es nepostoju, lai lieki nepiesārņotu vietu), jo spriežot pēc tavām problēmām es to stripri sāku to apšaubīt...
  8. Kā tad tavam kodam būtu jasaprot, kas ir $w un $h, ja viņi pirms tam nav definēti? 1) Iesaku rakstīt pašam kodu no 0, būs daudz vieglāk un pats neapmaldīsies. Kā arī tajā kodā ir ļoti daudz neglīti risinājumi. 2) Nav nepieciešams int vērtības likt pēdiņās. 3) Tas ifs, kas nosaka izmērus tev janes no augšas uz to vietu, kur tu jau esi noskaidrojis attēla izmēru, gala rezultāts ir šāds: $imgdata=getimagesize($full_server.$album.$file); if ($imgdata[0] > $imgdata[1] ) { $thumb_width=145; $thumb_height=120; } else { $thumb_width=145; $thumb_height=193; } $imgresized=imagecreatetruecolor($thumb_width, $thumb_height); If($file_ext=="gif") { $imgsoruce=imagecreatefromgif($full_server.$album.$file); } //..... imagecopyresized($imgresized, $imgsoruce, 0, 0, 0, 0, $thumb_width, $thumb_height, $imgdata[0], $imgdata[1]);
  9. Heh, iesaku palasīt mysql manuāli dev.mysql.com Bet iepriekšējā postā, es nedomāju, ka tu meiģini insertot value auto increment laukam. Kopā jabūt šādi: create table prototips (ID int unsigned not null auto_increment primary key, `timestamp` TIMESTAMP, img varchar(50)); mysql_query('INSERT INTO prototips , `timestamp`= NOW(), img = "'.$img.'" '); Starp citu, ja tu glabā linku uz bildi, tad lieto labāk varchar(garums max pielaujamais). Bet, ja tu vēlies tajā img laukā likt iekšā bildi, tad iesaku rūpīgi pārdomat un glabāt tikai linku, vai vislabāk tikai nosaukumu. Iesaku arī pārdomāt vai timestamp laukam atstāt nosaukumu timestamp, tas ir rezervētais nosaukums un nozīmē, ka visos querijos, lai izmantotu tev vajadzēs viņu likt apastrofos(`).
  10. Lai redzētu errorus iekš php.ini uzliec display_errors = on Un php sākumā sākumā: error_reporting (E_ALL | E_STRICT); Tev ir sintakses kļūda querijam, un es daru šādi: mysql_query('INSERT INTO prototips SET smth = "0", time=NOW(), info = "'.$text.'" '); Daudz ērtāk veikt izmaiņas datubāzei un ir skaidri redzams kādas vērtibas tiek updeitotas. + apskaties, vai tur kur ir 0 nav labāk izmantot defaulto value.
  11. Nu galvenā problēma ir tā, ka 90% gadījumos tiek atgriezts uzģenerēts tīrs html, kas ārī bez problēmām tiek attēlots. Un šeit lietot tīru js, lai uzģenerētu šo te pašu html contentu DOM kokam jau būtu overkills. Šoreiz, tapēc, ka ļoti js intensīvs projekts un svarīgāks ir js izpildes ātrums nevis aizsistais bandwidth. Un dažreiz ir arī nepieciešams izpildīt kopā ar atgriezto html arī kādu js kodu un šis šķiet daudz effektīvāks variants nekā taisīt ntās funkcijas iekš headeros inkludotā js faila.
  12. Hahā :) Nebūs man nekādi iekļautie tagi un liels paldies, bubu, par parādīto risinājumu, ļoti noderēja. Reāli šīs regexps ir nepieciešams tikai, lai apstrādātu ajax atgriezto atbildi un izsauktu noteiktas funkcijas, vai izpildītu darības. Un ja pagadās starp <script> tagiem neizpildāms vai gļukojoš kods, tā jau ir server side problēma un to atrisinās pēc pamanīšanas. Tur jau varēja pat script tagus neizmantot, man tas vienkārši šķita visloģiskākais apzīmējums, ko izmantot php izvadītiem datiem, kurus tālāk ir jaevaluē ar javascript.
  13. Šoreiz gan otrādāk izveidojusies situācija, varbūt tomēr tieši nav ar lielgabalu? :) Stāsts: Man nekādīgi nesanāca uzrakstīt Regexpu, kas starp <script> </script> tagiem javascript stringam izvilktu saturu. Tapēc uzrakstīju šādu variantu: kā redzat izskatās, ka varētu būt overkills salīdzinot ar Regexp - 4 lietojam indexOf(ajax responseText varētu būt ļoti garš, tad to varētu sākt stipri just), 2 temp mainīgie etc. if(request.responseText.indexOf('<script>') != -1 && request.responseText.indexOf('</script>') != -1) { var js_start = request.responseText.indexOf('<script>'); var js_end = request.responseText.indexOf('</script>'); eval(request.responseText.substring(js_start+8,js_end)); } Tapēc neliek mieru jautājums, vai ar Regexp būtu ātrāk, effektīvāk(mazāk koda) un pats galvenais kāds tad varētu izskatīties pats regexps? vienkārši ir padomā pāris testi..
  14. Es teiktu, ka table ir paredzēts, kā jau to nosaukums, vēsta tabulu attēlošanai. Un pats tieši tādam mērķim viņas tikai izmantoju. Kā arī ir iespējams ar tīru css panāk to pašu, ko ar tabulām, tikai izmantojot daudz mazāk koda, vai arī ja saglabā to pašu daudzumu kb, tad tikai loģiski, ka vairāk ir aizgājis uz css. Un css tiek nokešots šādi tiek ietaupīts bandwidth.
  15. Delfi, jauns? Ko tu esi sapīpējies? :) Izskatās drausmīgi nesakartoti un nepārskatāmi. Cik man zināms pēc manu projektu statistikas, cilvēki ar veciem browseriem kļūst aizvien mazāk un pamazām tauta izglītojas. Vismaz vecāks browsers par IE6 ir daudz zem 1%. Protams, manus datus nevar uzskatīt par ļoti objektīviem, bet tas vienozīmīgi manuprāt nav iemesls kapēc tika taisīts tabulās. Paši delfi ir taisīti ļoti sen un tad vēl nebija īsti pieņemts taisīt tableless risinājumus.
  16. Tad tev jataisa pašam kāds risinājums. Es nezinu kā ar performance, bet es darītu šādi: Noteikti tev katram ierakstam ir id, šo te id izvadot ierakstu liec iekšā array. Pēc tam katru nākamo ierakstu izvadot pārbaudi vai tā ieraksta id atrodas jau augstāk minētajā array. Ja neatrodas, izvadi un ieliec tikko izvadīta ieraksta id array, ja atrodas ej uz nākamo ierakstu.
  17. Lynx

    Links

    Tas saucās Ajax. Papēti internetā piemērus. Bet es gan neieteiktu nekur nemainīt adresi, jo meklētāji nevarēs noindeksēt precīzi informāciju.
  18. Tad arī vērsies pie mainīgā, kuŗš satur datubāzes atbild un pārbaudi vai nav tukšs. Cik saprotu tev tas ir iekšā: $row['jaunumi_2']; if(!empty($row['jaunumi_2'])) { echo '<a href="radit.php?q='.$row['id'].'">Lasīt vairāk</a>'; } PS. Tev nevajag to else, kas neko nedara. Un derētu tev htmlam markup valīdu, tā kā manā piemērā ;)
  19. Es rakstītu šādi, ja tev patiesi vajag apvienot, ērtāk jau būtu vienā stringā. var out = 'UPDATE izveletie '; out += 'SET izveletie.Tips = '; out += 'document.getElementById(\'selekts\').value'; out += ' WHERE (((izveletie.Tips)=Korpus));'; alert(out); Ar e tev problēma, gan jau, ka bija tapēc ka neeskeipoji pēdiņas;
  20. Šodien paspēlējos ar savu mysql serveri. Ja visiem projektiem uz mysql ir defaultā vajadzīgs utf-8, varam mierīgi pievienot šīs divas rindas [mysqld] sadaļā konfigurācijas failā un restartēt mysql. default-character-set=utf8 skip-character-set-client-handshake Tas atrisina to, ka nav vairāk nepieciešams pirmo kveriju sūtīt: SET NAMES utf8 Hmm, teorētiski, vai nevajadzētu arī būt pat ļoti maziņam performance gainam?
  21. Ideja jau ir vienkārša vienkārši uzraksti jaunu ifu. Kods gan izskatās nedaudz padumji. if (is_file('bilde.jpg')) { echo '<img src="bilde.jpg" width="170" height="203" align="left">'; } elseif(is_file('bilde.gif')) { echo '<img src="bilde.gif" width="170" height="203" align="left">'; } Hmm vēl var meiģināt šādi, ja tev ir tikai divas iespējas un bilde vienmēr būs: echo '<img src="bilde.'.(is_file('bilde.jpg) ? 'jpg' : 'gif').'" width="170" height="203" align="left">'; Bet patiesi labāk liec informāciju datubāzē, iztiksi bez liekiem searchiem pa filesistēmu.
  22. Lynx

    Web ramiits

    ? Rāmītis, kurā tekstu rakstīt es saprotu, ka ir domāta: <textarea cols="60" rows="16" name="text"></textarea> Tieši tāds pats laukums, kurā mēs rakstam tekstu, lai publicētu ziņu forumos. Bet tavā piemērā ir parādīts embeded objekts, šajā gadijumā Media playeris: <EMBED TYPE="application/x-mplayer2" SRC="" NAME="MediaPlayer"></EMBED>
  23. Jā, strādā effektīvāk un bez nekādas aizķeršanās :) Godīgi sakot pat šādi sanāk daudz vieglāk saprotams kods. Jo vecajā variantā, ja mums vajadzēja parādīt kādu kartes elementu ekrāna redzamajā daļā, vajadzēja mainīt top un left kordinātas, un parasti tas izskatījās šādi: top: -1253px; left: -3200px;(Ļoti neglīti piesārņo html, manuprāt). Kā arī varēja izscrollot to divu ārpus ekrāna pa visam. Jaunais variants pagaidām visas problēmas ir atrisinājis.
  24. O izcili, šādi arī biju meiģinājis taisīt, bet pieļāvu būtisku kļūdu risinājumā, tāpēc nesanāca. Tavs piemērs, bubu, palīdzēja - kodu upgreidoju. Paldies
  25. Man ir situācija, kur nepieciešams kustināt 6000x3000px lielu <div> elementu, kuram iekšā atrodas karte. <html> ir norādīts overflow: hidden; Tas nozīmē, ka uz ekrāna no <div> ir redzama tikai tā daļa, kas ietilpst ekrānā. Piemēram 990x680px. Uz 1024x768 lielu izšķirtspēju. Es izveidoju ļoti prastu js kodu, kurš darbojas. Un 8us elementus: <div style="position: absolute;" onmouseover="MapScroll();" onmouseout="StopMapScroll();"> ar kuru palīdzību tiek iedarbināts scrollings uz norādīto pusi, iespējami arī divi virzieni reizē, piem: topleft; Tapēc arī tiek izmantots indexof(); Problēma rodas performancē: netiek šis div kustināts plūstoši, bet ļoti saraustīti ar neregulāriem intervāliem. Varbūt ir citi risinājumi kā šo elementu kustināt, nepieskaitot klāt pikseļus, bet izmantojot kādas citas iebūvētās funkcijas vai tehnoloģijas? Vai vienkārši kādas koda optimizācijas? Galvenais iemesls, kapēc man nesanāca izmantot populāros scrollošanas risinājumus, piem: scrollBy(0, 50); ir tāds, ka nedrīkst pārvietot jau šos 8 minētos elementus, kas iedarbina kustināšanu + pārējos interfeisa elementus. Lapai kods izskatās aptuveni šāds: <html><div id="interface"></div> <div id="map"></div> </html> Nepieciešams kustināt tikai id="map". function MapScroll(obj, direction) { object = document.getElementById(obj); if(!window.MapScroll_speed) //initializejam, veicam nelielu pauzi, lai neiedarbinaatu scrolloshanu netisham { window.MapScroll_speed = 10; window.MapScroll_timer = setTimeout("MapScroll('" + obj + "', '" + direction + "');", 500); } else { if(object) { scrollObjTop = parseInt(object.style.top); scrollObjLeft = parseInt(object.style.left); if(direction.indexOf('top') !=-1) { object.style.top = scrollObjTop * 1 + window.MapScroll_speed * 1 + 'px'; } if(direction.indexOf('bottom') !=-1) { object.style.top = scrollObjTop * 1 - window.MapScroll_speed * 1 + 'px'; } if(direction.indexOf('right') !=-1) { object.style.left = scrollObjLeft* 1 - window.MapScroll_speed * 1 + 'px'; } if(direction.indexOf('left') !=-1) { object.style.left = scrollObjLeft* 1 + window.MapScroll_speed * 1 + 'px'; } window.MapScroll_speed += 3; //palielinam atrumu window.MapScroll_timer = window.setTimeout("MapScroll('" + obj + "', '" + direction + "');", 30); } } } function StopMapScroll() { if(window.MapScroll_timer) { clearTimeout(window.MapScroll_timer); window.MapScroll_speed = null; } }
×
×
  • Create New...