Jump to content
php.lv forumi

Lynx

Reģistrētie lietotāji
  • Posts

    228
  • Joined

  • Last visited

Everything posted by Lynx

  1. Nu jā tad redzkur ir problēma :) Uz tā servera ir tikai php 4. Es itkā salīdzinot ar bbcode piemēriem dabūju gatavu šādu brīnumu, lieki piebilst, ka nestrādā :) $text= preg_replace("#\<TABLE\>(.*?)\</TABLE>#si", str_replace("\n","","\\1"), $text );
  2. Hmm, nedarbojas. Nav nekādu erroru, bet arī izlabots nekas netiek. Meiģināju pats ilgu laiku salīdzināt, kā darbojas forumu bbcode, lasīt manuāli un salabot šo gabalu, lai strādātu, nekā.
  3. Tiku pielaists pie viena projekta un saskāros ar problēmu. Ir datubāzes lauks kuram sākumā ir nenoteikta daudzuma teksts un pašās beigās sākas tabula ar tieši šādu struktūru: <TABLE cellspacing=10 cellpadding=0 border=0> <TR> <TD align="center"><A href=""><IMG src="" border="0" alt="1"></A></TD> <TD align="center"><A href=""><IMG src="" border="0" alt="1"></A></TD> </TR> utt </TABLE> Problēma rodas tur, ka tabula ir veidota visur saspaidot "enter" un nl2br parvesh visus "enter" par bezjeedzigi lielu atstarpi starp teksta beigaam un tabulas sakumu ar atteliem. Ideja bija tāda, ka nepieciešams skripts, kas izravē visus enter starp tagiem <TABLE> un </TABLE> un pēc tam savada visu to datubāzē. Shitik taalu es tiku: izraveejam newline: str_replace('/n',"" , $teksts) Un ar izvadīšanu un ievadīšanu db arī problēmas nebūs. Bet kā panākt, lai tie newlaini tiktu nonemti tikai starp <table> </table> nav ne jausmas.
  4. SELECT id, type FROM map WHERE (id BETWEEN "7" AND "15") OR (id BETWEEN "107" AND "115") OR (id BETWEEN "207" AND "215") OR (id BETWEEN "307" AND "315") OR (id BETWEEN "407" AND "415") OR (id BETWEEN "507" AND "515") OR (id BETWEEN "607" AND "615") OR (id BETWEEN "707" AND "715") OR (id BETWEEN "807" AND "815") Šādam te selektam es mierīgi varu datus izvadīt ar while($row = mysql_fetch_assoc($query)) {, bet problēma rodas, ka man tos visus ierakstus vajag noindeksēt, piemēram, $ieraksts['1']['id'] utt un lietot pēc while beigšanās, bet tie dati vienkārši neuzrādās arpus while robežām. Man radās nepieciešamība šos datus izmantot vairākās vietās un visu laiku while taisīt sanāk ļoti neoptimizēti un bezjēdzīgi + dažās vietās neiespējami. Protams, var katram laukam taisīt 1nu selektu WHERE id = "7", bet lapas ielades un kveriju skaits palielinās 5kārtīgi. Ir idejas kā atrisināt?
  5. Ah, sākumā īsti nesapratu tavi problēmu. Vispār labāk neglabāt datubāzē attēlus, bet gan tikai nosaukumus, bet šādi var dabūt ārā $q = mysql_query('SELECT bilde FROM tabula WHERE id = $blabla'); list($b) = mysql_fetch_row($q); header("Content-Type: image/gif"); //headera image tipu nomainam uz tādu kādu vajag. echo $b;
  6. Umm, ir tada lieta kaa HTML? echo'<img src="'.$bildes_nosaukums.'" width="'.$bildes_platums.'" height="'.$bildes_augstums.'" alt="'.$bildes_nosaukums.'" />';
  7. Nav ērtāk izmantot šādu variantu? Šeit mēs atlasam cik lietotāji un viesi ir pakustējušies pēdējās 15 minūtēs. list($lietotaji) = mysqli_fetch_row(query('SELECT COUNT(*) FROM apmekletaji WHERE NOW() < pedejadarbiba + INTERVAL 15 MINUTE ')); list($registreti) = mysqli_fetch_row(query('SELECT COUNT(*) FROM lietotaji WHERE NOW() < pedejadarbiba + INTERVAL 15 MINUTE ')); $viesi = $lietotaji - $registreti; $gal = $lietotaji ==1 ? 's' : 'i'; echo $lietotaji.' lietotāj'.$gal.' aktīv'.$gal.' pēdējās 15 minūtēs no tiem '.$viesi.' viesi<br/>'; Šo te darbību mēs izpildam uz katra apmeklētāja kustību: list($numrows) = mysqli_fetch_row(query("SELECT COUNT(*) FROM apmekletaji WHERE ip='$ip' AND NOW() < pedejadarbiba + INTERVAL 15 MINUTE ORDER BY id DESC LIMIT 1")); if ($numrows == 0) { query("INSERT INTO apmekletaji(pedejadarbiba, ip) VALUES (NOW(), '$ip')"); } else { query("UPDATE apmekletaji SET pedejadarbiba= NOW() WHERE ip='$ip' ORDER BY id DESC LIMIT 1"); } Ielogojušamies lietotājiem vienkārši updeitojam pēdējās kustības laiku ar katru kustību.
  8. Lynx

    Paliidzat!

    Nevis kļūda, bet tu nepateici ka visām vērībām ir jabūt kā $_POST mainigajiem. Attiecīgi es vienmēr vārdu: "lapa" esmu rezervējis priekš $_GET. Pieradums... Izvadīšana nav nemaz tik vienkārša, kā tu to vēlies panākt... <?PHP $fh=fopen('ip_adreses.txt','r'); while($line=fgets($fh,4096)) { echo $line.'<br />'; } fclose($fh); ?>
  9. Lynx

    Paliidzat!

    fwrite($rakstam, $_POST['niks'].' - '.$_POST['emails'].' - '.$_GET['lapa']."\r\n"); Pamācies bišku php sintaksi. ar semikolu 'atdalam tekstu kur nav mainīgie, lai varētu izvadīt maingos atkal rakstam semikolu '.$mainigais.' un liekam punktus apkart mainīgajam'; Tas princips tiek izmantots ari augšējai funkcijai izņemot "\r\n" jo tie ir language konstruktori un ir nepieciešams lai viņi izpildītos ka enter taustiņa nospiešana.
  10. Lynx

    Paliidzat!

    Nu redz šeit darbojas tāda lieta kā pieredze. Man nav ne jausmas par aptuveni 75% no visām funkcijām un kā viņas darbojas. Es zināju ka noteikti irkāds labāks veids kā to pašu gabalu uzrakstīt. Kapēc lietoju regulārās izteiksmes salīdzināšanai? Jo neiedomājos(nezināju) par tādu lietu ka varētu tā prasti vienkārši salīdzināt. Ļoti labi ka norādiji uz šo lietu - no kļūdām mācamies. Heh un kā tavu komentāru, hmnc, saprast? Labāk būtu centies palīdzēt, nevis beztolkā tagad braucis virsū.
  11. Lynx

    funkcija

    Viens no veidiem: <?PHP $teksts = 'asddftasdpeletc'; if(preg_match('/pel/', $teksts)) { echo 'pel tika atrasts'; } ?>
  12. Lynx

    Paliidzat!

    Eh, Monzy, tavs kods ir sasodīti nelasāms + neoptimizēts. Ko teiksiet par šādu variantu? <?PHP $fails = 'ip_adreses.txt'; if (!file_exists($fails)) { die('Kautkas neiet, tātad nevar notikt turpmākās darbības!;['); } $handle = file($fails); foreach($handle as $v) { if(preg_match('/'.$_SERVER['REMOTE_ADDR'].'/', $v)) { die('Tava ip jau ir saraksta'); } } //neliekam ieksh else, jo ja nebus neviena ieraksta failaa mes neko neierakstisim $rakstam = fopen($fails,'a'); fwrite($rakstam, $_SERVER['REMOTE_ADDR']."\r\n"); echo 'Sveiks un paldies!'; ?>
  13. Vai ir kāds veids kā nokeshot visu noteiktas lapas saturu, lai viņš netiktu pārlādēts. Izņemot vienu koda gabaliņu, kas tiek inkludots? Struktūra ir aptuveni šāda: galvena_lapa.php <?PHP te kods include('cita_lapa.php'); cits kods ?> uz cita_lapa.php ir linki un nospiezhot uz kada no linkiem mes aizejam uz apstrades_lapa.php apstrades lapa izpilda savu kodu un padod headeru: <meta http-equiv="refresh" content="0;url=galvena_lapa.php"> Jautājums šāds, vai ir kāds veids kā nokeshot visu galvenas_lapas.php saturu, lai viņš netiktu pārlādēts, izņemot konkrēto cita_lapa.php includu? Vai varbūt ir nepieciešams, kautkā pārtaisīt to struktūru lai panāktu praktiski nemanāmu lapas pārlādēšanos?
  14. Paldies, bez tām pirmajām 2ām daļām jau varēja iztikt ;) Galvenais domu saprast. Bišku pārveidoju un dabūju tieši to ko man vajag: $post = ''; if(!empty($_POST)) { foreach ($_POST as $value=>$val) { $post =$post.' '.$value.' =>'.$val; } } te ievadam $post ieksh db...
  15. if(!preg_match('~^[-\w\d._]+@([-\w\d]+\.)+\w+$~i', $email)) { die('Emails ievadīts nepareizā formātā!'); } Pats lietoju šādu variantu viss strādā..
  16. Saskāros ar problēmu ko nekādi nesanāk atrisināt: Ar print_r($_POST) iegūstam šādu rezultātu: Array ( [test1] => 1 [test2] => 4 [velkautkas] => asd ) Jautājums: kā šo rezultātu ievadīt datubāzē, lai viņš izskatītos tieši tādā pašā formātā kā šeit redzams? Izgaju cauri dažādām funkcijām un nekur tālāk par šādiem rezultātiem arī netiku: "Array", "1".
  17. Heh tad nu gan interesanti iekš css Tu(ja patiešām tas esi Tu, kautgan māc šaubas) esi pat uzrakstījis tadu brīnumu kā .top kurai ir parametrs: vertical-align: top; Interesanti zināt ko gan šis te vertical-align: top; dara, ja ne nopozicionē tekstu augša? Pats esi jau uzrakstijis atbildi uz savu jautājumu.
  18. Heh, sasodīts neapdomājot pieliku beigās pielikumu no kura patiešām nav jēgas. Kodēt ar global variables on = pašnāvība :) Bet pašu kodu var izmantot viena faila aizsardzībai bez problēmām. Bet ja vēlamies vienu loginu daudzām lapām tad bišku advancētāka versija ar sesijām(cienu vairāk par cookies) session_start(); // Uzsakam sessiju if($_POST['username'] == 'lietotajvards' && $_POST['password'] == 'tava_parole') //parbaudam vai lietotajvārds sakrīt ar paroli. { $_SESSION['loged_in'] = TRUE; //paradam ka esam ielogojushies $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //Pirms brīža bija diskusija par sesiju nozagšanu es izmantoju vienkāršu ip pārbaudi, nekas daudz bet tomēr. } else // ja nav pareiza parole { die('Nepareizs lietotājvārds vai parole'); } ?> Tālāk visās lapās pārbaudam vai mums ir sesiju un vai sesijas ip sakrīt ar pašreizējo. <?PHP session_start(); if(!isset($_SESSION['username']) || $_SESSION['ip'] != $_SERVER['REMOTE_ADDR'];) { die(); } //lapas saturs ?>
  19. Varētu teikt visvienkāršākais variants: Forma: Lietotāj vārds: <input type="text" name="username"> Parole: <input type="password" name="password"> Skripts, kas apstrādā datus: <?PHP if($_POST['username'] != 'lietotajvards' && $_POST['password'] != 'tava_parole') { die(); } //Te tālak viss kods ko vajag aizsargāt. Ja vēlies vairākās lapās aizsardzibu, piešķir kādu mainigu, piemēram, $loged_in = TRUE; Ja ielogošanās izdevusies, ja neizdevusies tad $loged_in = FALSE; lai nemestu ārā notices. Un katraa lapā pārbaudi vai $loged_in ir true, ja nav tad die(); ?>
  20. Lynx

    plzz help

    Pēc idejas vajadzētu strādāt, iespējams, ka viņš paņem laukus ar laiks >100 dēļ kverija pirms tevis sākumā minētā AND. Bet var lietot arī šādu variantu WHERE time BETWEEN 10 AND 100
  21. O, beidzot sapratu tavu ideju. Jo patiešām vienreiz smagi nācās pārkārtot daļu db. Un patiešām šis variants ir daudz loģiskāks. Paldies!
  22. Nu datubāzes struktūra ir šāda: Tabulas nosaukums ar precēm: id,nosaukums,vel cita infa 1|prece1|vel kautkas 2|prece2|vel kautkas 3|blabla|vel kautkas Tālak ir tabula kurā atrodas šo preču daudzums un tabulu lauki ir nosaukti peec iepriekšējād tabuls id. id, 1, 2, 3, 4, 5, 6, 7 1|234|123|344|1|5|666| 2|234|123|344|1|5|666| 3|234|123|344|1|5|666| Kāpēc šāda struktūra? Laikam tapēc ka man šķiet loģiskāk ir ja vairāk ieraksti nekā datubāzes lauki. Jo katrs ieraksts preču daudzumam atbilst viena cilvēka īpašumā esošajām precēm un ja cilvēki ir 100, tad labāk imho ir 100 ieraksti nekā 100 dažādi lauku nosaukumi(Jānis, Pēteris, etc) un viens ieraksts.
  23. Apvienot abus pieprasijumus vienā pieprasijumā izmanotojot Subqueries vai Joinus. Izmeiģinājos visādi, bet nesanāk. Pēc ilgākas taisīšanas uzlaboju smagi pieprasījumu(brīnos kā agrāk šis neienāca prātā pēc idejas vajadzētu būt atrākam jo viss tiek savākts ar 1nu pieprasijumu, lai arī nāk daži lieki ieraksti klāt, ātrāk ir par 18 pieprasijumiem, kas izvelk vienu lauku no db) $skaits = mysql_fetch_assoc(query('SELECT * FROM goods WHERE id = '.$now['id'].' ')); $result = query('SELECT id FROM goods'); while ($res = mysql_fetch_assoc($result)) { echo'blabla'.$skaits[''.$res['id'].''].'blabla'; }
  24. Man šāds variants strādā: mysql_query('SELECT id FROM ships_'.$_GET['view'].' WHERE blabla'); Pec idejas šim jabūt tādam pašam: myqsl_query('select id, name, from tabula WHERE serija= '.$prefix.'serijas_nr'); Ja reiz runājam par apvienošanu, var apvienot šādu brīnumu? $result = query('SELECT id FROM armory'); while ($res = mysql_fetch_assoc($result)) { list($skaits) = mysql_fetch_row(query('SELECT `'.$res['id'].'` FROM ships_armory WHERE id = '.$now['id'].' ')); }
  25. Lynx

    Par input

    Wow! Tas bija ātri, un patiešām strādā. Paldies!
×
×
  • Create New...