Update не корректно работает (php+Mysql).
--------------------
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'
);
*/
?>
$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
?>
$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....но чаще всего он просто обнуляет поле....что может быть понятия не имею, отчаилсо решил написать...вот
Нууу... попробуй '{$nam}' и проверь, есть ли он вообще
Не понятно, зачем идентификатор продукта надо в инпут ложить... Чтобы его могли изменять? Тогда вы по некорректному условию обновляете... (это вдобавок ко всему...)
попробуйте в первом файле сделать скрытое поле, где будет текущий идентификатор храниться (по кот. будет обновление в бд происходить):
Код:
<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."';");
}
?>
$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"
Еще попробуйте не использовать глобальных переменных, вредно, говорят...
UPDATE `nuke_cart_products` SET `img` = '$pic' WHERE `prodId` = '$nam'