Jump to content
php.lv forumi

Recommended Posts

Sveiki.

Man ir tāda lieta, ka es taisu mazu lapiņu zem html - prosta tagi,info utt.

Vai ir iespējams izveidot ko tādu, ka jaunumu komenti tiek saglabāti vienkārši piemēram txt failā un tad no tā txt faila izvelk tos komentus ārā? :)

Link to post
Share on other sites

Saliku - viss strādā, bet tagad es atkal(lūdzu nedusmojaties :D) - nevaru izdomāt kā uztaisīt komentāra ievietošanas tabulu.

Ar komentāru izprintēšanu viss ir okei -

bilde1.jpg

Bet kā lai piespiež viņu ievietot to komentāru tajā teksta failā?

 

 

P.S. Pamanīju ka ja uzrādās viens un tas pats datums (piemēram

03.12.2004|Jānis|komentārs BLĀ|

03.12.2004|Juris|komentārs BLĀ|

04.12.2004|Jānis|komentārs BLĀ| )

viņš izprintē tikai un vienīgi pēdējo tā datuma komentāru - varbūt kāds zin kas par vainu?

 

Rekur tas kods, ko paņēmu :)

 

 

								<?php



$fileData = file('jaunums1.txt');
$messageList = array();
foreach ($fileData as $row){
list($date, $user, $msg) = explode('|', $row);
list($d, $m, $Y) = explode('.', $date);
$timestamp = mktime(0, 0, 0, $m, $d, $Y);
$messageList[$timestamp] = array('date' => $date, 'user' => $user, 'msg' => $msg);
}

ksort($messageList);

?>

Edited by Mighty
Link to post
Share on other sites

nezinu vai shis strada bet es aiz neko darit uztaisiju kko sadu

 

<?php

$html="<tr>
<td align=\"center\">[[:datums:]]</td>
<td align=\"center\">[[:niks:]]</td>
<td>[[:komentars:]]</td>
</tr>":

switch($_GET["type"]) {
case 1:
	if($_POST) {
		$nick=htmlspecialchars($_POST["username"]);
		$comment=str_replace("\n","<br>",htmlspecialchars($_POST["comment"]));
		$date=date("Y-m-d (H:i)");
		$f=fopen("comments.com","w");
		fwrite($f,stripslashes("$date<>$nick<>$comment\n"));
		fclose($f);
		echo "<script type='text/javascript'> window.location='?'; </script>";
	}
	$izvade="<form method='post' action='".$_SERVER["REQUEST_URI"]."'>
		<h3>Pievienot ierakstu</h3>
		Niks<br>
		<input type=\"text\" name=\"username\"><br>
		Komentars<br>
		<textarea name=\"comment\"></textarea><br>
		<input type=\"button\" onclick=\"if(document.addc.username.value&&document.addc.comment.value) { document.addc.submit(); } else { alert('Aizpildiet visus lauciņus'); } \" value=\"Pievienot\">
	</form>";
break;
default:
               $izvade="<a href='?type=1'>pievienot</a><Br><table border='0' width='100%'><tr><td>datums</td><td>niks</td><td>komentars</td></tr>";
	$komentari=file_get_contents("comments.com");
	$dati=explode("\n",$komentari);
	for($i=0;$i<count($dati);$i++){
		$komentars=explode("<>",$dati[$i]);
		$tmp=str_replace("[[:datums:]]",$dati[0],$html);
		$tmp=str_replace("[[:niks:]]",$dati[1],$tmp);
		$tmp=str_replace("[[:komentars:]]",$dati[2],$tmp);
		$izvade.=$tmp;
	}
              $izvade.="</table>";
break;
}


//Izvade
echo($izvade);
?>

Edited by Mikijs
Link to post
Share on other sites

Kāpēc tev patīk tik traki eskeipot tās pēdas?

$html="<tr><td align=\"center\">[[:datums:]]</td>";

vietā raksti:

$html='<tr><td align="center">[[:datums:]]</td>';

vai arī:

$html="<tr><td align='center'>[[:datums:]]</td>";

 

Kods sanāktu daudz lasāmāks.

Link to post
Share on other sites

Paldies par cenšanos palīdzēt - bet neiet.

 

Un codez - kā to izlabot?

 

1. Nekas nenotiek, kad ierakstot niku/komentu uzspiež pievienot.

 

2. Tajā komentu tabulā viņš izvada visu ailīti, nevis tikai komentāru/datumu/niku :)

 

Mazliet pačakarējos, bet tā arī nespēju izdomāt kur vaina.

 

bilde2.jpg

 

Kods pašlaik ir šāds =

<?php



$fileData = file('jaunums1.txt');
$messageList = array();
foreach ($fileData as $row){
list($date, $user, $msg) = explode('|', $row);
list($d, $m, $Y) = explode('.', $date);
$timestamp = mktime(0, 0, 0, $m, $d, $Y);
$messageList[$timestamp] = array('date' => $date, 'user' => $user, 'msg' => $msg);
}

ksort($messageList);

?>


			<p>Komentāri</p>
			<table>
				<tr>
					<th class="first"><strong>Datums</strong></th>
					<th>Vārds</th>
					<th>Komentārs</th>
				</tr>

