spynode Posted July 15, 2004 Report Share Posted July 15, 2004 Es nodefineeju mainiigo teiksim $abols = "antonofka"; Es peec shadas sisteemas atveru failu $out=fopen('template/articles.html',"r"); Failaa ir html ir teiksim shitaads teksts <b>$abols</b>. Peec tam izvadot mainiigo echo $out; man izprinteesies antonofka? Es gribu html failus izmantot kaa templatus peec shaadas sisteemas. Man pagaidaam neko vispaar neprintee uz ekraana. Tuksh outputs sanaak. Link to comment Share on other sites More sharing options...
spynode Posted July 15, 2004 Author Report Share Posted July 15, 2004 (edited) Pie reizes kads varetu atbildet uz jautajumu ko nozime shada kljuda - Resource id #3. Taadu izmet, kad es meegjinu izvadiit $out. Tad veel jautaajums par echo. Ja es izvadu ar single quotes informaaciju tad mainiigie nestraadaa? piem echo 'aabols ir $abols'; ? Edited July 15, 2004 by spynode Link to comment Share on other sites More sharing options...
Gacha Posted July 15, 2004 Report Share Posted July 15, 2004 Nu es no failiem neko nejēdzu, jo reti tos lietoju, bet, ja ko man vajag ar tiem darīt, tad lietoju šādu elementāru lietu: $fails = file('fails.txt'); foreach($fails as $x){ echo $x; } Funkcija file tavu failu samet masiva un tad ar foreach to to pa vienai rindinjai met araa, un katru rindu smuki var apstradat. Apskaties php5, tam ir nakushas dazhas f-cijas prieksh failiem. Link to comment Share on other sites More sharing options...
spynode Posted July 15, 2004 Author Report Share Posted July 15, 2004 Nu kā izvadīt faila saturu es izlobīju, bet mani interesē kā e varētu mainīgos ielikt izvades brīdī vietās kur vinji html failā ir izsaukti. Nu apm šitā $out=file_get_contents('template/articles.html',"r"); while($art=mysql_fetch_array($art_query)) { $id=$art[0]; $date=$art['date']; $caption=$art[2]; $author=$art[5]; $auth_mail=$art[6]; $comments=comcount($id); $head=$art[3]; $body=$art[4]; echo $out; un patšā articles.html failā ir tīrs html un pa vidu iesprausti tie mainīgie nu piem <b>$date</b> <b>caption</b> <a href=mailto:$auth_mail>$author</a> utt. Un lai izvada to informāciju atkarīgi no mainīgo vērtībām. Ceru, ka sapratāt mani. Kā to varētu panākt ? Link to comment Share on other sites More sharing options...
Venom Posted July 16, 2004 Report Share Posted July 16, 2004 (edited) a) $fails = file('fails.txt'); foreach($fails as $x){ echo $x; } ir slikti un lēni, labi un ātri ir $fails=file('fails.txt'); echo @implode('',$fails); B) par tēmu. iekš htmla tev mainīgie tomēr jāizvada, jo teksts tiek ielasīts kā teksts, un $var tajā tik un vienīgi kā dolārzīme un teksts "var". Var izmantot vairākus variantus. Universālākais no tiem tomēr ir un paliek <b><?php echo $abols;?></b> ja ir eneiblots short_open_tag, tad augstākminēto var rakstīt kā <b><?=$abols;?></b> vai pat <b><?=$abols?></b> variants ir labs, bet ne visur, jo ne īpaši pārskatāms būs tāds variants: <a href=mailto:<?=$auth_mail;?>>$author</a> + iekš dreamweavera vai citiem WYSIWG tev rādīsies <?php ikoniņa, bet nebūs saprašanas, kam tieši tur jābūt. Otra pieeja attālinās no php izvadīšanas un balstās uz unikāliem mainīgo nosaukumiem (lai nesakrīt ar kādu tekstu), piem tev ir teksts: <b>%abols%</b> to var nomainīt ar str_replace('%abols%',$abols,$teksts); piem., ja tev visi mainīgie glabājas masīvā, kā $repl['abols']='antonofka'; $repl['bumbieris']='saldais'; tad var laist foreach($repl as $var=>$value) $text=str_replace('%'.$var.'%',$value,$text); Tāpat ofcourse var mainīt arī $abols vai $abols$, pats izdomā kādu simbola un mainīgā nosaukuma salikumu, kas nevarētu sakrist ar kādu tekstu, un tev pašam būtu skaidrs, ka tur iraid templāta mainīgais. Vēlams "mainīgo nosaukums" rakstīt lieliem burtiem, lai tie uzreiz izceltos (tāpat kā to ir ieteicams darīt ar konstantēm) - %ABOLS%, <a href=mailto:%AUTH_MAIL%>%AUTHOR%</a>. Turklāt pēc šāda varianta iekš DreamWeavera tu uzreiz redzēs kam kur jābūt. un vari noformēt tekstu "vizuāli". Edited July 16, 2004 by Venom Link to comment Share on other sites More sharing options...
bubu Posted July 16, 2004 Report Share Posted July 16, 2004 (edited) a) $fails = file('fails.txt');foreach($fails as $x){ echo $x; } ir slikti un lēni, labi un ātri ir $fails=file('fails.txt'); echo @implode('',$fails); Šādi nebūs vēl ātrāk? echo file_get_contents('fails.txt'); Edited July 16, 2004 by bubu Link to comment Share on other sites More sharing options...
Venom Posted July 16, 2004 Report Share Posted July 16, 2004 Kaut kad taisīju testus, file() tomēr bija ātrāks (turklāt + ir tāds, ka tu iegūsti masīvu ar rindām tālākai apstrādei). Kaut gan, jaunajās versijās varētu būt mainījies. Link to comment Share on other sites More sharing options...
spynode Posted July 16, 2004 Author Report Share Posted July 16, 2004 (edited) Domaaju izmantot to str_replace koncepciju, bet shitas variants nezin kaadeelj negrib straadaat : $out=file_get_contents('template/articles.html'); while($art=mysql_fetch_array($art_query)) { $id=$art[0]; $date=$art['date']; $caption=$art[2]; $author=$art[5]; $auth_mail=$art[6]; $comments=comcount($id); $head=$art[3]; $body=$art[4]; str_replace(array("@DATE@","@CAPTION@","@AUTHOR@","@AUTH_MAIL@","@COMMENTS@","@HEAD@","@BODY@"), array($date,$caption,$author,$auth_mail,$comments,$head,$body), $out); //shitaads variants nestraadaa str_replace('@DATE@', $date, $out); //shitaads variants arii nestraadaa echo $out; Edited July 16, 2004 by spynode Link to comment Share on other sites More sharing options...
Venom Posted July 16, 2004 Report Share Posted July 16, 2004 str_replace "atgriež" textu, resp. $out=str_replace(ko, ar ko, kur) $out=str_replace(ko, ar ko, $out) nb: cik saprotu, tev db kolonnas būs nosauktas tāpat kā templāšu mainīgie? padomā par šādu variantu: $art=mysql_fetch_assoc($art_query); foreach($art as $key=>$value) $out=str_replace('@'.$key.'@',$value,$out); droši vien, ka no while($art=mysql_fetch_assoc($art_query);) { ... str_replace() } nekāda labuma nebūs - jo jau pie while pirmās izpildes visi templāšu mainīgie tiks nomainīti Par manu variantu: mysql_fetch_assoc atgriež kolonnu vērtības associatīvajā masīvā, kur indeksi ir kolonnu nosaukumi (sk. print_r($art)), un, starp citu, vispārēji ātrāk strādā. + Nav jāpārdefinē mainīgie. Kolonnas nosaukums tiek iedzīts iekš $key un tas pataisīts par augšējo reģistru => mysql colonna `date` kļūst par @DATE@. Link to comment Share on other sites More sharing options...
Venom Posted July 16, 2004 Report Share Posted July 16, 2004 (edited) btw> par string variantu-> var nomainīt mainīgos arī pēc visas templāšu inklūdošanas; saglabāt templ. mainīgos iekš datubāzes utml. <?php ob_start(); inckļūdojam tempātes, visādi citādi izvadām info ar templāšu mainīgiem, e.g. echo '@CURRENT_DATE@'; pašās beigās: $out=ob_get_clean(); šeit norepleisojam ar visu ko vajag Te, starp citu var arī ar preg_match dabūt tikai to templāšu mainīgo nosaukumus, kuri tiešām ir nepieciešami un apstrādāt/iedabūt tikai tos. un beigās izvadām echo $out; ?> balstās ar uz to, ka php var noredirektēt visu html izvadu buferī (ob_start() == output buffering start) un pēc tam visu uzreiz no turienes iegūt mainīgajā (ouput buffering get buffer and clean it) Edited July 16, 2004 by Venom Link to comment Share on other sites More sharing options...
Venom Posted July 16, 2004 Report Share Posted July 16, 2004 (edited) ignore this gluk Edited July 16, 2004 by Venom Link to comment Share on other sites More sharing options...
spynode Posted July 16, 2004 Author Report Share Posted July 16, 2004 (edited) Izmēģinājos visādi, bet tie stringaa nekas nemaz nerepleisojas. Viņi tikuntā izvadās kā @CAPTION@ u.t.t. Tas ir dīvaini, jo stringu nu viņam vajadzēja apstrādāt un izvadīt bez ierunām. Nevermind. kautkas liidziigs tam ok gribeeju man beidzot izdevaas. Edited July 16, 2004 by spynode Link to comment Share on other sites More sharing options...
Gacha Posted July 16, 2004 Report Share Posted July 16, 2004 Venom, tnx ka pateici ātrāku || echo filter(@implode('',$data)); || variantu, tagad arī to izmantošu, bet es vēl jo projām nēsmu sapratis, ko dara tas @ operātors un kur viņš būtu jaizmanto! Manuālī atradu, bet šā vai tā tā īsti neiebraucu, saprotu, ka tagadējā gadījumā tas @ uztaisa kjipa ciklu un izvada to failu! Link to comment Share on other sites More sharing options...
bubu Posted July 16, 2004 Report Share Posted July 16, 2004 Cik man zināms @ netaisa ciklu. @ lieto, lai lietotājs neredzētu kļūdas. Piemēram: Ja raksta mysql_connect, bet nevar piekonektēt, tad lietotājs redzēs kļūdas paziņojumu (pie attiecīgiem error_reporting), a bet, ja raksta @mysql_connect, tad pie jebkādiem erorr_repoerting vērtībām, lietotājs neko redzēs, un kļūdas varēs apstrādāt programātiski un attiecīgi rīkoties. Link to comment Share on other sites More sharing options...
Gacha Posted July 16, 2004 Report Share Posted July 16, 2004 Tagad ari manuālī ieraudzīju un sapratu :) nez kapēc, bet agrāk domāju, ka tam @ ir lielāka jēga :) Link to comment Share on other sites More sharing options...
Recommended Posts