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

Форум MySQL

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

 

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

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

тема: выбор в выпадающем списке из БД
 
 автор: DreadfulS   (31.10.2006 в 10:53)   письмо автору
 
 

требуется выбрать позицию из одной таблицы и наравне с другими опциями отправить это дело в другую таблицу, а вот описать это меню с выбором не получается...


<form action=<?php echo $action?> method=post>
<table>
<tr><td><p class=zag2>дата</td><td><input size=19 class=input type=text name=date value='<?php echo $date?>'></td></tr>
<tr><td><p class=zag2>от кого</td><td><input size=19 class=input type=text name=kto value='<?php echo $kto?>'></td></tr>
<tr><td><p class=zag2>кому</td><td><input size=19 class=input type=text name=komu value='<?php echo $komu?>'></td></tr>
<tr><td><p class=zag2>адрес</td><td><input size=19 class=input type=text name=address value='<?php echo $address?>'></td></tr>
<tr>
  <td><p class=zag2>материал</td>
  <td>
<select class=input type=text name="material"> 
<? 
$query 
mysql_query("SELECT *  
FROM material  
ORDER BY mat ASC"
); 
//дальше ступор

?> 
</select>
</td>
</form>

   
 
 автор: elenaki   (31.10.2006 в 11:06)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 10:53)
 

примерно так (как вам помочь, если вы не указали, какие поля вы выбираете из своей таблицы):


<select name="country" class="input"  style="font-size: 10;">
<? $find_countries_query mysql_query("select * from ".$db_prefix."countries") or die (mysql_error());
        while(
$country mysql_fetch_array($find_countries_query)){
        
$idcountry $country['idcountry'];
        
$countryname $country['name'];
 
?>
<option value="<?=$idcountry;?>"><?=$countryname;?></option>
<?}?>
</select>

   
 
 автор: DreadfulS   (31.10.2006 в 11:44)   письмо автору
 
   для: elenaki   (31.10.2006 в 11:06)
 

спасибо, получилось так:

<?php
  
///////////////////////////////////////////////////


  // Устанавливаем соединение с базой данных
  
