|
|
|
| Здравствуйте!
У меня идет обращение четырех запросов к БД.
данные выводятся как то странно:
к примеру,
тут все нармально, но вторая строчка:
вместо:
выдает:
один, два
один 1,два1
один2два,2
|
соответственно третия:
один, два, три
один 1,два1,три1
один2два,2,три2
|
привожу код php;
$smarty = new Smarty;
$result = mysql_query("SELECT * FROM troops_in_move WHERE move_type ='return' ORDER BY move_end ASC");
while($postrow = mysql_fetch_array($result) )
{
$units=($postrow['units']);
$second=explode("=",$units);
$id_t= $second[0];
$count_t= $second[1];
$sql1= mysql_query("SELECT * FROM troops_info WHERE id='$id_t' ");
$result1[] = mysql_fetch_array($sql1);
$result2[] = mysql_fetch_array(mysql_query("SELECT * FROM village_info WHERE village_id='$postrow[to_id]' "));
$result3[] = mysql_fetch_array(mysql_query("SELECT * FROM village_info WHERE village_id='$postrow[from_id]' "));
$smarty->compile_check = true;
$smarty->debugging = true;
$smarty->assign("postrow", $postrow);
$smarty->assign("result1", $result1);
$smarty->assign("result2", $result2);
$smarty->assign("result3", $result3);
$smarty->assign("COUNT_T", $count_t);
$smarty->display('index.tpl');
|
и страницу темплейтса:
<tr>
<td>{section name=co loop=$postrow}<a href="view.php?id={$postrow[co][0]}">{/section}
{section name=co loop=$result1}{$result1[co][1]}{/section}</a></td> </tr>
<tr> <td>{section name=items loop=$result2} {$result2[items][1]}{/section} </td> </tr>
<tr> <td>{section name=co2 loop=$result3} {$result3[co2][1]}{/section}</td> </tr>
<tr> <td>{$COUNT_T}</td> </tr>
|
P.S. $COUNT_T - выводиться нормально. | |
|
|
|
|
|
|
|
для: ronin
(06.02.2008 в 19:30)
| | Вы не продуманно передаете массив в Смарти:
либо все должно содержаться в массиве $postrow,
либо $postrow[0] - это url, а $postrow[1] текст ссылки, тогда
$postrow[2] будет содержать массив $result, который уже можно разложить вложенным циклом.
Подумайте, а уж потом Смарти, но так как вы выводите циклы - это просто ужас. | |
|
|
|
|
|
|
|
для: sim5
(06.02.2008 в 19:42)
| | к примеру в файле php я снимаю все [] там где result1[] (mysql_fetch....) во всех резальтах.
а файл tpl оставляю или меняю таким макаром, для наглядности:
<tr>
<td>{section name=co loop=$postrow}<a href="view.php?id={$postrow[co][id]}">{/section}
{section name=co loop=$result1}{$result1[co][name]}{/section}</a></td> </tr>
<tr> <td>{section name=items loop=$result2} {$result2[items][name_village]}{/section} </td> </tr>
<tr> <td>{section name=co2 loop=$result3} {$result3[co2][name_village]}{/section}</td> </tr>
<tr> <td>{$COUNT_T}</td> </tr>
|
тогда выводит только первый буквы слов!!!
или есть возможность объединить все переменные типа:
$common = array($postrow,$result1,$result2,$result3);
|
и пропустить это через foreach? | |
|
|
|
|
|
|
|
для: ronin
(07.02.2008 в 12:49)
| |
{foreach name=outer item=contact from=$contacts}
<hr />
{foreach key=key item=item from=$contact}
{$key}: {$item}<br>
{$key}: {$item}<br />
{/foreach}
{/foreach}
|
$contacts = array($postrow,$result1,$result2,$result2);
$smarty->assign("contacts", $contacts);
$smarty->display('index.tpl');
}
|
выводит все, а как сделать, чтоб можно было обращаться к конкретным полям? | |
|
|
|
|
|
|
|
для: ronin
(07.02.2008 в 13:56)
| |
{section name=customer loop=$result1}
{$result1[customer][1]}
<a href="view.php?id={$postrow[0]}"> {$result2[customer][1]}</a>
{$result3[customer][1]}
{/section}
|
код привел в такой вид, но все равно выводит нормально только первую строчку,
вторая идет вместе с данными с первой, а третия - с данными из первой и второй.
прошу помощи!!!
файл php остался как в самом начале. | |
|
|
|
|
|
|
|
для: ronin
(07.02.2008 в 16:52)
| | Поверьте, мне просто некогда разбираться в ваших массивах, приведу кратко для примера. Собственно ничего сложного нет, если вы в массив получаете именно то, чего хотите. И так, например, ваш массив $result1 содержит:
$result1[0] - это url ссылки
$result1[1] - это текст этой ссылки
$result1[2] - содержит массив того, что вы хотели во вложенной секции развернуть. Тогда:
{section name=customer loop=$result1} //это основная секция - url
<a href="view.php?id={$result1[customer][0]}"> {$result1[customer][1]}</a>
//объявляем переменную и назначаем ей массив
{assign var = result2 value = $result1[customer][2]}
//вложенная секция
{section name=result3 loop=$result2}
//выводим этот массив, короче что-то с ним делаем
{$result2[result3][0]} {$result2[result3][1]} {$result2[result3][2]} {$result2[result3][3]} ... etc
{/section}
{/section}
|
У вас же не понятно - откуда ни стого ни счего появляется в секции непонятное, если оно конечно у вас не объявлено и связано с $result1. В общем полнейшая несурациза.
Выполните print_r($array), который вы передаете в Смарти, перед тем как его передать, посмотрите, во-первых то ли в нем, чего вы ожидаете, и если да, то тогда вам более ясно будет как разложить его в секции. | |
|
|
|
|
|
|
|
для: sim5
(07.02.2008 в 19:22)
| | спасибо за помощь, но результат тот же, что у меня.
т.е. первая строчка нормально, но вторая идет вместо с информацие из первой строчки, а третия вместе - с первой и второй. т.е ошибка на странице php. Если у Вас найдется немного времени не могли бы Вы поправить файл, так как все конструкция без смарти работает без проблем. | |
|
|
|
|
|
|
|
для: ronin
(07.02.2008 в 19:42)
| | print_r(ваш массив) - начните с этого. Я вам привел пример не для того чтобы вы удивились, а для того чтобы хотя бы знали, как можно делать вложения. Это совсем не значит, что у вас должно быть именно так, я понятия не имею что у вас в массиве и чего у вас должно получиться. Разберитесь вы с передаваемым в Смарти массивом, не кто ведь вам не мешает его разложить циклами в РНР с помощью print или echo, может вам так быстрее будет понять причину, а уж сделать тоже самое в Смарти, труда не составит - секция Смарти ничем таким кардинально не отличается от FOR РНР. | |
|
|
|
|
|
|
|
для: sim5
(07.02.2008 в 20:16)
| | >>выводит все, а как сделать, чтоб можно было обращаться к конкретным полям?
$query ="select * from `tab`";
$result=mysql_query($query);
while($data[]=mysql_fetch_array($rwsult))
$smarty->assign('data',$data);
////////////////////////
{section name='data' loop=$data}
{$data[data].name_ru} - имя колонки в БД
{/section} | |
|
|
|
|
|
|
|
для: moonfox
(07.02.2008 в 20:55)
| | у меня вот проблема:
while($postrow = mysql_fetch_array($result) )
{
}
|
без смарти все тип топ, но если данные загонять в массив для смарти т.е. добавляется
while($postrow[] = mysql_fetch_array($result) )
{
echo "<pre>";
print_r ($postrow);
echo "</pre>";
}
|
тогда именно на этом этапе происходит глюк.
я буду разбираться, спасибо всем, кто откликнулся. | |
|
|
|
|
|
|
|
для: ronin
(08.02.2008 в 16:55)
| | тут на сайте есть светлая голова (ну не счетая Хеопса, естественно (фараон и сим5 пусть не обижаются)) - Трианон, вот нашел его код - персик, но вот как его прикрепит к while - ума не прилажу
for($arr = array(); ($postrow = mysql_fetch_assoc($result)) != 0; $arr[] = $postrow);
echo "<pre>";
print_r ($arr);
echo "</pre>";
|
выдает все тип топ(просмотр массива без глюков!), но как обратитсься к полю из базы - не знаю $arr[поле_базы]. | |
|
|
|
|
|
|
|
для: ronin
(08.02.2008 в 20:06)
| | Может быть ?
как у Вас называются поля, в теме не видно.... | |
|
|
|
|
|
|
|
для: Trianon
(08.02.2008 в 20:45)
| | у вас явно проблема в while... интересно присвоение значений для смарти тоже в цикле? | |
|
|
|
|
|
|
|
для: moonfox
(09.02.2008 в 01:47)
| | > to: Trianon (08.02.2008 в 20:45)
>у вас явно проблема в while... интересно присвоение значений для смарти тоже в цикле?
У меня с while никаких проблем нет. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 12:04)
| | не у вас ))) | |
|
|
|
|
|
|
|
для: moonfox
(09.02.2008 в 18:58)
| | я тут всех запутал и себя, moonfox заметил мою ошибку , что я переменные смарти объявляю в цикле while. Мне стыдно. Я больше не буду. Большое спасибо. а то я зациклился и не мог увидеть ошибку! Спасибо всем, кто откликнулся! | |
|
|
|