Форум → Программирование → PHP для идиотов → выборка из БД
выборка из БД
-
Доброго всем времени суток.
Подскажите как такую выборку из БД присвоить как какой-нибудь переменной чтобы передать её на страницу?
$sql = "SELECT * FROM $table_name where (mark='Tank')AND (model='Т34')";
$query = mysql_query($sql,$link) or die();
$n = mysql_num_rows($query);
if ($n = = 0) {
echo "<tr>";
echo "<td colspan=6 align=center><p> раздел не заполнен! </td></tr>";
}
else {
$i=0;
while($i<$n)
{
$img=mysql_result($query,$i, "pic");
$t_text=mysql_result($query,$i, "text");
$nid=mysql_result($query,$i, "id");
$art=mysql_result($query,$i, "articl");
echo "<table border=1 cellpadding=0 cellspacing=0 width=570 align=center>";
echo "
<tr width=250 height=133><td> <img src='$img' width=250 height=133> </td>
<td>
<table border=1 cellpadding=0 cellspacing=0 width=320>
<tr><td> $t_text </td></tr>
<tr><td> $art </td></tr>
</table>
</td>
</tr>";
echo"<tr height=20><td></td><td></td></tr>";
echo "</table>";
$i++;
}
}
заранее спасибо) -
27 октября 2008 г. 19:23, спустя 4 минуты 16 секунд
$sql = mysql_query() …
while ($row = mysql_fetch_assoc($sql)) {
print_r($row);
}все умрут, а я изумруд -
27 октября 2008 г. 21:30, спустя 2 часа 6 минут 18 секунд
блиин
нужно чтобы данные сюда попали
$smarty -> assign('text', $text);
$text- то есть я так понял их сюда надо присвоить -
27 октября 2008 г. 21:31, спустя 1 минуту 11 секунд
я как не бюсь, выборка из базы велезает на странице где попало( -
27 октября 2008 г. 21:56, спустя 25 минут 24 секунды
Помоему ты немного не понимаеш чего хочеш.
$smarty -> assign('text', $text); - Это шаблонизатор смарти. Тут cтатья про него есть. надо почитать.
http://pyha.ru/articles/php/smarty-for-beginners/
В общих чертак, как показал md5 надо что то типо этого$sql = mysql_query("SELECT name,id FROM table")
while ($row = mysql_fetch_array($sql))
{
$text[]=$row;
}
$smarty -> assign('text', $text);
Это в выполняющем файле, а
где вывести надо,
там так
<body>
{$text.name}
{$text.id}
</body> -
27 октября 2008 г. 22:20, спустя 23 минуты 27 секунд
что то я вообще понимать что либо перестал(((
вот как у меня сейчас все выглядит:
require($_SERVER['DOCUMENT_ROOT'].'/libs/Smarty.class.php');
$smarty = new Smarty();
$link = mysql_connect($localhost, $mysql_user, $mysql_password);
if(!$link) die('Не могу соединиться с MySQL');
mysql_select_db($bd_name) or die('Не могу открыть $bd_name: '.mysql_error());
$query = "SELECT * FROM $table_name where (mark='Q')AND (model='W')";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo "<table border=1 cellpadding=0 cellspacing=0 width=570 align=center>";
echo "<tr><td><img src= $row[pic] width=250 height=133></td><td>";
echo "<table border=1 cellpadding=0 cellspacing=0 width=320>";
echo "<tr><td> $row[tov_name] </td></tr>";
echo "<tr><td> $row[tov_text] </td></tr>";
echo "<tr><td> $row[tov_sena] </td></tr>";
echo "<tr><td> $row[articl] </td></tr>";
echo "<tr><td>";
echo "<table border=0 cellpadding=5 cellspacing=0 width=320>";
echo "<tr><td><input type='hidden' name='id' value='$nid'><input type='submit' name='norel' value='в корзину' readonly></td></tr>";
echo "</table>";
echo "</td></tr>";
echo "</table>";
echo "</td></tr>";
echo "<tr height=20><td></td><td></td></tr>";
echo "</table>";
}
mysql_free_result($result);
$text=' ';
$smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].'/templates';
$smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].'/templates_c';
$smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].'/cache';
$smarty->config_dir = $_SERVER['DOCUMENT_ROOT'].'/configs';
$smarty -> assign('text', $text);
$smarty->display ('mainuslugi.tpl'); -
28 октября 2008 г. 0:06, спустя 1 час 46 минут 9 секунд
Сильно не вдавался, но помоему ебе нужно такrequire($_SERVER['DOCUMENT_ROOT'].'/libs/Smarty.class.php');
$smarty = new Smarty();
$link = mysql_connect($localhost, $mysql_user, $mysql_password);
if(!$link) die('Не могу соединиться с MySQL');
mysql_select_db($bd_name) or die('Не могу открыть $bd_name: '.mysql_error());
$text=' ';
$query = "SELECT * FROM $table_name where (mark='Q')AND (model='W')";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
$text.="<table border=1 cellpadding=0 cellspacing=0 width=570 align=center>";
$text.="<tr><td><img src= '".$row[pic]."' width=250 height=133></td><td>";
$text.="<table border=1 cellpadding=0 cellspacing=0 width=320>";
$text.="<tr><td> ".$row['tov_name']." </td></tr>";
$text.="<tr><td> ".$row['tov_text']." </td></tr>";
$text.="<tr><td> ".$row['tov_sena']." </td></tr>";
$text.="<tr><td> ".$row['articl']." </td></tr>";
$text.="<tr><td>";
$text.="<table border=0 cellpadding=5 cellspacing=0 width=320>";
$text.="<tr><td><input type='hidden' name='id' value='$nid'><input type='submit' name='norel' value='в корзину' readonly></td></tr>";
$text.="</table>";
$text.="</td></tr>";
$text.="</table>";
$text.= "</td></tr>";
$text.="<tr height=20><td></td><td></td></tr>";
$text.="</table>";
}
mysql_free_result($result);
$smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].'/templates';
$smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].'/templates_c';
$smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].'/cache';
$smarty->config_dir = $_SERVER['DOCUMENT_ROOT'].'/configs';
$smarty -> assign('text', $text);
$smarty->display ('mainuslugi.tpl');
Что то типа -
28 октября 2008 г. 0:24, спустя 18 минут 34 секунды
Saimon, не может быть echo и assign одновременно.
Либо ты выводишь данные через echo, тогда никакого Smarty быть не должно в принципе, либо отдаешь данные в шаблон и пользуешься методами шаблонизатора. Поэтому у тебя и получается где попало т.к. вывод сам по себе, а шаблонизатор сам по себе.
То что написал Professor, в принципе может работать, но делать так не надо не в коем случае. -
28 октября 2008 г. 1:09, спустя 45 минут 2 секунды
но делать так не надо не в коем случае.
Подтверждаю! -
28 октября 2008 г. 7:44, спустя 6 часов 34 минуты 44 секунды
Так работает ТОЧНО проверил!!!
Почему нельзя ??? И как можно сделать правильно???
Я в Smarty новичок, да и в ПХП тоже, вот уже один сайт с принципиальным касяком есть (не правильно понял как Smarty работает) -
28 октября 2008 г. 7:49, спустя 4 минуты 44 секунды
я на сколько понял данные надо в массив, а из массива в $text
что вроде этого
@$result = mysql_query("SELECT * FROM `news`");
$cnt = 0;
$arr_news = array ();
while ($row = mysql_fetch_array ($result)) {
$arr_news[$cnt]['date'] = $row[date];
$arr_news[$cnt]['text'] = $row[text];
$cnt++;
}
$smarty->assign('arr_news', $arr_news);
$smarty->display('index.tpl'); -
28 октября 2008 г. 9:27, спустя 1 час 37 минут 42 секунды
Так работает ТОЧНО проверил!!!
Почему нельзя ??? И как можно сделать правильно???
Потому что нужно понимать, что такое шаблонизатор, и зачем он нужен. А нужен он для отделения бизнес-логики от вью-логики.
В варианте, предложенным Professor-ом, они смешиваются. Если не понял, читать про MVC и шаблонизаторы, причем теорию.
Правильно будет что-то вроде:$result = mysql_query("SELECT * FROM $table_name WHERE `mark`='Q' AND `model`='W'";);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
$smarty->assign("news_data", $data);
И в темплейте что-то вроде:{foreach from=$news_data item=v}
<table border=1 cellpadding=0 cellspacing=0 width=570 align=center>
<tr><td><img src="{$v.pic}" width=250 height=133></td><td>
<table border=1 cellpadding=0 cellspacing=0 width=320>
<tr><td>{$v.tov_name}</td></tr>
<tr><td>{$v.tov_text}</td></tr>
<tr><td>{$v.tov_sena}</td></tr>
<tr><td>{$v.articl}</td></tr>
<tr><td>
{/foreach}
Это если я правильно вспомнил синтаксис смарти, потому как это говно давно не использовал. -
28 октября 2008 г. 12:36, спустя 3 часа 8 минут 56 секунд
Все правильно. Как я и предлогал в первом сообщении)) -
28 октября 2008 г. 23:41, спустя 11 часов 5 минут 49 секунд
Спасибо все заработало
Еще просьба, подскажите какие книги почитать на эту тему (Smarty и PHP), я еще только учусь. -
28 октября 2008 г. 23:56, спустя 14 минут 48 секунд
сначала почитать про php,
smarty ещё рано
не понимаешь что должен передавать и куда и как это обрабатыватьвсе умрут, а я изумруд
Пожалуйста, авторизуйтесь, чтобы написать комментарий!