Проблема при использовании Smarty

tuman11

Новичок
Проблема при использовании Smarty

У меня есть работающая страница кода на PHP:

PHP:
<?php  

// Подключение к серверу.
$conn = mysql_connect("localhost", "root", "") or die(mysql_error());

.................................................................
.................................................................
// Выводим результат как HTML - таблицу
echo "<TABLE border = 4 width = 80%>";

echo "<a name=\"Add\"></a>";

$i = 0;

if(isset($_POST[korz]))
{
      $korz = $_POST[korz];
      $oldkorz = $_POST[oldkorz];
      $korz += $oldkorz;
      $num = $_POST[num];
      $kol = $_POST[kol];

      if($korz > $kol) // Ограничение.
           $korz = $kol;

      $rr = db_query("UPDATE dr6_lekar SET Kor=$korz where(Num = $num) LIMIT 1;");
}

// Вызываем db_fetch_array в цикле while.
while($row = db_fetch_array($r, MYSQL_ASSOC))
{
//
        ++$i;
       echo "<TR>";
       echo "<TD>$row[Name]</TD>";
       echo "<TD>$row[Kol]</TD>";
       echo "<TD>$row[Kor]</TD>";
       echo "<TD>
       <form name="web" method="post" action="#Add">
       <input type=text name="korz" width=6 value="0">
       <input type="hidden" name="num" value=$row[Num]>
       <input type="hidden" name="kol" value=$row[Kol]>
       <input type="hidden" name="oldkorz" value=$row[Kor]>
       <input type=submit name="A1" value="Добавить">
       </form>
       </TD>";
       echo "</TR>";
}

// Таблица dr6_lekar выведена.
echo "</TABLE>";
// Закрываем соединение.
mysql_close($conn);
?>
Решил для вывода таблицы сделать шаблон с использованием Smarty. Преобразовал код страницы:

PHP:
<?php  
define('SMARTY_DIR', './Smarty-2.6.26/libs/' );
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();
// Подключаем шаблон
$smarty->template_dir = './Smarty-2.6.26/' . 'templates/';
$smarty->compile_dir = './Smarty-2.6.26/' . 'Compile/';
$smarty->cache_dir = './Smarty-2.6.26/' . 'Cache/';
$smarty->caching = false;

$smarty->config_dir = './Smarty-2.6.26/' . 'Configs/';
$smarty->compile_check = TRUE;
$smarty->error_reporting = E_ALL; // LEAVE E_ALL DURING DEVELOPMENT
$smarty->debugging = true;
//$smarty->debug_tpl = SMARTY_DIR .'debug.tpl';
.......................................................................
.......................................................................

// Выводим результат как HTML - таблицу
echo "<TABLE border = 4 width = 80%>";

echo "<a name=\"Add\"></a>";

$i = 0;

if(isset($_POST[korz]) && $_POST[korz] != 0)
{
$korz = $_POST[korz];
$oldkorz = $_POST[oldkorz];
$korz += $oldkorz;
$num = $_POST[num];
$kol = $_POST[kol];

if($korz > $kol) // Ограничение.
 $korz = $kol;

$rr = db_query("UPDATE dr6_l SET Kor=$korz where(Num = $num) LIMIT 1;");
$r = db_query("select * from dr6_l");
}

// Вызываем db_fetch_array в цикле while.
while($row = db_fetch_array($r, MYSQL_ASSOC))
{
   //
   ++$i;
   $smarty->assign("name", $row[Name]);
   $smarty->assign("kol", $row[Kol]);
   $smarty->assign("kor", $row[Kor]);
   $smarty->assign("num", $row[Num]);
   $smarty->assign("func","Добавить");
   $smarty->display("name.tpl");
}

// Таблица выведена.
echo "</TABLE>";
Файл шаблона name.tpl:
<HTML>
<TR>
<TD>{$name}</TD>
<TD>{$kol}</TD>
<TD>{$kor}</TD>
<TD>
<form name="web" method="post" action="#Add">
<input type=text name="korz" width=6 value="0">
<input type="hidden" name="num" value={$num}>
<input type="hidden" name="kol" value={$kol}>
<input type="hidden" name="oldkorz" value={$kor}>
<input type=submit name="A1" value={$func}>
</form>
</TD>
</TR>
</HTML>
Страница работает, но при выводе таблицы перед ее верхней рамкой и внутри последнего столбца (с формой) появляются черные ромбики со знаком вопроса. Не могу понять причины их появления и как от них избавиться.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
tuman11
html надо учить, учить надо html, пока иди учи, а потом до смарти дойдешь.