require_once("../config.php");

  if(
$title == ""$titlepage=$title "Добавление заявки";
  include 
"../util/topadmin.php";  
  if(!isset(
$button)) $button "Добавить";
  if(!isset(
$action)) $action "addprod.php";
  if(!isset(
$showhide)) $showhide "checked";
  
$date date("Y.m.d");
  
// Если позиция товарной позиции не передана
  // назначаем ей последнюю позицию
  
if(!isset($pos))
  {
    
$query "SELECT MAX(pos) FROM product
              WHERE id_catalog="
.$_GET['id_parent'];
    
$num mysql_query($query);
    if(
$num$pos mysql_result($num,0) + 1;
  }
?>



<form action=<?php echo $action?> method=post>
<table>
<tr><td><p class=zag2>дата</td><td><input size=19 class=input type=text name=date value='<?php echo $date?>'></td></tr>
<tr><td><p class=zag2>от кого</td><td><input size=19 class=input type=text name=kto value='<?php echo $kto?>'></td></tr>
<tr><td><p class=zag2>кому</td><td><input size=19 class=input type=text name=komu value='<?php echo $komu?>'></td></tr>
<tr><td><p class=zag2>адрес</td><td><input size=19 class=input type=text name=address value='<?php echo $address?>'></td></tr>
<tr>
  <td><p class=zag2>материал</td>
  <td>
<select name="material" class="input"  style="font-size: 10;"> 
<? $query mysql_query("SELECT *  
FROM material  
ORDER BY mat ASC"
) or die (mysql_error()); 
        while(
$mat mysql_fetch_array($query)){ 
        
$id_mat $mat['id_mat']; 
        
$material $mat['mat']; 
 
?> 
<option value="<?=$id_mat;?>"><?=$material;?></option> 
<?}?> 
</select>
</tr>
<tr><td><p class=zag2>водило</td><td><input size=19 class=input type=text name=vod value='<?php echo $vod?>'></td></tr>
<tr><td><p class=zag2>примечание</td><td><input size=19 class=input type=text name=note value='<?php echo $note?>'></td></tr>
<tr><td><p class=zag2>Позиция</td><td><input size=3 class=input type=text name=pos value='<?php echo $pos?>'></td></tr>
<tr><td><p class=zag2>Менеджер</td><td><input size=19 class=input type=text name=manager value='<?php echo $manager?>'></td></tr>
<tr><td><p class=zag2>не выполнена</td><td><input type=checkbox name=hide <?php echo $showhide?>></td></tr>
<tr><td></td><td><input class=button type=submit value=<?php echo $button?>></td></tr>
<input type=hidden name=id_catalog value=<?php echo $_GET['id_catalog']; ?>>
<input type=hidden name=id_product value=<?php echo $_GET['id_product']; ?>>
</table>
</form>


файл записи в БД


<?php
  
///////////////////////////////////////////////////

  // Осуществляем соединение с базой данных
  
require_once("../config.php");
  
// Проверим - достаточно ли информации для занесения в базу данных
  
if(!isset($_POST['address'])) links($_POST['id_catalog'], "Отсутствует адрес");
  if(!isset(
$_POST['komu'])) links($_POST['id_catalog'], "Не введено кому");
  if(!isset(
$_POST['kto'])) links($_POST['id_catalog'], "Не введено от кого");  
  if(!isset(
$_POST['price'])) links($_POST['id_catalog'], "Не введена цена");
  if(!isset(
$_POST['pricemeter'])) links($_POST['id_catalog'], "Не введено количество");
  if(!isset(
$_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция заявки");
  if(!isset(
$_POST['manager'])) links($_POST['id_catalog'], "ВВЕДИ МЕНЕДЖЕРА, БЫРА!!!");
  
// Выясняем скрыта товарная позиция или нет
  
if($_POST['hide'] == "on"$showhide 'show';
  else 
$showhide 'hide';
  
// Заменяем одинарные кавычки
  
$_POST['note'] = str_replace("'","`",$_POST['note']);
  
$_POST['address'] = str_replace("'","`",$_POST['address']);
  
$_POST['komu'] = str_replace("'","`",$_POST['komu']);
  
$_POST['vod'] = str_replace("'","`",$_POST['vod']);
  
$_POST['kto'] = str_replace("'","`",$_POST['kto']);
  
$_POST['manager'] = str_replace("'","`",$_POST['manager']);
  
// Формируем запрос
  
$query "INSERT INTO product VALUES (
            NULL,
            '"
.$_POST['vod']."',
            '"
.$_POST['date']."',
            '"
.$_POST['note']."',
            '"
.$_POST['address']."',
            '"
.$_POST['kto']."',
            '"
.$_POST['komu']."',
            '"
.$_POST['material']."',
            "
.$_POST['price'].",
            "
.$_POST['pricemeter'].",
            '"
.$_POST['currency']."',
            '
$showhide',
            "
.$_POST['pos'].",
            "
.$_POST['manager'].",
            "
.$_POST['id_catalog'].")";
  if(
mysql_query($query)) {
    echo 
"<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent="
.$_POST['id_catalog']."'>
          </HEAD></HTML>"
;
          
  } else 
puterror("Ошибка при добавлении заявки");
  function 
links($id_catalog,$msg)
  {
    echo 
"<p>".$msg."</p>";
    echo 
"<p><a href=# onClick='history.back()'>Вернуться к правке заявки</a></p>";
    echo 
"<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога заявок</a></p>";
    exit();
  }
?>



но проблема осталась, из формы пишется всё кроме этой выбранной позиции

   
 
 автор: elenaki   (31.10.2006 в 11:59)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 11:44)
 

когда какая-то переменная не пишется, полезно вывести ее на экран и посмотреть, что в ней.
в самом начале файла-обработчика поставьте это:

echo $_POST["material"]; exit;


и еще. дайте переменной, которая обозначает материал, выбранный по запросу, другое имя (у вас и селект называется material и переменная). назовите ее, например, $mat_q - будете знать, что она из query:


$mat_q = $mat['mat'];  

   
 
 автор: DreadfulS   (31.10.2006 в 12:39)   письмо автору
 
   для: elenaki   (31.10.2006 в 11:59)
 

спасибо, всё проходит, теперь только проблема с обработчиком, постоянно выдаёт ошибку, хотя в таком варианте всё было ок

    <select class=input type=text name=material>
     <option value='mat1' <?php if($currency == 'mat1') echo "selected"?>>материал1
     <option value='mat2' <?php if($currency == 'mat2') echo "selected"?>>материал2
    </select>


ведь структура запроса и записи не изменилась, изменилась только форма отправки данных, и данные отправляются, в чём может быть проблема?

   
 
 автор: elenaki   (31.10.2006 в 12:46)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 12:39)
 

какую ошибку выдает? если вы посмотрите код вашей формы в браузере (view source), что
видите? чем отличается от вышеприведенного?

PS type=text - зачем это в селекте? и почему не закрываете опции </option>?

   
 
 автор: DreadfulS   (31.10.2006 в 13:02)   письмо автору
 
   для: elenaki   (31.10.2006 в 12:46)
 

всмысле в чём разница отображения новой формы и той что была? если так то визуальной разницы нет

   
 
 автор: elenaki   (31.10.2006 в 13:12)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 13:02)
 

проблема с обработчиком, постоянно выдаёт ошибку, хотя в таком варианте всё было ок
.......................
визуальной разницы нет
......................


что за ошибку выдает обработчик? разницы и не должно быть - для этого и сравнивали. надо, чтоб код, построенный PHP, не отличался от написанного без использования циклов, запросов и т.д

   
 
 автор: DreadfulS   (31.10.2006 в 13:49)   письмо автору
 
   для: elenaki   (31.10.2006 в 13:12)
 

ошибка добавления - Unknown column 'Олег' in 'field list'
"Олег" это одно из обязательных полей для добавления в БД, ранее работала без сбоев, обработчик вообще остался без изменений, изменился только способ выбора одной из опций, это могло как то повлиять?

   
 
 автор: elenaki   (31.10.2006 в 13:58)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 13:49)
 

имя поля по-русски? первый раз такое вижу...

   
 
 автор: DreadfulS   (31.10.2006 в 14:02)   письмо автору
 
   для: elenaki   (31.10.2006 в 13:58)
 

это не поле, это то что я ввожу в форме, а поле там как раз называется "manager"
<tr><td><p class=zag2>Менеджер</td><td><input size=19 class=input type=text name=manager value='<?php echo $manager?>'></td></tr>


до изменения выпадающего списка для выбора позиции, работало безупречно

   
 
 автор: elenaki   (31.10.2006 в 14:08)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 14:02)
 

вот и ошибка! кавычки нужны для поля manager:

$query = "INSERT INTO product VALUES ( 
            NULL, 
            '".$_POST['vod']."', 
            '".$_POST['date']."', 
            '".$_POST['note']."', 
            '".$_POST['address']."', 
            '".$_POST['kto']."', 
            '".$_POST['komu']."', 
            '".$_POST['material']."', 
            ".$_POST['price'].", 
            ".$_POST['pricemeter'].", 
            '".$_POST['currency']."', 
            '$showhide', 
            ".$_POST['pos'].", 
            '".$_POST['manager']."', 
            ".$_POST['id_catalog'].")"; 

   
 
 автор: DreadfulS   (31.10.2006 в 14:35)   письмо автору
 
   для: elenaki   (31.10.2006 в 14:08)
 

угу... действительно, но раньше работало и без них) спасибо большое, буду пробывать.

   
 
 автор: DreadfulS   (31.10.2006 в 18:32)   письмо автору
 
   для: DreadfulS   (31.10.2006 в 14:35)
 

снова поднимаю данную тему, возникла проблема при правке данных записаных в БД, форма для правки используется та же что и для записи новых данных, по аналогии с каталогом продукции из книги, дело в том что данные выбираемые из списка при правке становятся по умолчанию, а не те что были записаны в БД, как это разрешить?

   
Rambler's Top100
вверх

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