Jump to content
php.lv forumi
Sign in to follow this  
Mighty

komenti

Recommended Posts

Mighty   

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ā? :)

Share this post


Link to post
Share on other sites
Mighty   

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

Share this post


Link to post
Share on other sites
codez   

Tad, kad ir divi vienādi datumi, tad tu vienmēr pārraksti pa virsu masīvā jau esošam datumam šajā vietā:

$messageList[$timestamp]

Share this post


Link to post
Share on other sites
Mikijs   

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

Share this post


Link to post
Share on other sites
bubu   

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.

Share this post


Link to post
Share on other sites
Mighty   

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.

Share this post


Link to post
Share on other sites
Mighty   

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.

Share this post


Link to post
Share on other sites
Aleksejs   

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×