Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Update не корректно работает (php+Mysql).

3.6K
05 декабря 2008 года
CrazyTimon
125 / / 13.02.2006
Вообщем проблема такая:есть два файла пхп файла: в одном вводим данные, данные постом приходят во второй файл(через масив) и добавляются(изменяются) в таблице...вот собственно сам код

--------------------
index.php
Код:
<?php
$dblocation = "localhost"; // Имя сервера
$dbuser = "root";          // Имя пользователя
$dbpasswd = "";            // Пароль
$dbname = "php-nuke";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
$asdf=mysql_select_db($dbname, $dbcnx);
$MyResult = mysql_query("select * from nuke_cart_products order by prodID;");
echo"<form action='index2.php' method='post'>";
while($usl = mysql_fetch_array($MyResult))
{
  $pname = $usl['prodID'];
  $s_name = $usl['prodInfo'];
     {
        echo"
            <table>
                <tr>
                    <td>Название</td>
                    <td><input type='text' name='namer[]' value='$pname' size='60' maxlength='255'></td>
                </tr>
                <tr>
                    <td>SecondNmae</td>
                    <td><input type='text' name='sname[]' value='$s_name' size='60' maxlength='255'></td>
                </tr>
                <tr>
                    <td>Картинка</td>
                    <td><input type='file' name='picture[]' size=12></td>
                </tr>
            </table><br><br>"
; 
    }

       
}
echo"<input type='submit' value='Изменить'></form>";
/*
INSERT INTO `nuke_cart_products` ( `prodID` , `prodCode` , `category_id` , `prodName` , `prodSInfo` , `prodInfo` , `prodXInfo` , `keywords` , `prodModel` , `brand_id` , `prodCounter` , `prodCost` , `msrp_price` , `wholesale_price` , `shipcost` , `shipweight` , `shipping_ets` , `handlingcost` , `tax_class_id` , `promoActive` , `promoTitle` , `promoInfo` , `promoCost` , `promoStartDate` , `promoExpireDate` , `stockActive` , `stockQuantity` , `productTemplate` , `date` , `pthumb` , `product_availability` , `prodActive` )
VALUES (
'', '', '31', 'Моцарелло', '', 'Сыр моцарела, помидоры, пицца соус', '510 гр.', '', '', '0', '0', '280.00', '0.00', '0.00', '0.00', '0.0000', '0', '0.00', '0', '0', '', '', '0.00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '0', '0', '', NULL , '', '0', '1'
);
*/

?>


--------------------
index2.php
Код:
<?php
$dblocation = "localhost"; // Имя сервера
$dbuser = "root";          // Имя пользователя
$dbpasswd = "";            // Пароль
$dbname = "php-nuke";
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
$asdf=mysql_select_db($dbname, $dbcnx);
$MyResult = mysql_query("select * from nuke_cart_products order by prodID;");
$i=0;
while($usl = mysql_fetch_array($MyResult))
{
     $pic = $picture[$i];
     $nam = $namer[$i];
     $ath = mysql_query("UPDATE `nuke_cart_products` SET `img` = '$pic' WHERE `prodName` = '$nam';");
     echo $i." : ".$picture[$i]." = ".$name[$i].$ath."<br>";
     echo mysql_affected_rows();
     $i++;
     }
     
 //prodSInfo
?>

Собственно проблема в том что Update работает как хочет!!!захотел обновил(что редкость),а если и обновил то только 3-5 полей из 200....но чаще всего он просто обнуляет поле....что может быть понятия не имею, отчаилсо решил написать...вот
366
05 декабря 2008 года
int
668 / / 30.03.2005
Нууу... попробуй '{$nam}' и проверь, есть ли он вообще
9.0K
05 декабря 2008 года
t-34
129 / / 30.11.2007
смотрю на код и весь его хочется того.... плохой код...
Не понятно, зачем идентификатор продукта надо в инпут ложить... Чтобы его могли изменять? Тогда вы по некорректному условию обновляете... (это вдобавок ко всему...)
попробуйте в первом файле сделать скрытое поле, где будет текущий идентификатор храниться (по кот. будет обновление в бд происходить):
 
Код:
<input type='hidden' name='id[]' value='$pname' />

а во втором файле получится что-то типа:
Код:
<?php
$dblocation = "localhost"; // Имя сервера
$dbuser = "root";          // Имя пользователя
$dbpasswd = "";            // Пароль
$dbname = "php-nuke";
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
$asdf=mysql_select_db($dbname, $dbcnx);
$id = $_REQUEST['id'];
$picture = $_REQUEST['picture'];
$namer = $_REQUEST['namer'];
for($i = 0; $i<count($id); $i++)
{
     $pic = $picture[$i];
     $nam = $id[$i];
     $ath = mysql_query("UPDATE `nuke_cart_products` SET `img` = '".$pic."' WHERE `prodID` = '".$nam."';");
 }
?>

Но это без учета того, что вы загружаете файл.... Вы знаете, как файлы загружать на сервер??? Если вы именно так загружаете, то увы... работать не будет... Вам тогда сюда http://ua.php.net/manual/ru/features.file-upload.php
и не забудьте добавить в первом файле в заголовок формы
 
Код:
enctype="multipart/form-data"

Еще попробуйте не использовать глобальных переменных, вредно, говорят...
24K
05 декабря 2008 года
ostgals
53 / / 27.08.2007
UPDATE `nuke_cart_products` SET `img` = '$pic' WHERE `prodId` = '$nam'
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог