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

Форум PHP

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

 

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

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

тема: Работа с динамическими переменными.(Подскажите логику)
 
 автор: Eser   (06.05.2010 в 23:11)   письмо автору
 
 

Я так сказать новичок. То что меня интересует в книжках не нашел.
Подскажите пожалуйста логику или хотя б в каком направлении думать.
В общем сам вопрос:
Есть админка в которой я создаю некие справочники(ну например справочник города: в нем соответственно атирибуты:Москва,Питер и т.д). все это пишеться в БД, а также указываеться форма отображения этого справочника на странице пользователя. Например справочнику города наиболее соответствует отображение его списком(т.е в БД пишу что это элемент <select>). Ну и т.д есть еще элементы <input type=text>,<teaxtarea>. Все эти справочники в конечном счете отображаются на странице пользователя. Пользователь соответственно выбирает и вбивает нужные данные данные. И тут у меня вопрос как всем этим выведенным на странице пользователя (<select><textarea> и <input type=text>) элементам дать уникальные имена чтоб можно было через условие пропустить и в БД записать? Они же динамически появляются.

  Ответить  
 
 автор: neadekvat   (06.05.2010 в 23:16)   письмо автору
 
   для: Eser   (06.05.2010 в 23:11)
 

Какие у вас первичные ключи в бд?
Если суррогатные - то все очень просто, в селектах в value указываете id соответствующего города в бд.

  Ответить  
 
 автор: Eser   (06.05.2010 в 23:27)   письмо автору
 
   для: neadekvat   (06.05.2010 в 23:16)
 

т.е
Я правильно понял:
<select name=ID(Справочник Город)>
<option value=ID(Значение)></option>
</select>
<input type=text name=ID(Справочник Серийный номер)>
И тд.

  Ответить  
 
 автор: neadekvat   (06.05.2010 в 23:36)   письмо автору
 
   для: Eser   (06.05.2010 в 23:27)
 

Если вместо ID(русские_буквы) будут стоять числа - да)
Вы то знаете, что там храните и как выводите, а мне то по чем знать? (я тупо не понимаю, по какому принципу у вас информация выводится и причем там, например, textarea)
Но к примеру если в бд города хранятся так:
id | name
1 | Санкт-Петербург
2 | Пушкино
и т.д., то выводится на страницу будет соответственно
<select ...>
<option value=1>Санкт-Петербург
<option value=2>Пушкино

Если вы так и поняли - оч хорошо :)

  Ответить  
 
 автор: Eser   (07.05.2010 в 00:21)   письмо автору
 
   для: neadekvat   (06.05.2010 в 23:36)
 

Да все верно. Пока получаеться.
Последний вопрос, а дальше все понятно.
Вывел я на страницу пользователя с помощью цикла два справочника:Город(Москва,Питер) и Модель изделия (A,В).
Логика такая: лезем в БД смотрим есть ли тама справочники, если есть то определяем что это <select> или какая другая форма вывода. И через for вытягиваем данные о справочнике и его атрибутах на страницу пользователя.
А дальше например нужно вывести на страницу то что я выбрал в этих справочниках.
Но выводиться данные только из последнего добавленного справочника.
Пока был только один справочник данные о нем нормально выводились, добавил второй справочник из первого данные перестали выводиться но стали только из второго. Ну т.д сколько бы я не создавал справочников данные выводяться всегда только из последнего.

