Проблем с коментари в система за новини

pro12

Registered
Ето кода
PHP:
<?php
$per_page = 1;
$start = $_GET['start'];
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0; 

ob_start(); 
include("config.php");
include_once('bbcode.php'); 
if (!$_GET[ime]) 
{ 
$getime = mysql_query("SELECT * from news order by id desc LIMIT $start, $per_page"); 
while ($ime = mysql_fetch_array($getime)) 
{ 

echo (" <a href=\"mem.php?ime=$ime[ime]\">$ime[ime]</a>\n"); 

} 
} 
ELSE 
{ 
$getime = mysql_query("SELECT * from news where ime = '$_GET[ime]'"); 
$imenum = mysql_num_rows($getime); 
if ($imenum == ime) 
{ 

echo "no new";
 
} 
else 
{ 

$profile = mysql_fetch_array($getime); 
}
}
echo('<div id="container">  
<div id="header">    
<header>uuu</header>
</div>
 <div class="style1" id="bar">  
  <div id="r">  <input type="text" id="search" size="15" maxlength="25" name=""><input type="submit" name="s" id="btnsearch" value=" " /></div> 
  <div id="apDiv2"><ul id="MenuBar1" class="MenuBarHorizontal">    <li><a class="MenuBarItemSubmenu" href="#">Начало</a>          </li>      <li><a class="MenuBarItemSubmenu" href="#">Item2</a>        <ul>          <li><a class="MenuBarItemSubmenu" href="#">рингови инв колички</a></li>          <li><a class="MenuBarItemSubmenu" href="#">Активни инв колички</a></li>          <li><a class="MenuBarItemSubmenu" href="#">Item 1.3</a></li>        </ul>    </li>    <li><a class="MenuBarItemSubmenu" href="#">Item 3</a>        <ul>          <li><a class="MenuBarItemSubmenu" href="#">Item 3.1</a>              <ul>                <li><a href="#">Item 3.1.1</a></li>                <li><a href="#">Item 3.1.2</a></li>              </ul>          </li>          <li><a  class="MenuBarItemSubmenu" href="#">Item 3.2</a></li>          <li><a  class="MenuBarItemSubmenu" href="#">Item 3.3</a></li>        </ul>    </li>    <li><a href="#">Item 4</a></li>  </ul>
  </div></div>
   <div id="right"> 
  <div id="right1"> </div> 
  <div id="right2"> </div> 
 </div> <div id="sdrjanie">');
 echo("<br><center><b>$profile[ime]</b><br>");

  echo bbcode($profile['nowina']);
   echo("avtor ".$profile['awtor']." <br/>"); 
   echo("
<center><form method=\"POST\">
 
<table width=\"100%\">
 
<input type=\"hidden\" name=\"id\" value=\"".$row['id']."\" />
 
<tr>
<td align=\"right\" width=\"25%\">
ime
</td>
<td align=\"left\">
<input size=\"25\" name=\"ime\"></td>  
</tr>
<tr>
<td align=\"right\" width=\"25%\">
komentar</td>
<td align=\"left\">
<input size=\"25\" name=\"comentar\"\<textarea/></td>  
</tr>
 
<td align=\"center\">
</td>
<td align=\"left\">
<input type=\"submit\" name=\"izprati\" value=\"Обнови\"></td>
</tr>
</table>
</form>
</center>");
$our = mysql_query("SELECT * FROM comments WHERE id=$id ORDER BY id_com DESC");
while($row=mysql_fetch_array($our)){ 
   echo "<table width='300' align='center'>
<tr><td><b>Автор: <font color='red'>$row[ime]</font></b></td></tr>
<tr><td align='center'><b>$row[comentar]</b></td></tr>
<tr><td align='right'><b>Дата: <font color='red'>$row[data]</font><hr/></b></td></tr>
</table>";
}
 echo('</div>   <div id="footer">  <br/><footer>
  uuuuuuu
</footer> </div>  </div>');
?>
<?php
if(isset($_POST['izprati'])){
$ime = $_POST['ime'];
$ime = htmlspecialchars($ime);
$ime = strip_tags($ime);  
$id = $_POST['id'];
 
$comentar = $_POST['comentar'];
$comentar = htmlspecialchars($comentar);
$comentar = strip_tags($comentar);
 
if($ime== NULL){  
echo "Попълнете име";
exit;
}
elseif($comentar==NULL){
echo "Попълнете коментара ";
exit;
}
 
else {
$sql = "INSERT INTO comments (ime, comentar, data, ip, id) VALUES ('$ime', '$comentar', '$data', '$ip', '$id')";
mysql_query($sql) or die (mysql_error());
header("LOCATION: mem.php?id=$id");
}
}
?>
<script type="text/javascript">

</script>
</body>
</html>



Като добавя коментар в бд не записва ид на новината Защо?
А при извеждане дава това
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/u873363251/public_html/mem.php on line 180
 
Така?
PHP:
<?php
$per_page = 1;
$start = $_GET['start'];
$max_pages = ceil($foundnum / $per_page);
if(!$start)
$start=0; 

ob_start(); 
include("config.php");
include_once('bbcode.php'); 
if (!$_GET[ime]) 
{ 
$getime = mysql_query("SELECT * from news order by id desc LIMIT $start, $per_page"); 
while ($ime = mysql_fetch_array($getime)) 
{ 

echo (" <a href=\"mem.php?ime=$ime[ime]\">$ime[ime]</a>\n"); 

} 
} 
ELSE 
{ 
$getime = mysql_query("SELECT * from news where ime = '$_GET[ime]'"); 
$imenum = mysql_num_rows($getime); 
if ($imenum == ime) 
{ 

echo "no new";
 
} 
else 
{ 

$profile = mysql_fetch_array($getime); 
}
}
echo('<div id="container">  
<div id="header">    
<header>uuu</header>
</div>
 <div class="style1" id="bar">  
  <div id="r">  <input type="text" id="search" size="15" maxlength="25" name=""><input type="submit" name="s" id="btnsearch" value=" " /></div> 
  <div id="apDiv2"><ul id="MenuBar1" class="MenuBarHorizontal">    <li><a class="MenuBarItemSubmenu" href="#">Начало</a>          </li>      <li><a class="MenuBarItemSubmenu" href="#">Item2</a>        <ul>          <li><a class="MenuBarItemSubmenu" href="#">рингови инв колички</a></li>          <li><a class="MenuBarItemSubmenu" href="#">Активни инв колички</a></li>          <li><a class="MenuBarItemSubmenu" href="#">Item 1.3</a></li>        </ul>    </li>    <li><a class="MenuBarItemSubmenu" href="#">Item 3</a>        <ul>          <li><a class="MenuBarItemSubmenu" href="#">Item 3.1</a>              <ul>                <li><a href="#">Item 3.1.1</a></li>                <li><a href="#">Item 3.1.2</a></li>              </ul>          </li>          <li><a  class="MenuBarItemSubmenu" href="#">Item 3.2</a></li>          <li><a  class="MenuBarItemSubmenu" href="#">Item 3.3</a></li>        </ul>    </li>    <li><a href="#">Item 4</a></li>  </ul>
  </div></div>
   <div id="right"> 
  <div id="right1"> </div> 
  <div id="right2"> </div> 
 </div> <div id="sdrjanie">');
 echo("<br><center><b>$profile[ime]</b><br>");

  echo bbcode($profile['nowina']);
   echo("avtor ".$profile['awtor']." <br/>"); 
   echo("
<center><form method=\"POST\">
 
<table width=\"100%\">
 
<input type=\"hidden\" name=\"id\" value=\"".$row['id']."\" />
 
<tr>
<td align=\"right\" width=\"25%\">
ime
</td>
<td align=\"left\">
<input size=\"25\" name=\"ime\"></td>  
</tr>
<tr>
<td align=\"right\" width=\"25%\">
komentar</td>
<td align=\"left\">
<input size=\"25\" name=\"comentar\"\<textarea/></td>  
</tr>
 
<td align=\"center\">
</td>
<td align=\"left\">
<input type=\"submit\" name=\"izprati\" value=\"Обнови\"></td>
</tr>
</table>
</form>
</center>");
$our = mysql_query("SELECT * FROM comments WHERE id='$id' ORDER BY id_com DESC");
while($row = mysql_fetch_array($our)){ 
   echo "<table width='300' align='center'>
<tr><td><b>Автор: <font color='red'>$row[ime]</font></b></td></tr>
<tr><td align='center'><b>$row[comentar]</b></td></tr>
<tr><td align='right'><b>Дата: <font color='red'>$row[data]</font><hr/></b></td></tr>
</table>";
}
 echo('</div>   <div id="footer">  <br/><footer>
  uuuuuuu
</footer> </div>  </div>');
?>
<?php
if(isset($_POST['izprati'])){
$ime = strip_tags(htmlspecialchars($_POST['ime']));
$id = (int)$_POST['id'];
$comentar = strip_tags(htmlspecialchars($_POST['comentar']));
 
if($ime== NULL){  
echo "Попълнете име";
exit;
}
elseif($comentar==NULL){
echo "Попълнете коментара ";
exit;
}
 
else {
$sql = "INSERT INTO `comments`(ime, comentar, data, ip, id_com) VALUES ('$ime', '$comentar', '$data', '$ip', '$id')";
mysql_query($sql) or die (mysql_error());
header("LOCATION: mem.php?id=$id");
}
}
?>
<script type="text/javascript">

</script>
</body>
</html>
 
Стана но всички коментари излизат на всички новини аз искам всяка новина да има свои коментари
 
pro12 каза:
Стана но всички коментари излизат на всички новини аз искам всяка новина да има свои коментари
Нещо не го обясни като хората много много. :)
 
Това ли е проблемната заявка?
[sql]$sql = "INSERT INTO `comments`(ime, comentar, data, ip, id_com) VALUES ('$ime', '$comentar', '$data', '$ip', '$id')";
mysql_query($sql) or die (mysql_error());
[/sql]
 
Да Аз изкам всяка на всяка новина да добавям коментари и при извеждане на коментарите да се извеждат за съответната новина
 
pro12 каза:
Да Аз изкам всяка на всяка новина да добавям коментари и при извеждане на коментарите да се извеждат за съответната новина
Приятел, горната заявка, която ти дадох е Инсърт. Ако не ти въвежда правилно нещата провери дали не си объркал имената в нея. На теб за извеждане ти е нужен Селект, който по-нагоре имаш, но просто изведи редовете със заявките (SQL-ите), които са ти прпоблемни и дай да ги видим. Обясняваш това сега работи ама не така както искам. :) Дай малко пояснения не съм гадател или другите съфорумници, като мен.
 
Добавяне на коментрара и извеждането е ок но аз изкам малко по различно нещо.
Имам таблица за новините и коментарите изкам като съм на новина с ид1 като добавя коментара в таблицата на коментарите да записва ид на новината и като извеждам коментарите и отида на новина с ид 1 да се показват коментарите за новина с ид1. Като съм на новина с ид 2 да има коментари само за новина с ид2
Разбираш ли?
 
[sql]"SELECT * FROM comments WHERE id='$id' AND novina_id = $novina_id ORDER BY id_com DESC"[/sql]

Така ако го пренаправиш, би трябвало да стане , като novina_id е новината на ид-то
 
Използвайки $_GET[]; Виж си url-а ще имаш нещо от сорта на id=1 или post_id =1 или news_id = 1 нещо такова
и правиш прост
$novina_id = $_GET['news_id/id/post_id'] или каквото е там
 
pro12 каза:
По друг начин за мзимане на ид има ли?
Отново става с GET но подаден като втори параметър. Тоест:

member.php?ime=formula&&id=1 (цифрата)

PHP:
if(isSet($_GET['id'])){
echo $_GET['id'];
//някакъв алгоритъм 
}

//за сетване просто примерно имаш една връзка:

<a href='ber.php?ime=formula&&id=1'>id1</a>
<a href='ber.php?ime=formula&&id=2'>id2</a>

И прочие :)
 
PHP:
if (!$_GET[ime]) 
{ 
$getime = mysql_query("SELECT * from news order by id desc LIMIT $start, $per_page"); 
while ($ime = mysql_fetch_array($getime)) 
{ 

echo (" <a href=\"mem.php?ime=$ime[ime]\">$ime[ime]</a>\n"); 

} 
}
Каде да го сложа?
PHP:
if(isSet($_GET['id'])){
echo $_GET['id'];
//някакъв алгоритъм 
}

//за сетване просто примерно имаш една връзка:

<a href='ber.php?ime=formula&&id=1'>id1</a>
<a href='ber.php?ime=formula&&id=2'>id2</a>
 
Така го направих но нищо не става
PHP:
if (!$_GET[ime])if(isSet($_GET['id'])) 
{ 
$getime = mysql_query("SELECT * from news order by id desc LIMIT $start, $per_page"); 
while ($ime = mysql_fetch_array($getime)) 
{ 
echo $_GET['id'];
echo (" <a href=\"mem.php?ime=$ime[ime]&&id=1\">$ime[ime] id1</a>\n"); 

} 
}
 
Ако няма сетнати имена в линка ги извеждаш след това при натискане на връзката ще те прати на mem.php?ime=daniel&id=1 и понеже е сетнато ID ще ти се покаже проверката за сетнат ГЕТ id като там може да правиш в този иф и проверка дали id-то съответства на името след което да ти извади по id коментарите. :)

PHP:
if (!isSet($_GET['ime'])){ 
	$getime = mysql_query("SELECT * from news order by id desc LIMIT $start, $per_page"); 
	while ($r = mysql_fetch_array($getime)){ 
		echo (" <a href=\"mem.php?ime=".$r['ime']."&id=".$r['id']."\">".$r['ime']."</a>\n"); 

	} 
} 

if(isSet($_GET['id'])){
	$id = (int)$_GET['id'];
	//селектираш за даденото ID коментарите
}
 
Като на тисна връзката на урл излиза това mem.php?ime=e formula без ид.
PHP:
 $getime = mysql_query("SELECT * from news where ime = '$_GET[ime]'");
Тук така ли устава
 
pro12 каза:
Като на тисна връзката на урл излиза това mem.php?ime=e formula
Ти целияд код отгоре ли копира? Не видя, ли че има промяна в него :shock:

echo (" <a href="mem.php?ime=".$r['ime']."&id=".$r['id']."">".$r['ime']."</a>\n");

Ето от промяната в коментара ми трябва да излиза името + идентификатора -
?ime=ivan&id=2
Ако не ти го извежда значи или имаш някакъв проблем с логиката на кода или не ти е построена базата като хората или вероятно още хиляди неща.
 
PHP:
<?php
if(isset($_POST['izprati']))

$ime = $_POST['ime'];
$ime = htmlspecialchars($ime);
$ime = strip_tags($ime);  
$id = $_POST['id'];
 
$comentar = $_POST['comentar'];
$comentar = htmlspecialchars($comentar);
$comentar = strip_tags($comentar);
 
if($ime== NULL){  
echo "Попълнете име";
exit;
}
elseif($comentar==NULL){
echo "Попълнете коментара ";
exit;
}
 
else {
$sql = "INSERT INTO comments (ime, comentar, data, ip, id) VALUES ('$ime', '$comentar', '$data', '$ip', '$id')";
mysql_query($sql) or die (mysql_error());
header("LOCATION: mem.php?id=$id");
}
}
?>
Това е формата за коментарите
PHP:
if(isSet($_GET['id'])){
	$id = (int)$_GET['id'];
	//селектираш за даденото ID коментарите
}
това под пост ли да го сложа?
 

Back
Горе