Jump to content
php.lv forumi

Faila rindu piešķiršana mainīgajiem


rudzis

Recommended Posts

Man piem. ir fails dati.txt, kura saturs ir:

Virsraksts /n raksts

 

Un ir fails news.php, kurā ir divi mainīgie - $1 un $2 .

$1 = ""
$2 = ""

Kā lai inkluudojot failaa news.php failu dati.txt, es pieshkjiru katram mainiigajam savu texta daļu, taatad lai $1 = "Virsraksts" un $2 = "raksts"?

 

Tātad tas /n , kad ierakstiits .txt failaa paarveershas par kvadraatinju.

Vajag lai texta dalja pirms taa kvadraatinja buutu vienaa mainiigajaa un peec - otraa mainiigajaa, lai taalaak var abus salikt pa vietaam, kur katram jaaparaadaas.

 

Please paliidziet!

Link to comment
Share on other sites

$lines=explode("\n",$text);

tagad katra līnija ir masīva $lines elements (1mā līnija ir 0-elements).

att. uz $1, $2 - mainīgajiem - pārseris nebļauj ka mainīgais ar ciparu sākas, ā?

 

$var1=$lines[0];//virsraksts

$var2=$lines[1];//raksts

 

var pielietot trim() funkciju $lines elementiem, lai noņemtu atstarpes beigās.

 

e.g. $var1=trim($lines[0]);//virsraksts

Link to comment
Share on other sites

NB: ja rakstam būs vairākas līnijas, tad izmanto

$var1=$lines[0];//virsraksts

unset($lines[0]);//izmetam no masīva

$var2=implode('',$lines); //saliekam stringus atpakaļ

 

vai arī:

 

$firstlb=strpos($text,"\n");//atrodam pirmo līnijas zīmi

 

$virsraksts=substr($text,0,$firstlb); //viss kas pirms zīmes

$raksts=substr($text,$firstlb); //viss kas pēc

Link to comment
Share on other sites