<?
foreach ($messageList as $key => $message){
echo '<td><i>'.$message['date'].'</i></td> <td><b>'.$message['user'].'</b></td> <td>'.$message['msg'] . '</td></tr>';
}?>

				</tr>
				</table>

				<?

$html="<tr>
<td align=\"center\">[[:datums:]]</td>
<td align=\"center\">[[:niks:]]</td>
<td>[[:komentars:]]</td></tr>";

switch($_GET["type"]) {
case 1:
if($_POST) {
$nick=htmlspecialchars($_POST["username"]);
$comment=str_replace("\n","<br>",htmlspecialchars($_POST["comment"]));
$date=date("Y-m-d (H:i)");
$f=fopen("jaunums1.txt","w");
fwrite($f,stripslashes("$date<>$nick<>$comment\n"));
fclose($f);
echo "<script type='text/javascript'> window.location='?'; </script>";
}
$izvade="<form method='post' action='".$_SERVER["REQUEST_URI"]."'>
<h3>Pievienot komentāru</h3>
Niks<br>
<input type=\"text\" name=\"username\"><br>
Komentārs<br>
<textarea name=\"comment\"></textarea><br>
<input type=\"button\" onclick=\"if(document.addc.username.value&&document.addc.comment.value) { document.addc.submit(); } else { alert('Aizpildiet visus lauciņus'); } \" value=\"Pievienot\">
</form>";
break;
default:
$izvade="<a href='?type=1'>pievienot</a><Br><table border='0' width='100%'><tr><td>datums</td><td>niks</td><td>komentars</td></tr>";
$komentari=file_get_contents("jaunums1.txt");
$dati=explode("\n",$komentari);
for($i=0;$i<count($dati);$i++){
$komentars=explode("<>",$dati[$i]);
$tmp=str_replace("[[:datums:]]",$dati[0],$html);
$tmp=str_replace("[[:niks:]]",$dati[1],$tmp);
$tmp=str_replace("[[:komentars:]]",$dati[2],$tmp);
$izvade.=$tmp;
}
$izvade.="</table>";
break;
}


//Izvade
echo($izvade);
?>

 

Man jau liekas, ka "onclick=\"if(document.addc.username.value&&document.addc.comment.value) { document.addc.submit(); } else { alert('Aizpildiet visus lauciņus'); } \" value=\"Pievienot\">"

šeit kkur jābūt vainai.

 

Joprojām man aktuālas paliek tās divas lietas

1. Kā likt viņam ievietot failā (šobrīd ar nosaukumu "jaunums1.txt" info "komentārs/niks/datums".

2. Kā viņam likt izprintēt visus komentārus ar vienādu datumu.

Link to post
Share on other sites

Kāds vismaz var pateikt kā šito googlē meklēt? :)

Neko nespēju izdomāt - atmetu Mikija doto kodu, nevaru neko tur sataisīt.

Palieku pie tā Alekseja dotā linkā esošā,

 

Joprojām man aktuālas paliek tās divas lietas

1. Kā likt viņam ievietot failā (šobrīd ar nosaukumu "jaunums1.txt" info "komentārs/niks/datums".

2. Kā viņam likt izprintēt visus komentārus ar vienādu datumu.

Link to post
Share on other sites

Pirmais punkts:

Pārbaudam, ka mainīgie $komentars, $niks un $datums nesatur simbolu "/", jo tas tiks izmantots atdalīšanai.

Izveidojam ievietojamo tekstu, ko ierakstām mainīgajā $saglabajamais = "$komentars/$niks/$datums";

Aizvietojam mainīgajā visus pārnesumus jaunā rindā ar <br> - lasam par funkciju nl2br();

Ar komandu fopen() atveram failu "jaunums.txt". Fails ir jāatver režīmā, kad "rakstīšanas galviņa atrodas faila beigās" - tādēļ izlasām to, kas rakstīts par fopen() padodamo otro parametru: http://lv.php.net/manual/en/function.fopen.php

Ar komandu fwrite() ierakstām mainīgā $saglabajamais saturu failā

Ar komandu fclose() aizveram failu.

 

Otrais punkts:

Vispārīga risinājuma nav, bet es laikam darītu tā:

Lasītu pa rindai iekšā datus ar fgets();

Sadalītu pa trijiem mainīgajiem $komentars, $niks, $datums ar explode() palīdzību

Liktu pāri $komentars un niks masīvā, kuram kā atslēgu liktu mainīgo $datums:

$komentaru_masivs[$datums][]=Array($komentars, $niks);

Izdrukātu vajadzīgā datuma visus komentārus un nikus:

foreach($komentaru_masivs[$interesejosais_datums] as $komentars_ar_niku){

echo 'Komentārs ir: ' . $komentars_ar_niku[0] . ' un autors ir ' . $komentars_ar_niku[1];

}

 

Kā parasti, varbūt ātrumā rakstot kaut kur ir ieviesusies kāda sintakses kļūda, bet domāju, ka ideja ir skaidra.

Link to post
Share on other sites
×
×
  • Create New...