Вот так сказать кусок кода что за вывод отвечает:
$select=mysql_query("select * from record_settings");
for($i=0;$i<mysql_num_rows($select);$i++)
{
$result=mysql_fetch_array($select);
//Форма отображения на странице
$select_view_form=mysql_query("select view_form from objects where name='$result[name]';");
$result_view_form=mysql_fetch_array($select_view_form);
if($result_view_form[view_form]=='list')
{
$select_atribut=mysql_query("select atribut_name from objects_atributes where object_name='$result[name]';");

echo ("<td class=td>$result[name]</td><td><select name='$result[name]'><option>-выбирите-</option>");
for($j=0;$j<mysql_num_rows($select_atribut);$j++)
{
$result_atribut_name=mysql_fetch_array($select_atribut);
echo ("<option value='$result_atribut_name[atribut_name]'>$result_atribut_name[atribut_name]</option>");
}
echo ("
</select></td><tr>");
}
}
echo $_POST[$result[name]];

  Ответить  
 
 автор: neadekvat   (07.05.2010 в 00:54)   письмо автору
 
   для: Eser   (07.05.2010 в 00:21)
 

Добавляйте <?php чтобы была подсветка кода.

Не надо for при вытаскивании записей из бд. Ваш код неочевидный, непонятно, где именно выводятся справочники. Тут нужно добавить две вещи: наглядные названия переменных, таблиц и т.д. и комментарии к коду.

<?php
$query 
mysql_query("SELECT ...");
while(
$array mysql_fetch_assoc($query)) {
// доставать из базы следует так
}


Не знаю, понял ли я исходные ваши мысли..
Допустим, есть три справочника - А, Б и В. И я на какой-то страницы выбираю просмотр справочника Б, а ваш скрипт выводит В и это вызывает затруднение, так?
Если так, то. В бд у справочников также должны быть свои id. Соответсвенно, в скрипт, который выводит подробности справочника, надо передавать id этого справочника и в условие выборки добавить WHERE id = $id.
Ну, примерно так. Думаю, что вы сможете понять, о чем я.

  Ответить  
 
 автор: Eser   (07.05.2010 в 01:24)   письмо автору
 
   для: neadekvat   (07.05.2010 в 00:54)
 

Уже поздно завтра напишу подробно с комментами.
ID есть у названия справочника и ID есть у каждого из атрибутов.
Да затруднения вызывает то что:
На странице пользователя
Выводиться :
<select name=1>Город:
    <option value=1>Москва
    <option value=2>Питер
</select>
<select name=1>Модель:
    <option value=1>A
    <option value=2>B
</select>

В цикле соответственно.
<?php
while( )
{
Выводим название справочника
  
while( )
  {
  
Выводим атрибуты справочника
  
}
}
Вывод на экран то что я выбрал
?>

Мне как пользователю нужно выбрать в каждом списке то что меня интересует ну и вывести на экран после нажатия кнопки Сохранить,то что я выбрал.
Т.е выбрал Город:Москва и Модель:В, тыкнул на кнопку сохранить и должно отобразиться на странице: Пользователь выбрал Город:Москва и Модель:В.
У меня же отображается только последний добавленный справочник т.е Модель:В
Если добавлю еще справочники то на странице будет отображаться только последний добавленный справочник ну на пример: Цвет:Синий ну и т.д.

  Ответить  
 
 автор: oliss   (07.05.2010 в 04:03)   письмо автору
 
   для: Eser   (07.05.2010 в 01:24)
 

Называется "связанные списки" .

  Ответить  
 
 автор: neadekvat   (07.05.2010 в 07:39)   письмо автору
 
   для: Eser   (07.05.2010 в 01:24)
 

А че это у вас имена select'ов одинаковые?

<select name=city>Город: 
    <option value=1>Москва 
    <option value=2>Питер 
</select> 
<select name=model>Модель: 
    <option value=1>A 
    <option value=2>B 
</select>


на странице, где выводится подробная информация в $_POST['city'] будет id города, а в $_POST['model'] id модели.
Затем обрабатываете эти данные (т.к. они числовые, то intval() ) и примерно такой запрос:
SELECT * FROM tbl WHERE city_id = $city AND model_id = $model
но по сути, конечно, было бы хорошо увидить дамп вашей БД - иначе как на кофейной гуще тут гадаю

  Ответить  
 
 автор: sim5   (07.05.2010 в 07:44)   письмо автору
 
   для: neadekvat   (07.05.2010 в 07:39)
 

>А че это у вас имена select'ов одинаковые?

Они не просто одинаковые - они недопустимые!

  Ответить  
 
 автор: neadekvat   (07.05.2010 в 08:11)   письмо автору
 
   для: sim5   (07.05.2010 в 07:44)
 

И то правда, как их вообще браузер интерпритирует, интересно о,О

  Ответить  
 
 автор: sim5   (07.05.2010 в 08:58)   письмо автору
 
   для: neadekvat   (07.05.2010 в 08:11)
 

Никак - имена должны начинаться с буквы, иначе проблемы на клиенте обеспечены.

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

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