Jump to content
php.lv forumi

Lynx

Reģistrētie lietotāji
  • Posts

    228
  • Joined

  • Last visited

Everything posted by Lynx

  1. Lynx

    Par input

    Tātad sastapos ar problēmu, ka kārtīgi japamaina dizains esošajām formām, redz cik es tālu tiku un viss darbojas uz Firefox(un arī dažas vietas nepārāk perfekti): Izgriezums no koda: <td><input type="button" value=" " onClick="document.getElementById('.$i.').value--;" style="background:url(\'./dizains/input/left.gif\') no-repeat; background-position: center center; border:none;"></td> <td width="80" align="center" style="background:url(\'./dizains/scroll/ramis.gif\')no-repeat; background-position: center center;"><input id="'.$i.'" name="'.$row['id'].'" type="text" value="0" size="7" style="background:none; border:0;"></td> <td><input type="button" value=" " onClick="document.getElementById('.$i.').value++;" style="background:url(\'./dizains/input/right.gif\') no-repeat; background-position: center center; border:none;" /></td> Ar buttoniem ir tā, ka viņiem tiek apgriezti pāris pikseļi un nesanāca man nekādigi palielināt <td>, lai tas nenotiktu. Eksistē šāds veids: <input type="image" src="./dizains/blabla" onClick="document.getElementById('.$i.').value--;" > Javascripts izpildās, bet momentāli forma tiek nosubmitota, kas nekam neder... Šādi izskatās uz firefox, viss kārtībā ja neskaita nedaudz apgraizītos taustiņus: Ir idejas, kā uzlabot?
  2. Include šajā gadijumā vispār netika izmantots. Visu laiku meiģināju Venom skriptu dabūt pie pareizas izpildes. Vispār atrisinājums bija gaužām vienkārš un pašam kauns par savu stulbumu :) Attiecigi es norādiju full path(http://) uz log faila atrašanās vietu, jo logi glabājās pāris soļus atpakaļ folderī. Njaa šitads čakars nelielas :D neprecizitātes dēļ.
  3. Hmm es nesaprotu, par ko tu nesaproti, kapēc man būtu kautkur japievieno šāda rindiņa kuru tu minēji? Datu ievadē viss darbojas. Bet nav iespējams datus izvadīt caur admin paneli. Dati tiek glabāti php failos, jo serveris ir IIS 4.0 un nepieļauj .htaccess, lai nobloķētu pieeju piemēram txt failiem. Un struktūra kā izskatās ieraksti ir šāda: <?PHP die(); ?> 2005-04-06 16:17:08 Action: Move From: 414 To: 415 2005-04-06 16:17:10 Action: Move From: 415 To: 515 Problēma ir tāda ka izvadot datus vajag noskipot 1o rindiņu, lai netiktu izpildīts die() un tādējādi nepieļautu datu nolasīšanu.
  4. Jā tikai šis koda fragments neizpildās. Tas imho nozīmē ka tiko kā atveram failu izpildās exit; pirms vel tiek paspēts noskipot 1o līniju. Ja es sapratu ko tu domā: Ievadē tiek izvadīts: ./log_files/Lynx.php Lynx Izvadē, pirms echo '<br />'.$line; Ja uztaisu print $_GET['username']; Izvadās Lynx, tas nozīmē ka neizpildās tikai lasīšanas daļa. $_GET['username'] ir nodefinēts. Par preg_match taisiju šādu variantu: <?PHP if(preg_match("/Lynx.php/i", $_SERVER['PHP_SELF'])) die(); ?> No interneta nolasīt nevar, caur admin paneli arī nezkapēc nevar.
  5. Logu nemeiģinu inkludot, viss lapas kods attiecigi tajā vietā sastav tikai no tās tavas dotās rindiņas. Arī jaunais lasīšanas variants nestrādā. Sāku domāt varētu būt problēmas ar php versiju. Jo kods tagad ir tīrs copy/paste. PHP Version 4.3.1 Ja <?php exit; ?> pirmaja rindaa ir, kods vispar neizpildās, ja izdēšam tad visi ieraksti tiek parādīti izņemot pirmā rinda. Pameiģināju arī preg_match izmantot lai nogalinatu lapu, nekā :( Uztaisīt kodu, ja nav padots noteikts mainigais tad die(); Un mainigo no interneta nevar padot, jo global variables off. Tāpat negrib iet. Sāku apsvērt variantu pāriet atpakaļ uz mysql log failiem, darbojas bez problēmām.
  6. Venom, tavs variants strādā tikai daļēji. Pirmā rindiņa tiek patiešām nogriezta, ja tā nav šī te <?PHP exit; ?> Ar exit; skripts neizpildās vispār. Izmeiģināju gan ar $lines variantu, gan variantus iekš php.net manuāļa. Ja tas kautko varbūt maina, tad šādi izskatās ievades kods: function playerlog($message) { global $username; $log=fopen('./log_files/'.$username.'.php','a'); fwrite($log, "".date('Y-m-d H:i:s')." ".$message." \n "); fclose($log); } Un šādi es meiģinu izvadīt: $fh=fopen('./log_files/'.$_GET['username'].'.php','r'); fgets($fh,4096); //izlaižam pirmo rindu while($line=fgets($fh,4096)) { echo"$line<br>"; } Dati izskatās failā tieši šādi: <?PHP exit(); ?> 2005-04-06 16:17:08 Action: Move From: 414 To: 415 2005-04-06 16:17:10 Action: Move From: 415 To: 515
  7. Vairāk gan patiešām piekērt šmaukļus(kā Kavacky devēja viņus) Un arī iespējams izķert kļudas un nepieļaujamas lietas kodā, lai novērstu negodīgu spēli. http://dev.gamez.lv/viewtopic.php?t=376
  8. bubu, tavs variants nederēs, jo visu laiku jau starp <?PHP un ?> bus japievieno jauns teksts un pēc kāda laika tam visam būs jaizskatas šādi: <?PHP ieraksts 1 ieraksts 2 ieraksts 3 ?> Nevis: <?PHP ieraksts 1 ?> <?PHP ieraksts 2 ?> + vel neatradu veidu kā šādi ievadītus datus izvadīt uz admin paneli, vai nu met resourceid#1 erroru. Vai nekas nenotiek. Izvērtējot + un - nolēmu nečakarēties ar flat failiem un jau uzrakstiju funkciju, kas visu vajadzigo ieraksta mysql datubāzē.
  9. Nu lielākā problēma ir tāda ka nav tieša pieeja webservera konfigurācijai, tāpēc meiģinu meklēt kautkādus apkārt ceļus. Pēc idejas varētu rakstīt iekš php failiem un rīkoties šādi: <?PHP visi loga ieraksti ?> Bet nakamais jautājums vai var vispār šādu failu nolasīt? fopen nedarbojās, ar include dati netiek izvadīti. + vēl kā vispār var ierakstīt iekš faila saglabājot šo struktūru? <?PHP teksts ?> Varbūt citi varianti failu saglabāšanā.
  10. ... + izsekot projekta gaitai, iespējamajiem bugiem un viņu cēloņiem, ja pēkšņi log failā parādas ļoti interesanti un nenormas robežās dati.
  11. Tātad projekta attistībā esmu nonācis tik tālu, ka attiecīgi jebkura lietotāja kustība/darbība būtu jaiegrāmato. Un te rodas daži jautājumi par to kā labāk. Attiecīgi iespējas ir ievadīt visu mysql datubāzē, nav tik liela pārskatāmība, jo gandrīz katrai darbībai jataisa savs datu ierakstu izkārtojums, bet iespējams vinē drošība un ātrums. Otra iespēja likt iekš txt failiem un visu informāciju tik rakstīt iekšā failiņā ar lietotāja vārdu. Tagad jautājums kas ir ātrāk izmantot mysql(noslodze gan ir liela, jo visi dati ir mysql ierakstīti) vai arī txt faili būs ātrāki. Apstrādāt pēc tam viņus nevajadzēs. Nākamais par Mysql drošību nebūtu jautāumu, bet kā ar txt. Serveris ir Windows NT ar Microsoft-IIS/4.0 Tāpēc cik noprotu .htaccess faili nedarbojas un man arī nesanāk nobloķēt pieeju txt failu apskatei. Ir kāds veids kā appiet šo problēmu? Vel kādas idejas labākajam risinājumam?
  12. Lynx

    Lpp sadalijums

    Ja vēlies lai mysql automātiski saglabā šādā veidā datus dari šādi: parveido datuma tabulu par varchar(20) NOT NULL un inserto datus ar: $update = mysql_query("UPDATE blabla SET datums=NOW() ") or die(mysql_error()); tieši ar funkciju NOW() mēs varam insertot datus tādā formātā.
  13. Šodien programējot nonācu interesantā situācijā, no 3 dažādiem iepriekšēji uzrakstītiem kodiem nokopēju vienu mysql selectu. Un sāku domāt kurš ir pareizākais(ātrāks, etc) variants. Strādā visi, bet cik korekti? $upg = mysql_fetch_assoc(mysql_query("SELECT * FROM blabla WHERE id = '$id' ")); $now = mysql_fetch_assoc(mysql_query('SELECT * FROM blabla WHERE id = "'.$id.'" ')); $max = mysql_fetch_array(mysql_query("SELECT tas, tas1 FROM blabla WHERE kautkas = '".$now['kautkas']."' ")); Cik es noprotu vispareizāk ir strādāt ar mysql_fetch_assoc, jo es ar izvilktajiem datiem strādāju tikai šādā veidā: $now['id']. Bet jautājums paliek par visām pēdiņām utt. Un vēl esmu manījis, ka dažreiz tiek rakstītas šādas pēdiņas apkart `tabulas_nosaukumam`. Man strādā viss bez, bet kapēc un kādos gadijumos jaliek tās pēdiņas?
  14. Heh rīts kā vienmēr gudrāks par vakaru! Atrisinājums arī bija diezgan vienkāršs, izveidoju aili previous un pēc tam katram ierakstam salidzinu vai mums ir iepriekšējais ieraksts. Ja ieraksta nav tad neizvadam. Praktiski tagad izvade tiek pārbaudīta no 2iem galiem. Paldies Kavacky, jo meiģinot visu paskaidrot citam cilvēkam nāca lielāka saprašana kā to dabūt gatavu. Pareiza problēmas definēšana jau ir 1/2 no atrisinājuma.
  15. Man šķiet tu mani nedaudz pārprati, pēc struktūras sanāk šādi(numuri ir katra ieraksta id): 1ais upgreidu koks 1 -> 2 -> 3 2ais upgreidu koks 4 3ais upgreidu koks 5 -> 6 Koku skaits neierobežots, atkarīgs no tā cik tiek salikts datubāzē. Koki nesazarojas un nākamais ieraksts atarīgs no iepriekšējā. Izanalizēsim pirmo koku: Ja mums nav neviens ieraksts no koka, tad tiek rādits ieraksts ar id 1, ja mums ir 1, tad rādam ierakstu ar id 2, bet ne 1 vai 3, ja mums ir ieraksts 3, tad rādam tikai 3(jo koks vairāk neturpinās). Attiecīgi pilnais, daļēji strādājošais kods, attiriju no visa liekā - izstrādes procesā radīta: $m = 0; $upgrades = mysql_query("SELECT id, name, level, next FROM upgrades"); while ($upg = mysql_fetch_array($upgrades)) { $m++; $mums = mysql_fetch_assoc(mysql_query("SELECT upg_".$m." FROM ships_upgrades WHERE id = ".$ship_id."")); if($mums['upg_'.$m.''] == 0 || $upg['next'] == 0) { $upgrade_list = '<td width="25"><a href="pilseta.php?apm=shipyard&upgrade='.$upg['id'].'&kugi='.$_GET['kugi'].'" title="'.$upg['name'].' '.($upg['level'] != 1 ? 'lvl '.$upg['level'].'' : '').'"><img src="./dizains/upgrades/upg_'.$upg['id'].'.jpg" height="25" width="25" border="0"></a></td>'; } else { $upgrade_list =''; } Un šeit rodas problēma, jo mums jāskatās uz nākamo ierakstu vairākus soļus uz priekšu. Piemēram ja mums ir id 1, tad mums jāparbauda vai aile next !=0, ja nav tad jāizsledz no izvades nākamais id un atkal japarbauda aile next jau nākamajam id un janoskaidro vai koks neturpinās, kamer tiek izslegtas visas tālakas vertības. Un šo vietu nesanāk dinamiski uztaisīt, jo katram kokam ir savādāks ierakstu daudzums.
  16. Nu īsākos vārdos sakot tāda arī ir tā ideja. Bet diemžēl nesanāk, jo jaņem vēra kaudze papildapstākļi. Piemēram tas ka nevisiem upgreidiem ir talāks līmenis, bet dažiem ir pat vairāki un attiecīgi tie tālākie būtu japiegriež. Un vienkārši vairs nav ideju kā to panākt gatavu, jo visas manējās ir izgāzušās. :/
  17. Izvilkums no datubazes: Id: 1 Mums: 1 = Nakamais: 2 Id: 2 Mums: 0 = Nakamais: 3 Id: 3 Mums: 0 = Nakamais: 0 Id: 4 Mums: 1 = Nakamais: 0 Id: 5 Mums: 1 = Nakamais: 6 Id: 6 Mums: 0 = Nakamais: 0 Id: 7 Mums: 1 = Nakamais: 8 Id: 8 Mums: 1 = Nakamais: 9 Id: 9 Mums: 0 = Nakamais: 0 Tātad situācija šada: ir ieraksti datubāze un tie būtu jaizvada pēc noteiktiem kritērijiem. Tātad, piemeram, tur kur id 1: Mums = 1, tas nozimee, ka jaizvada ieraksts ar id 2(to nosaka pēc ailes Nakamais), nevis ar 1. Ja id 2: Mums: ir vienads ar 0, tad izvadītais id ari paliek par 2, bet ja Mums būtu bijis = 1, tad šī ieraksta vietā un ieraksta vietā ar id =1 ir jaizvada ieraksts ar id 3. Tur kur aile Mums = 0, talak nemaz neskatāmies un izvadam tā paša ieraksta id. Pagaidam pec ilga darba un vairakiem testiem ir shads kods: if($mums['upg_'.$m.''] == 0 || $upg['next'] == 0) //ar šo mes izpildām 2us uzdevumus izvadam tikai tos ierakstus kuriem nākmais == 0, un nakamos pec musu esoshaa id. //vel janogriež iespēju redzēt id tālāk par vietu kur mums =0 { $upgrade_list = 'blabla teksts'; } else { $upgrade_list = ''; } Problēma šāda: nesanāk uzrakstīt ifu no dotajiem parametriem, lai tiktu rādits tikai ieraksts ar nakamo id(šajā gadijumā 2), pašlaik tiek rādits gan ieraksts ar id 2, gan arī id 3, kuru nevajag rādīt zem dotajiem apstākļiem. Ir idejas kā dabūt gatavu, lai netiktu rādīti ieraksti līdz kuriem mēs vel neesam tikuši? Eh, cerams ka domu sapratāt :)
  18. Lynx

    sesijas

    Kā tu vispār domā saglabāt pašu sesiju, ja netiek izmantoti ne cookies, ne url? Ja nu vienigi var meiģināt padot sesijas id ar <form method="POST">. Bet imho sasodīti neērti.
  19. Lynx

    MySQL

    Hmm cik man sķiet tikai ar mysql to nevar dabūt gatavu - no vienas tabulas ailes izvilkt vienu ierakstu un no pārējām visus. Pats reiz meiģināju kautko tādu dabūt gatavu. Testejot izmeiģināju vairākus variantus gan ar DISTINCT, GROUP BY, pēc tam JOINOT datus etc. Nekā
  20. Par tiem 2iem ierakstiem: Pēc katra otrā ieraksta mēs pašlaik ieliekam </tr><tr> tadejādi izvadam 2us ierakstus rindā. Vairāk man gan interesē vai ir iespējams apvienot abus mysql_querijus. Jo cik saprotu katra querija uzsākšana aizņem kautkādus resursus un tapēc būtu vēlams samazināt queriju skaitu visur un apvienot viņus etc, lai iegūtu lielāku ātrumu. Vai arī es maldos šajā jautājumā?
  21. $i = 1; $result = mysql_query("SELECT id, nosaukums FROM munition;"); while ($res = mysql_fetch_assoc($result)) { list($skaits) = mysql_fetch_row(mysql_query("SELECT $res[nosaukums] FROM ships_munition WHERE ship_id = $now[id] ")); $i++; if($i%2 == 0) { echo 'Sadalam ierakstus uz pusēm'; } else{ echo'Neiedziļināsimies sīkumos'; } Šāds te izskatās mans kods. Vai ir iespējams uzrakstīt kautkā labāk ar vienu queriju? Meiģināju SELECT tabula1.id, tabula1.nosaukums etc. Bet nu nesanāca palaist. + vel varbūt mysql kautkā var aizstāt šo $i++ lietu, lai nebūtu jaskaita cik ieraksti un tad jadala uz katru 2o ierakstu. Vai tomēr nav iespējams panākt efektīvāk?
  22. Paldies par palīdzību! Err, tas numeric ir testa paliekas no meiģinājuma panākt formu, kurā var ievadit tikai ciparus, lai ari nebūtu nekādi error messidži. Vel viena lieta, forma input ailē vajag ari lai manuāli varet ierakstīt skaitli, netikai ar buttoniem. Meiģināju kautkā apvienot abas parbaudes bet nekā nesanāca.
  23. Tātad mums ir forma, kurā vertibu var gan ierakstīt, gan palielināt ar taustiņiem. Jauztaisa, sistema, ka ja tiek ievadīts(vai palielināts ar taustiņu) skaitlis lielaks par atļauto vērtibu, bez nekādiem paziņojumiem, vienkarši tiek nomainīts uz maksimāli atļauto vērtibu. Tas pats ar minimālajam vertībam. Javascriptaa esmu iesācejs(nu praktiski bez zināšanām), papētot dažādus skriptiņus nonacu pie šāda rezultāta, lieki piebilst, ka nestradā: //Shis kods ir ieksh nakama koda loopa, iznesu lai uzskatamak <script LANGUAGE="JavaScript"> function parbaudam() { var minSk = -$row[$now[nosaukums]]; var maxSk = +$city[$row[nosaukums]]; if (i<=maxSk) { el.value = i; } else { el.value = maxSK; } if (i>=minSk) { el.value = i; } else { el.value = minSK; } } </script> Un šeit ir izgriezums no koda kurā mēs ievadam skaitlus, nedarbojošos javascript tagus izņēmu: $i=-1; //lai id saktos ar 0, savadak javaskripts negrib funkcionet 0_o while ($row = mysql_fetch_array($result)) { $i++; <input type="button" value="<" onClick="document.getElementById('.$i.').value--;" /> <input id="'.$i.'" name="'.$row['nosaukums'].'" type="numeric" value="0" size="7"> <input type="button" value=">" onClick="document.getElementById('.$i.').value++;" /> } Kads var bišķiņ izpalīdēt ar pareiza koda uzrakstīšanu?
  24. Tātad ideja ir šāda: Mēs izvelkam valstu nosaukumus no datubazes un pēc tam nosakam cik apmeklētāji bijuši no valstīm iekš db. $arz = mysql_query("SELECT valsts FROM apmekletaji WHERE valsts != 'LATVIA' AND valsts !='Nenosakāma' AND diena = '".$datums[2]."' AND menesis = '".$datums[1]."' AND gads = '".$datums[0]."' "); while ($row=mysql_fetch_array($arz)) { list($skaits) = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM apmekletaji WHERE valsts = '".$row['valsts']."' AND diena = '".$datums[2]."' AND menesis = '".$datums[1]."' AND gads = '".$datums[0]."' ")); echo '<tr><td>'.$row['valsts'].'</td><td>'.$skaits.'</td><td></td></tr>'; } Un rezultāts izskatās aptuveni šāds: ESTONIA 2 ESTONIA 2 UNITED STATES 3 UNITED STATES 3 UNITED STATES 3 Kā uztaisīt, ka katrs valsts nosaukums un apmeklējumu skaits tiek izvadīts tikai vienu reizi?
  25. "SELECT * FROM tabula ORDER BY fkl DESC LIMIT 1" Pirma dala noteikti bus saprotama, pec tam skirot pec fkl(ORDER BY fkl), lielaka vertiba augshaa(DESC), izvadam tikai vienu ierakstu, shaja gadijuma pedejo (LIMIT 1).
×
×
  • Create New...