Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: изменение данных в таблице
 
 автор: Рома   (28.10.2008 в 00:59)   письмо автору
 
 

смысл изменения данных состоит в том, чтобы имея много однотипных разделов, редактировать их двумя скриптами - одним выводить информацию в поля редактирования, присваивая странице методом GET идентификатор раздела, чтобы не создавать кучу однотипных файлов с разными идентификаторами, а вторым изменять от одного до нескольких полей в зависимости от кол-ва выведенных таковых на экран.

<table align="center" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="186" align="center" valign="top">
<div class="i">
<Form><Input Type="hidden" Name="select value">
<Select Size="1" OnChange="top.location.href = this.options[this.selectedIndex].value;">
<Option selected>Выберите нужный раздел</Option>
<Option value="http://localhost/a_a.php?nav=nknk">2</Option>
<Option value="http://localhost/a_a.php?nav=nknm">3</Option>
<Option value="http://localhost/a_a.php?nav=nknp">4</Option>
<Option value="http://localhost/a_a.php?nav=nknsd">4</Option>
<Option value="http://localhost/a_a.php?nav=nknsn">7</Option>
<Option value="http://localhost/a_a.php?nav=nknsn">7</Option>
</Select></Form></div>
</td>
<td width="402" align="center" valign="top">
<?php
if(empty($_GET['nav'])) $nav="nknk"; //dghjdghjdghjdghj
$msconnect=@mysql_connect($mshost, $msuser, $mspassword);
@mysql_select_db($msname, $msconnect);
$sql="SELECT * FROM roma WHERE proz='{$nav}'";
$result=@mysql_query($sql, $msconnect);
if(!$result) exit("<div class=\"ss\">blblbl</div>");
$posts=mysql_num_rows($result);
if(!$posts) exit("<div class=\"ss\">blblbl</div>");
$total=intval(($posts-1)/$pnumber)+1; //sghshdfghdfghfdghd
if(!empty($_GET['page']))
{

if($page<=0) $page=1;
elseif($page>$total) $page=$total;
elseif(!(int)$page) $page=1; // проверить!!!!!!!!!!!!!!!!
elseif(!intval($page)) $page=1;
}
else
{
$page=1;
}
echo "<div class=\"ss\">";
//dfghdfghdfgh
if($page!=1)
{
$pervpage ='<a href='."$_SERVER[PHP_SELF]".'?page='.($page-1)."&nav=".$nav.'>'."&nbsp;"."dghjdgh"."&nbsp;".'</a>';
echo $pervpage;
}
//'<a href= ./n_kn_k.php?page=1>'."&nbsp;"."|<<"."&nbsp;".'</a>'
if($page-2>0)
{
$page2left="&nbsp;&nbsp;"."..."."&nbsp;&nbsp;".'<a href='."$_SERVER[PHP_SELF]".'?page='.($page-2)."&nav=".$nav.'>'."&nbsp;".($page-2)."&nbsp;".'</a>';
echo $page2left;
}
if($page-1>0)
{
$page1left='<a href='."$_SERVER[PHP_SELF]".'?page='.($page-1)."&nav=".$nav.'>'."&nbsp;".($page-1)."&nbsp;".'</a>';
echo $page1left;
}
echo "<font color=\"#FF0000\"><b>"."&nbsp;".$page."&nbsp;"."</b></font>";
if($page+1<=$total)
{
$page1right='<a href='."$_SERVER[PHP_SELF]".'?page='.($page+1)."&nav=".$nav.'>'."&nbsp;".($page+1)."&nbsp;".'</a>';
echo $page1right;
}
if($page+2<=$total)
{
$page2right='<a href='."$_SERVER[PHP_SELF]".'?page='.($page+2)."&nav=".$nav.'>'."&nbsp;".($page+2)."&nbsp;".'</a>'."&nbsp;&nbsp;"."..."."&nbsp;&nbsp;";
echo $page2right;
}
if($page!=$total)
{
$nextpage='</a><a href='."$_SERVER[PHP_SELF]".'?page='.($page+1)."&nav=".$nav.'>'."&nbsp;"."dhgjdg"."&nbsp;".'</a>';
echo $nextpage;
}
//. '<a href= ./n_kn_k.php?page='.($total).'>'."&nbsp;".">>|"."&nbsp;";
echo "</div>";
echo "<br>";



