|
|
|
| Вот есть вопрос, не могу решить, никогда не сталкивался:
Хочу сделать чтобы в админке, например товаров, при открытии какойто позиции, айди которой например 3, поле списка брало все категории из базы, подсвечивало активную, то есть результат типа такого:
<select name=select>
<option value=0>Не выбрано</option>
<option value=1>Категория1</option>
<option value=2>Категория2</option>
<option value=3 selected>Категория3</option>
<option value=4>Категория4</option>
</select>
|
Подскажите кто сталкивался?
Спасибо!!! | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 12:20)
| |
<select name=select>
<option value=0<? if (!isset($_GET["id"]) || intval($_GET["id"]) == 0 || intval($_GET["id"]) <0) {?>selected<?}?>>Не выбрано</option>
<option value=1<? if (intval($_GET["id"]) == 1) {?>selected<?}?>>Категория1</option>
<option value=2<? if (intval($_GET["id"]) == 2) {?>selected<?}?>>Категория2</option>
<option value=3<? if (intval($_GET["id"]) == 3) {?>selected<?}?>>Категория3</option>
<option value=4<? if (intval($_GET["id"]) == 4) {?>selected<?}?>>Категория4</option>
</select>
|
| |
|
|
|
|
|
|
|
для: elenaki
(27.03.2008 в 12:29)
| | у меня все айдишники категории и названия берутся из базы, и все товары тоже из базы, а категорий очень много, постоянно добавляются, то есть мне нужно пропускать в цикле, а в цикле чегото услувия не работают, у меня получается сделать только так:
$res=mysql_query("SELECT * FROM brand ORDER by Brand_Name");
while ($myrow5 = mysql_fetch_assoc($res))
{
$Var1.= "<option value=".$myrow5["Brand_ID"].">".$myrow5["Brand_Name"]."</option>";
}
function br_id_sel($i)
{
$resns=mysql_query("SELECT * FROM brand WHERE Brand_ID=$i");
$row=mysql_fetch_assoc($resns);
return "<select name=\"Produce_Brand_ID\"><option value=".$row["Brand_ID"].">".$row["Brand_Name"]."</option><option value=\"0\"></option>";
}
|
где $i - айдишник категории из таблицы товаров
но в таком случае получается
<select name=select>
<option value=3>Категория3</option>
<option value=0>Не выбрано</option>
<option value=1>Категория1</option>
<option value=2>Категория2</option>
<option value=3>Категория3</option>
<option value=4>Категория4</option>
</select>
а как бы так обиграть с selected ???? | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 12:44)
| | id, который стоит в value списка, надо с чем-то сравнивать. во-первых, надо знать, каким
методом вы передаете данные формы (GET или POST). если метод POST, то в примере надо
поменять _GET на _POST. а если надо, чтоб
=======================================
поле списка брало все категории из базы
=======================================
в select надо вставить реакцию на событие выбора onselect=... дальше переход на файл,
который будет делать выборку по id, стоящему в value. хотя в админке я бы сделала это AJAX' oм | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 12:20)
| |
if ($_GET['id'] == $cat['id']) echo 'selected'; else echo '';
|
| |
|
|
|
|
|
|
|
для: mihdan
(27.03.2008 в 13:04)
| | мне как то нужно вот в эту функцию
function br_xxx($i)
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
return "<option value=".$myrow5["Brand_ID"]." ### >".$myrow5["Brand_Name"]."</option>";
}
}
|
вместо ### встроить или функцию условия, или условие типа
if ($myrow5["Brand_ID"] ==$i) { echo "selected"}
но в цикле условие не работает (((( | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 13:32)
| | если не работает условие, надо проверить, чему равны переменные в каждой итерации
цикла. выведите их на экран и убедитесь, что они определены. например, откуда берется $i? | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 13:32)
| |
<?
$res=mysql_query("SELECT * FROM brand ORDER by Brand_Name");
while ($myrow5 = mysql_fetch_assoc($res))
{
if($myrow5["Brand_ID"]==$Brand_ID)
$chk="selected";
else
$chk="";
echo "<option $chk value=".$myrow5["Brand_ID"].">".$myrow5["Brand_Name"];
}
?>
|
| |
|
|
|
|
|
|
|
для: olejek
(27.03.2008 в 13:44)
| | вот так делаю:
function br_xxx($i)
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
if($myrow5["Brand_ID"]==$i)
$chk="selected";
else
$chk="";
return "<option $chk value=".$myrow5["Brand_ID"].">".$myrow5["Brand_Name"]."</option>";
}
}
|
не получается, не работает условие, выводит просто список и все | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 14:21)
| | Проверьте, чему у Вас равна переменная $i | |
|
|
|
|
|
|
|
для: olejek
(27.03.2008 в 14:23)
| | $i - это айдишник категории из таблицы товаров, сейчас выводит только первую запись и все
вот если делаю так
function br_xxx()
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
if($myrow5["Brand_ID"]=="1")
$chk="selected";
else
$chk="";
return "<option value=".$myrow5["Brand_ID"]." ".$chk.">".$myrow5["Brand_Name"]."</option>";
}
}
|
выводит первую запись категорий и делает ее активной
<option value=1 selected>Acer</option>
а если скажем ставлю 10
function br_xxx()
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
if($myrow5["Brand_ID"]=="20")
$chk="selected";
else
$chk="";
return "<option value=".$myrow5["Brand_ID"]." ".$chk.">".$myrow5["Brand_Name"]."</option>";
}
}
|
выводит первую, но уже не активную <option value=1 >Acer</option> | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 14:45)
| | Вы понимаете смысл этой функции?!
<?
function br_xxx()
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
if($myrow5["Brand_ID"]=="20")
$chk="selected";
else
$chk="";
return "<option value=".$myrow5["Brand_ID"]." ".$chk.">".$myrow5["Brand_Name"]."</option>";
}
}
?>
|
Каждый раз вызывая ее вы возвращаете только первую строку запроса!
Вместо return, напишите echo | |
|
|
|
|
|
|
|
для: olejek
(27.03.2008 в 14:55)
| | когда я вместо return, пишу echo у меня в начале документа, где описана функция, выводит столько раз перечень названий $myrow5["Brand_Name"] сколько полей в нижнем цикле, то есть у меня сверху докупента стоит
function br_xxx($i)
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
if($myrow5["Brand_ID"]==$i)
$chk="selected";
else
$chk="";
echo "<option value=".$myrow5["Brand_ID"]." ".$chk.">".$myrow5["Brand_Name"]."</option>";
}
}
|
снизу идет запрос товаров в цикле while , и вставляется функция следующим образом
<select name=\"Produce_Brand_ID\"><option value=\"0\"></option>".br_xxx($myrow2["Produce_Brand_ID"])."</select>
|
то есть задача в нижнем цикле таблиц перечня продукции в поле выбора select вывести всех производителей, но для каждого товара чтобы был активный только тот, который относится к данному товару, связь по айдишникам Brand_ID - айдишник производителя в таблице производителей и Produce_Brand_ID айдишник производителя в группе товаров | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 15:07)
| | Приведите весь код (если он не очень большой)
А то понять что такое "нижний цикл таблиц перечня продукции" трудно! | |
|
|
|
|
|
|
|
для: olejek
(27.03.2008 в 15:18)
| | шас поковыряю, смотрю вроде цикл работает, но выводит не там где нужно | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 15:19)
| | встраивание функции происходит так
$result=mysql_query("SELECT * FROM produce WHERE Produce_Shop_ID='$id' ORDER BY Produce_ID DESC")
while ($myrow2 = mysql_fetch_assoc($result))
{
echo <form><select name=\"Produce_Brand_ID\"><option value=\"0\"></option>".br_xxx($myrow2["Produce_Brand_ID"])."</select></form>
|
}
то есть функция работает, но вывод идет почему то за тегами form
<option value=1 >Acer</option><option value=19 >Adidas</option> ... ... ... ...
то есть такое впечетление по получаемому результату, что я функцию выдвинул за пределы, то есть если бы это было записано так
echo <form><select name=\"Produce_Brand_ID\"><option value=\"0\"></option></select></form>".br_xxx($myrow2["Produce_Brand_ID"])."
|
вначале выдает пустую форму select а за тегом </form> в самом конце начинает выплевывать все <option value=1 >Acer</option><option value=19 >Adidas</option> ... ... ... ... | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 15:35)
| | Да приведите Вы весь код (даже если он большой:) | |
|
|
|
|
|
|
|
для: olejek
(27.03.2008 в 15:37)
| | описываю эту функцию
function br_xxx($i)
{
$res_s=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($myrow5 = mysql_fetch_assoc($res_s))
{
if($myrow5["Brand_ID"]==$i)
$chk="selected";
else
$chk="";
echo "<option value=".$myrow5["Brand_ID"]
." ".$chk.">".$myrow5["Brand_Name"]."</option>";
}
}
|
вывожу запрос из базы данных товаров для редактирования
$result=mysql_query("SELECT * FROM produce WHERE
Produce_Shop_ID='$id' ORDER BY Produce_ID DESC") or
die("SQL ERROR SELECT");
while ($myrow2 = mysql_fetch_assoc($result))
{
echo "<form id=\"f1\" name=\"f1\" method=\"POST\"
action=\"catalog_edit_produce.php\"
enctype=\"multipart/form-data\">
<tr valign=top>
<td class=ind_value><b>".$myrow2["Produce_ID"]."</b>
<input type=\"hidden\" name=\"id\" value=\"".$id."\">
<input type=\"hidden\" name=\"Produce_ID\"
value=\"".$myrow2["Produce_ID"]."\"></td>
<td class=ind_value width=85><img src=\"/__prod/".
$myrow2["Produce_ID"]."m.jpg\" width=85
border=0><br><br><input class=\"admin_b\" type=\"file\"
name=\"attach\" size=\"10\"/><br><br><input
class=\"admin_b\" type=\"submit\" name=\"delete_pic\"
value=\"Удалить Маленькую\"></td>
<td class=ind_value width=85><a href=\"/__prod/".
$myrow2["Produce_ID"].".jpg\" target=\"_blank\">
<img src=\"/__prod/".$myrow2["Produce_ID"].".jpg\"
width=85 border=0></a><br><br><input class=\"admin_b\"
type=\"file\" name=\"attach_b\" size=\"10\"/
><br><br><input class=\"admin_b\" type=\"submit\"
name=\"delete_big\" value=\"Удалить Большую\"></td>
<td valign=top class=ind_value>
<select name=\"Produce_Brand_ID\"><option value=\"0\">
</option>".br_xxx($myrow2["Produce_Brand_ID"])."</select>
Бренд:
или:<br>".
br_id_sel($myrow2["Produce_Brand_ID"]).$Var1.
"</select><input type=\"text\" name=\"Produce_Brand_Name\"
maxlength=\"200\" size=\"30\"
value=\"".br_name_sel($myrow2["Produce_Brand_ID"],
$myrow2["Produce_Brand_Name"])."\"><br>
Название/Модель:<br><textarea name=\"Produce_Name\"
cols=\"50\" rows=\"2\">".$myrow2["Produce_Name"].
"</textarea><br><font color=FF0000>Новая цена (грн):
</font>
Старая цена (грн):<br><input type=\"text\"
name=\"Produce_New\" value=\"".$myrow2["Produce_New"]."\"
maxlength=\"20\" size=\"20\">
<input type=\"text\" name=\"Produce_Old\" value=\"".$myrow2["Produce_Old"]."\" maxlength=\"20\"
size=\"20\"><br>Ссылка:<br><input type=\"text\"
name=\"Produce_Http\" value=\"".$myrow2["Produce_Http"]."\"
maxlength=\"200\" size=\"53\"></td>
<td valign=top class=ind_value>Описание:<br><textarea
name=\"Produce_Note\" cols=\"70\"
rows=\"10\">".$myrow2["Produce_Note"]."</textarea></td>
<td valign=top class=ind_value>
с <input type=\"text\" name=\"Produce_Start\"
maxlength=\"10\" size=\"11\"
value=\"".$myrow2["Produce_Start"]."\"> по
<input type=\"text\" name=\"Produce_Stop\" maxlength=\"10\"
size=\"11\" value=\"".$myrow2["Produce_Stop"]."\">
<br>Категория 1:<br>".sel_cc($myrow2["Produce_Category"],
"Produce_Category").$Var."</select><br>Категория
2:<br>".sel_cc($myrow2["Produce_Category2"],"Produce_Category2")
.$Var."</select><br>
Вид подачи:<br>".prod_type($myrow2["Produce_Type"])."<br>
Вкл/Выкл: <input type=\"checkbox\" name=\"Produce_On_Off\" value=\"1\"".che($myrow2["Produce_On_Off"])."><br><br>Изменено: <b>".date("d-m-Y", strtotime($myrow2["Produce_Edit"]))."</b></td>
<td class=ind_value>
<input class=\"admin_b\" type=\"submit\" name=\"delete\" value=\"Удалить\"><br><br>
<input class=\"admin_b\" type=\"submit\" name=\"edit_pub\" value=\"Править\"></td>
</tr></form>";
}
|
| |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 15:43)
| | sel_cc таже самая проблема, вот только могу сделать работает по другому принципу, вначале выводится активная, потом пустое место, а потом все остальные для замены, но так не удобно
$res1_s=mysql_query("SELECT * FROM category ORDER by Category_Name") or die("SQL ERROR 1");
while ($myrow = mysql_fetch_assoc($res1_s))
{
$Var.= "<option value=".$myrow["Category_ID"].">".$myrow["Category_Name"]."</option>";
}
function sel_cc($n,$p)
{
$resn=mysql_query("SELECT * FROM category WHERE Category_ID=$n") or die("SQL ERROR 2ss");
$rown=mysql_fetch_assoc($resn);
return "<select name=".$p."><option value=".$rown["Category_ID"].">".$rown["Category_Name"]."</option><option value=\"0\"></option>";
}
|
| |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 15:47)
| | Честно говоря, трудно разобраться, очень запутанный код.
Вложите чтоли дамп базы данных для полного счастья. | |
|
|
|
|
|
|
|
для: olejek
(27.03.2008 в 16:03)
| | а при чем тут база?
так как я раньше делал - все работало, но не удобно, а сейчас результат выполнения функции который должен быть в одном месте, почемуто появляется в другом, хотя предложенный вами цикл с проверкой работает | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 16:22)
| | Я же не могу проверить работоспособность кода у себя без базы данных. | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 16:22)
| | УжОс какой-то...
smarty:
{html_options values=$array_with_categories output=$array_with_cat_names selected=$cat_id} | |
|
|
|
|
|
|
|
для: mtxd
(27.03.2008 в 17:13)
| | фух.............
заработало!!!!
спасибо!!!
то я вообще с ХТМЛ кодом не так намутил .... вот и глюки были ))) | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 17:18)
| | вот функция
function br_id_sel($i)
{
$resns=mysql_query("SELECT * FROM brand ORDER by Brand_Name") or die("SQL ERROR 1");
while ($rown1 = mysql_fetch_assoc($resns))
{
if($rown1["Brand_ID"]==$i)
$chk="selected";
else
$chk="";
echo "<option value=".$rown1["Brand_ID"]." ".$chk.">".$rown1["Brand_Name"]."</option>";
}
}
|
а вот так я встроил как работает
.................<select name=\"Produce_Brand_ID\"><option value=\"0\"></option>";
echo br_id_sel($myrow2["Produce_Brand_ID"]);
echo "</select><input type=\"text\" name=\"Produce_Brand_Name\" maxlength.....................
|
а если в одну строку писать
.................<select name=\"Produce_Brand_ID\"><option value=\"0\"></option>".br_id_sel($myrow2["Produce_Brand_ID"])."</select><input type=\"text\" name=\"Produce_Brand_Name\" maxlength.....................
|
то нифига не работает, и я не могу понять почему ????
теоретически ведь разницы никакой нету??? | |
|
|
|
|
|
|
|
для: AN
(27.03.2008 в 17:24)
| | Ты сам не путаешься? Отдели мух от котлет (html от программного кода), потрать день на освоения template engine, и подобные вопросы пропадут сами собой. Смотри пример выше, твоя проблема решается в 3.5 слова. | |
|
|
|