PS: таблиц я у тебя не видел...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
появляются черные ромбики со знаком вопроса
[telepat_mode]
cайт в utf а файл шаблона - нет.
[/telepat_mode]

$smarty->assign("name", $row[Name]);
Жесть.
Во-первых включи вывод ошибок. Будешь удивлен.
http://phpfaq.ru/debug
Во-вторых
$smarty->assign("row", $row);
в шаблоне
<TD>{$row.name}</TD>

-~{}~ 23.03.10 11:03:

:D

-~{}~ 23.03.10 11:05:

B это.
Как думаешь, если уже надумал использовать шаблонизатор, то наверное не следует выводить что-нибудь в пхп=скриптах?
 

tuman11

Новичок
Автор оригинала: Mr_Max
[telepat_mode]
cайт в utf а файл шаблона - нет.
[/telepat_mode]



Жесть.
Во-первых включи вывод ошибок. Будешь удивлен.
http://phpfaq.ru/debug
Во-вторых
$smarty->assign("row", $row);
в шаблоне
<TD>{$row.name}</TD>

-~{}~ 23.03.10 11:03:


:D

-~{}~ 23.03.10 11:05:

B это.
Как думаешь, если уже надумал использовать шаблонизатор, то наверное не следует выводить что-нибудь в пхп=скриптах?
Автор оригинала: tuman11
Спасибо за помощь и справедливую критику. Внес поправки в код, все работает нормально.

Фрагмент кода страницы:

Код:
[PHP]
<?php>
.......................................................................
$i = 0;

if(isset($_POST[korz]) && $_POST[korz] != 0)
{
	$korz = $_POST[korz];
	$oldkorz = $_POST[oldkorz];
	$korz += $oldkorz;
	$num = $_POST[num];
	$kol = $_POST[kol];

	if($korz > $kol) // Ограничение.
		$korz = $kol;

	$rr = db_query("UPDATE dr6_l SET Kor=$korz where(Num = $num) LIMIT 1;");
	$r = db_query("select * from dr6_l");
}

$Arr1;
// Вызываем db_fetch_array в цикле while.
while($row = db_fetch_array($r, MYSQL_ASSOC))
{// 
    $Arr1[$i][Name] = $row[Name];
    $Arr1[$i][Kor] = $row[Kor];
    $Arr1[$i][Kol] = $row[Kol];
    $Arr1[$i][Num] = $row[Num];
    ++$i;
}

$smarty->assign("data", $Arr1);
$smarty->assign("func","Добавить");

// Выводим результат как HTML - таблицу
$smarty->display("file:name.tpl");
// Таблица dr6_l выведена.
.................................................................
<?>
[/PHP]
Файл шаблона name.tpl
Код:
<html>
<TABLE border = 4 width = 80%>
{section name=rows loop=$data}
<TR>
_ _<TD>{$data[rows].Name}</TD>
_ _<TD>{$data[rows].Kol}</TD>
_ _<TD>{$data[rows].Kor}</TD>
_ _<TD>
_ _ <form name="web" method="post" action="#Add">
_ _ <input type=text name="korz" width=6 value="0">
_ _ <input type="hidden" name="num" value={$data[rows].Num}>
_ _ <input type="hidden" name="kol" value={$data[rows].Kol}>
_ _ <input type="hidden" name="oldkorz" value={$data[rows].Kor}>
_ _ <input type=submit name="A1" value={$func}>
_ _ </form>
_ _</TD>
</TR>
{/section}
</TABLE>
<a name="Add"></a>
</html>
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
1. Почитай вот здесь. Как раз твой случай.
http://phpfaq.ru/slashes#injection

2. Зачем эти танцы с бубном при присвоении значений.
$Arr1[$i][Name] = $row[Name];
$Arr1[$i][Kor] = $row[Kor];
$Arr1[$i][Kol] = $row[Kol];
$Arr1[$i][Num] = $row[Num];
++$i;
?
$Arr1[] = $row;
Чем не подошло?

3.
Включи вывод ошибок
 

tuman11

Новичок
Сверху