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

Форум MySQL

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

 

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

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

тема: изменение цены товара
 
 автор: alfred   (20.04.2007 в 17:02)   письмо автору
 
 

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

   
 
 автор: coloboc66   (20.04.2007 в 17:44)   письмо автору
 
   для: alfred   (20.04.2007 в 17:02)
 

Значит запрос к базе неправильный.

   
 
 автор: hammet   (20.04.2007 в 17:52)   письмо автору
 
   для: alfred   (20.04.2007 в 17:02)
 

код в студию....

   
 
 автор: alfred   (20.04.2007 в 18:17)   письмо автору
 
   для: hammet   (20.04.2007 в 17:52)
 

пишу коротко. тут я вывожк товары и цену

 while($b=mysql_fetch_row($qwery)){ 
                   echo " 
                    <input type='hidden' name='idp' value='{$b[0]}' />                   
                    <span title='name'>{$b[1]}</span> 
                    <input type='text' name='price' value='{$b[4]}' size='6' /> 
                    } 

а тут сохраня. изменения

$idp1=$_POST["idp"];
     $pr1=$_POST["price"];
    $q=mysql_query("update  products set  price='$pr1' where id='$idp1'");

   
 
 автор: hammet   (20.04.2007 в 18:23)   письмо автору
 
   для: alfred   (20.04.2007 в 18:17)
 

>пишу коротко

напрасно.


Интересно посмотреть где у вас теги <form></form> и что находится между ними

   
 
 автор: hammet   (20.04.2007 в 18:26)   письмо автору
 
   для: hammet   (20.04.2007 в 18:23)
 

рекомендую во время вывода не генерировать форму, а ссылку(ну или кнопку image).

что то типа <a href="delete.php?id={$id}">

   
 
 автор: alfred   (20.04.2007 в 18:47)   письмо автору
 
   для: hammet   (20.04.2007 в 18:26)
 

>рекомендую во время вывода не генерировать форму, а ссылку(ну или кнопку image).
не.. так не подходит - нужно, чтоб таблицей, все товары сразу можно было изменить....
а вот код целиком....

<form method="post" action="overprice.php">
<table style='border:1 solid white; background-color: #999999; color: black;' width='600' align='center'>
<?php
  
// generating a table for variants saving
  
include("mylp.php");
  
$link=mysql_connect($myhost,$mylogin,$mypwd) or die(mysql_error());
  
mysql_select_db("mydb");

  
// geting products id

  
if(isset($_POST["id"])){
             
$rq=mysql_query("select * from products where id_label={$_POST['id']}");

             while(
$b=mysql_fetch_row($rq))
             {
                  echo 
"
                  <tr>
                  <td>
                  <input type='hidden' name='idp' value='
{$b[0]}' /></td>
                  <td align='left'>
                    <span title='Name' style=' font-weight : bold; font-size: 12pt; '>
{$b[1]}<br /> </span>
      </td>
      <td align='right'>&nbsp;</td>

      </tr>

      <tr>
      <td>&nbsp; </td>
      <td>
             <span title='header' style='font-size:10pt; '> 
{$b[2]} </span>
      </td>
      <td><span title='price' style='color:#990000'><b><input type='text' name='price' value='
{$b[4]}' size='6' />  y.e.</b></span></td>
      </tr>


         <tr>
                      <td colspan='4'>
                      <hr align='right' width='98%' size='1' color='#990000' /></td>
                      <td align='left' valign='top'>&nbsp;</td>
         </tr>
         "
;

      }
      echo 
"<tr align='right'><td colspan='3'><input type='submit'  value='Сохранить' /></td></tr>";
  }
  
mysql_close($link);
?>
</table>
</form>

<?php
       
include("mylp.php");

        
$link2=mysql_connect($myhost,$mylogin,$mypwd) or die(mysql_error());
        
mysql_select_db("mydb");

 

       
$idp1=$_POST["idp"];
       
$pr1=$_POST["price"];

         
//change price of product

     
$q=mysql_query("update  products set  price='$pr1' where id='$idp1'");

       if(
mysql_affected_rows()!=0){
              echo 
"Цена в товаре ".$idp1." успешно изменена на ".$pr1." y.e.";
       }
?>

   
 
 автор: Trianon   (20.04.2007 в 19:45)   письмо автору
 
   для: alfred   (20.04.2007 в 18:47)
 

У вас идет попытка сформировать два независимых массива:
idp - идентификаторы продукта
price - цены

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

Чтобы они не терялись - нужно написать теги полей примерно так.

<input type='hidden' name='idp[]' value='{$b[0]}' />
<input type='text' name='price[]' value='{$b[4]}' size='6' />

Тут есть два замечания
1. скрытому полю отдельный столбец html-таблицы не нужен - он вообще места на листе не занимает.
2. массивы всё равно останутся независимыми, и обрабатывать их будет неудобно.
Лучше hidden-поле вообще убрать, а цену сделать индексированной идентификатором продукта:

<input type='text' name='price[{$b[0]}]' value='{$b[4]}' size='6' />


В обработчике придется пробежаться по массиву price и для каждой пары ключ - значение построить и выполнить отдельный sql-запрос update

   
Rambler's Top100
вверх

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