$start=(($page-1)*$pnumber);
$sql="SELECT * FROM roma WHERE proz='{$nav}' LIMIT $start, $pnumber";
$result=@mysql_query($sql, $msconnect);
if(!$result) exit("Error");
if(mysql_num_rows($result)>0)
{
while($row=mysql_fetch_array($result))
{
$pn=$row['pn'];
$proz=$row['proz'];
$calc=$row['calc'];
$name=$row['name'];
$msg=$row['msg'];
$mobile=$row['mobile'];
$email=$row['email'];

echo "<table width=\"588\"><tr><td><div class=\"i\" align=\"left\">";
echo "<form action=\"a_update.php\" method=\"post\">
<TEXTAREA name=\"msg\" style=\"color:#000000; font-style:inherit; background-color:#FFFFFF\" ROWS=7 COLS=70>".$msg."</TEXTAREA><br>"
."<input type=\"submit\" value=\"Изменить пост\">"
."<input type=\"hidden\" value=\"".$start."\" name=\"start\">"
."<input type=\"hidden\" value=\"".$pnumber."\" name=\"pnumber\">"
."</form>";
echo "
</div>
</td>
</tr>
</table>";
}
}
?>
</td>
</tr>
</table>

в выводе ссылок навигации я передаю параметр nav методом GET, что должно сообщить скрипту-обработчику какой раздел я редактирую, но следующий скрипт пишет ошибку:

<?php
$nav=$_GET['nav'];
$msg=$_POST['msg'];
$start=$_POST['start'];
$pnumber=$_POST['pnumber'];
$mshost = "localhost"; // Хост
$msuser = "root"; // Имя пользователя
$mspassword = "138"; // Пароль
$msname = "roma"; // Имя базы данных
$msconnect = @mysql_connect($mshost, $msuser, $mspassword);
@mysql_select_db($msname, $msconnect);
$res=@mysql_query($sql="UPDATE roma SET msg='$msg' WHERE proz='$nav' LIMIT $start, $pnumber");
if(!$res) exit("Error:".mysql_error());
mysql_close($msconnect);
?>

$nav=$_GET['nav'];
// если присутствует эта строка - выводит сообщение об ошибке в ней
я уже пробовал без нее, в надежде, что метод GET автоматически передаст второму сценарию переменную $nav, но и это чето не работает.
можно конечно создать кучу одинаковых файлов, но все же хочется обойтись одним динамическим скриптом.

вот и проблема передать изменяющийся в форме идентификатор.
мне тут еще посоветовали попробовать применить сессии, они ведь сохраняют переменные из сценария в сценарий.

как будет проще?

  Ответить  
 
 автор: Рома   (28.10.2008 в 01:12)   письмо автору
 
   для: Рома   (28.10.2008 в 00:59)
 

а может надо так

<form action"update.php&nav=$nav">

кстати идея, попробую - отпишусь...

  Ответить  
 
 автор: Рома   (28.10.2008 в 01:18)   письмо автору
 
   для: Рома   (28.10.2008 в 01:12)
 

не а, не работает!
пишет тоже самое:

Error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 10' at line 1

кстати msg и proz - это столбцы базы