Njaa, es proveeju ar vienu metodi un ar otru, rezultāts abām vienāds - virsraksts ir "Array" un texta vispaar nav :(

 

<?
$id = $_GET['id'];
?>
<?
$text = file("content/news/$id.txt");
$lines=explode("\n",$text);
$var1=$lines[0];//virsraksts
$var2=$lines[1];//raksts
?>
<table>

<?php

echo "<h3><font face=Georgia size=3><a href='?page=read&id=$id'>$var1</a></font><br>
<img border=0 src=img/line_solid.bmp width=499 height=3></h3>
<p><font face=Lucida Sans Unicode size=2>$var2</font></p>
<p><font face=Georgia size=2><br>
<a href='?page=read&id=$id'>Lasīt visu rakstu</a> | <a 

href='?page=comments&id=$id'>komentāri</a><br>
$autors @ $datums</font>
<img border=0 src=img/line_thin.bmp width=499 height=2></p>";

?>
</table>

Link to comment
Share on other sites

Venom, man veel vieniigi vajag lai vienaa lapaa paraadiitos 10 ieraksti, bez nekaadas lapu daliishanas.

 

Redz, kur visa source:

 

<table>

<?php

$topicsk = file('content/news/skaits.txt');
for ($i=$topicsk[0];$i>0;$i--){
$zinja=file("content/news/$i.txt");
$zinja[0]=stripslashes($zinja[0]);
$zinja[1]=stripslashes($zinja[1]);
$laiks=date("d.m.y H:i", filemtime("content/news/$i.txt"));
echo "<h3><font face=Georgia size=3><a href='?page=read&id=$i'>$zinja[0]</a></font><br>
<img border=0 src=img/line_solid.bmp width=499 height=3></h3>
<p><font face=Lucida Sans Unicode size=2>$zinja[1]</font></p>
<p><font face=Georgia size=2><br>
<a href='?page=read&id=$i'>Lasīt visu rakstu</a> | <a href='?page=comments&id=$i'>komentāri</a><br>
$autors @ $laiks</font>
<img border=0 src=img/line_thin.bmp width=499 height=2></p>";

}

?>
</table>

 

Taatad, kad no faila skaits.txt uzzin ierakstu skaitu, vajag, lai paraadiitu tikai 10 jaunaakos, taapeec buus vajadziigs veel viens mazs piemeerinjsh.

 

Jau ieprieksh paldies par visu.

Link to comment
Share on other sites

src="img/line_solid.bmp" ? un rādās arī?

 

ko nozīmē vienaa lapaa paraadiitos 10 ieraksti, bez nekaadas lapu daliishanas.?

 

ja respektīvi, 10 pēdējie ieraksti vispār, tad var pie postu ieglabāšanas updeitot kādu failu/massīvu, kurā būs tieši 10 atsauces uz rakstiem, un tie rotēsies, piem. katrā līnijā var ierakstīt raksta identifikatoru, e.g.

 

if (isset($_POST['article']))

{

$top10=@file('pedejie.10');

if (!in_array($article_id."\n",$top10))

{

$top10[]=$article_id."\n";//pievienojam vēl vienu elementu masīva beigās

if (count($top10)>10)

array_shift($top10);//atmetam pirmo līniju

$fp=fopen('pedejie.10'','w');

fwrite($fp,implode('',$top10));

fclose($fp);

}

}

Link to comment
Share on other sites

Taa bilde paraadaas bez probleemaam.

 

Es ar tiem 10 jaunaakajiem domaaju, vinjus nevis atseviskjaa masiivaa gruuzt, bet vienkaarshi no taa faila skaits.txt uzzinaat skaitu, bet paraadiit tikai 10 peedeejos.

Taatad, ja skaits.txt saturs ir 35, tad lai paraada no 25-35, saakot ar 35to.

Bez atsevishkja faila vai masiiva veidoshanas. Tas tachu ir iespeejams, vai ne?

Link to comment
Share on other sites

tad iesaku pierakstīt jaunākas rindas faila sākumā ar

fopen('...','r+')

un ielasīt ar

$tmp=10;

while($tmp--)

{

... fgets($fp,1024);

}

 

vai nua arī ielasīt visu ar @file() (ja zināms, ka līniju skaits failā būs relatīvi mazs un netiks pārterēta oper. atmiņa) un izmantot array_slice() vai nu vienkārši uzzināt rindu skaitu ar count() un ar parastu ciklu izstaigāt masīva elementus ($array[$current], kur $current mainās no $count-10 līdz $count )

Link to comment
Share on other sites

Nee, man ir fails skaits.txt, kuraa ir noraadiits kopeejais rakstu skaits ar vienu skaitli piem. 20.

 

Atseviskjaa direktorijaa ir faili ar nosaukumiem 1.txt ; 2.txt utt., kuru saturs ir Virsraksts /n raksts .

 

news.php uzzin to skaitu no skaits.txt un njemot sho skaitu veeraa, paraada visus failus, kuriem nosaukumi ir 1.txt, 2.txt utt. , un kaarto ar jaunaako augsaa, taatad fails ar lielaako ciparu paraadiisies pashaa augshaa.

 

Vienkārši vajag, lai news.php paraadiitu tikai 10 jaunaakos failus (ar lielaakajiem nosaukumiem), nevis visus. Source tachu augstaak jau ir! Saproti?

 

Spriezjot peec tava peedeejaa ieraksta, tev saak pielekt :)

Edited by rudzis
Link to comment
Share on other sites

Nu nav gadījies ar šito lietu ņemties, bet ja tā padomā, kas tev vajadzīgs. Paņemt no direktorijas visus failus un ielasīt masīvā un tad attiecīgi parādīt 0-10 10-20 utt

 

Es darītu tā:

 

ieeju lv.php.net atrodu f-ciju readdir un tur ir šis:

if ($handle = opendir('.')) {
  while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != "..") {
          echo "$file\n";
      }
  }
  closedir($handle);
}

Pārveidojam to uz:

$i=0;
if ($handle = opendir('.')) {
  while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != "..") {
          $masivs[$i] = $file;
      $i++;
       }
  }
  closedir($handle);
}

Tagad mums visi tavi raksti ir iekš masīva! Un tagad atliek tik izmest attiecīgi uz ekrēna.

$g=0;
$z=9;
for($i=$g; $i=>$z; $++){
include($masivs[$i]);
}

Tagad tik izštuko ko darīt ar to $g un $z lai viss smuki slēgtos!

Link to comment
Share on other sites

×
×
  • Create New...