засада, даже нет идей, в каком направлении думать:((

  Ответить  
 
 автор: Рома   (28.10.2008 в 17:48)   письмо автору
 
   для: Рома   (28.10.2008 в 01:18)
 

может нужно каждое сообщение по своему назвать, чтобы было десять разных сообщений?

  Ответить  
 
 автор: Рома   (28.10.2008 в 23:45)   письмо автору
 
   для: Рома   (28.10.2008 в 17:48)
 

разобрав чьюто гостевую, я понял, что все это одна сплошная ошибка, у меня уже все редактирует, все ок.
я просто слишком заморочился mysql, что совсем забыл про php.
вот как я исправился:


<table align="center" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="186" align="center" valign="top">
<div class="i">
<Form><Input Type="hidden" Name="select value">
 <Select Size="1" OnChange="top.location.href = this.options[this.selectedIndex].value;">
<Option selected>Выберите нужный раздел</Option>
  <Option value="http://localhost/a_a.php?nav=nknk">2</Option>
  <Option value="http://localhost/a_a.php?nav=nknm">3</Option>
  <Option value="http://localhost/a_a.php?nav=nknp">4</Option>
  <Option value="http://localhost/a_a.php?nav=nknsd">4</Option>
  <Option value="http://localhost/a_a.php?nav=nknsn">7</Option>
  <Option value="http://localhost/a_a.php?nav=nknsn">7</Option>
</Select></Form></div>
</td>
<td width="402" align="center" valign="top">
<?php
if(empty($_GET['nav'])) $nav="nknk"//dghjdghjdghjdghj
$msconnect=@mysql_connect($mshost$msuser$mspassword);
@
mysql_select_db($msname$msconnect);
$sql="SELECT * FROM roma WHERE proz='{$nav}'";
$result=@mysql_query($sql$msconnect);
if(!
$result) exit("<div class=\"ss\">blblbl</div>");
$posts=mysql_num_rows($result);
if(!
$posts) exit("<div class=\"ss\">blblbl</div>");
$total=intval(($posts-1)/$pnumber)+1//sghshdfghdfghfdghd
if(!empty($_GET['page']))
{
if(
$page<=0$page=1;
elseif(
$page>$total$page=$total;
elseif(
intval($page<=0)) $page=1;
}
else
{
$page=1;
}
echo 
"<div class=\"ss\">";
//dfghdfghdfgh
if($page!=1
{

$pervpage ='<a href='."$_SERVER[PHP_SELF]".'?page='.($page-1)."&nav=".$nav.'>'."&nbsp;"."dghjdgh"."&nbsp;".'</a>';  
echo 
$pervpage;
}
//'<a href= ./n_kn_k.php?page=1>'."&nbsp;"."|<<"."&nbsp;".'</a>'
if($page-2>0
{
$page2left="&nbsp;&nbsp;"."..."."&nbsp;&nbsp;".'<a href='."$_SERVER[PHP_SELF]".'?page='.($page-2)."&nav=".$nav.'>'."&nbsp;".($page-2)."&nbsp;".'</a>'
echo 
$page2left;
}
if(
$page-1>0
{
$page1left='<a href='."$_SERVER[PHP_SELF]".'?page='.($page-1)."&nav=".$nav.'>'."&nbsp;".($page-1)."&nbsp;".'</a>'
echo 
$page1left;

echo 
"<font color=\"#FF0000\"><b>"."&nbsp;".$page."&nbsp;"."</b></font>";
if(
$page+1<=$total
{
$page1right='<a href='."$_SERVER[PHP_SELF]".'?page='.($page+1)."&nav=".$nav.'>'."&nbsp;".($page+1)."&nbsp;".'</a>';
echo 
$page1right;
}
if(
$page+2<=$total
{
$page2right='<a href='."$_SERVER[PHP_SELF]".'?page='.($page+2)."&nav=".$nav.'>'."&nbsp;".($page+2)."&nbsp;".'</a>'."&nbsp;&nbsp;"."..."."&nbsp;&nbsp;";  
echo 
$page2right;
}
if(
$page!=$total
{
$nextpage='<a href='."$_SERVER[PHP_SELF]".'?page='.($page+1)."&nav=".$nav.'>'."&nbsp;"."dhgjdg"."&nbsp;".'</a>';
echo 
$nextpage;
    }
//. '<a href= ./n_kn_k.php?page='.($total).'>'."&nbsp;".">>|"."&nbsp;";
echo "</div>";
    echo 
"<br>";
//($i=$pnamber;)


$start=(($page-1)*$pnumber);
$sql="SELECT * FROM roma WHERE proz='{$nav}' LIMIT $start$pnumber";
$result=@mysql_query($sql$msconnect);
if(!
$result) exit("Error");
if(
mysql_num_rows($result)>0
{
while(
$row=mysql_fetch_array($result))
{
$pn=$row['pn'];
$proz=$row['proz'];
$calc=$row['calc'];
$name=$row['name'];
$msg=$row['msg'];
$mobile=$row['mobile'];
$email=$row['email'];

echo 
"
<table width=\"588\">
<tr>
<td>
<div class=\"contur\"><div class=\"end\">
<div class=\"t\">
$msg</div>
<div class=\"i\" align=\"right\">
$mobile,&nbsp;$name</div>
<br>
<div class=\"i\" align=\"left\">
<a href=\"xpost.php?action=edit&pn=
$pn\">"."&nbsp;"."Изменить"."&nbsp;"."</a>
<a href=\"xpost.php?action=delete&pn=
$pn\">"."&nbsp;"."Удалить"."&nbsp;"."</a></div>
</div></div></td>
</tr>
</table>"
;

}
}

?>
</td>
</tr>
</table>



и этим файлом обрабатываю:


<?php
include "../../config.php";
if(
$action=="edit")
{
$msconnect=@mysql_connect($mshost$msuser$mspassword);
@
mysql_select_db($msname$msconnect);
$sql="SELECT * FROM roma WHERE pn='$pn'";
$result=@mysql_query($sql$msconnect);
if(!
$result) exit("<div class=\"ss\">blblbl</div>");
$posts=mysql_num_rows($result);
if(!
$posts) exit("<div class=\"ss\">blblbl</div>");
while(
$row=mysql_fetch_array($result))
{
$pn=$row['pn'];
$proz=$row['proz'];
$calc=$row['calc'];
$name=$row['name'];
$msg=$row['msg'];
$mobile=$row['mobile'];
$email=$row['email'];

echo 
"<table width=\"588\"><tr><td><div class=\"i\" align=\"left\">";
echo 
"<form action=\"xpost.php\" method=\"post\">"
    
."<input type=\"hidden\" value=\"".$pn."\" name=\"pn\">"
    
."<input type=\"hidden\" value=\"ok_edit\" name=\"action\">";
echo 
"Имя:<br>"."<input style=\"color:#000000; font-style:inherit; background-color:#FFFFFF\" type=\"text\" name=\"name\" size=\"25\" maxlength=\"50\" value=\"".$name."\"><br>";
echo 
"Телефон:<br>"."<input style=\"color:#000000; font-style:inherit; background-color:#FFFFFF\" type=\"text\" name=\"mobile\" size=\"25\" maxlength=\"50\" value=\"".$mobile."\"><br>";
echo 
"Текст объявления:<br>"."<TEXTAREA name=\"msg\" style=\"color:#000000; font-style:inherit; background-color:#FFFFFF\" ROWS=7 COLS=70>".$msg."</TEXTAREA><br>";
echo 
"<input style=\"background-color:#000000; color:#FFFFFF\" type=\"submit\" value=\"Изменить пост\">"."</form>";
echo 
"</div></td></tr></table>";
}
}
elseif(
$action=="ok_edit")
{
$name=addslashes($name);
$mobile=addslashes($mobile);
$msg=addslashes($msg);
//$mail=addslashes($mail);    

$msconnect=@mysql_connect($mshost$msuser$mspassword);
@
mysql_select_db($msname$msconnect);
$sql="update roma set msg='{$msg}' where pn='$pn'";
$result=@mysql_query($sql$msconnect);
if(!
$result) exit("<div class=\"ss\">blblbl".mysql_error()."</div>");
echo 
"Текст объявления изменен!";
}
//elseif($action=="delete")
//{
//echo "<div class=\"b\" align=\"left\">delete</div>";
//}
?>


все просто!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования