|
|
|
| доброго времени суток!
помогите с такой темой:
выводится список из файла (тут все нормально), потом этот список нужно отправить в обработчик - причем так чтобы можно было внести изменения в ВЕСЬ список и весь за один раз отправить.
у меня только получается отправлять построчно.(запарился уже)
вот кусок кода:
while ($i < count($tovar)){
list($n1,$n2,$n3,$n4,$n5,$n6,$n7,$n8,$n9,$n10,$n11,$n12,$n13,$n14) = split("\t",$tovar[$i]);
$n_6 = str_replace(",",".","$n6");
$coeff=1;
$cena_to_be=$coeff*$n_6;
$i++;
echo "<form action='reg.php' method='post'><input name='id' type='text' value='".$n1."' size='5'>
<input name='brand' type='text' value='".$n2."' size='15'>
<input name='kode' type='text' value='".$n4."' size='8'>
<input name='cena' type='text' value='".$n_6."' size='5'>
<input name='model' type='text' value='".$n7."' size='8'>
<input name='name' type='text' value='".$n9."' size='25'>
Коеффициент :<input name='coeff' type='text' value='1' size='3'>
Желаемая цена:<input name='cena_zelan' type='text' value='' size='5'></form>";
echo "<input type='submit' name='button' value='GO'></form>";
|
| |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 21:39)
| | Вы формируете кучу форм с одной строкой.
на сервер уйдет лишь одна форма.
Формируйте одну форму с кучей строк. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 21:57)
| | пробовал вот так:
echo "<form action='reg.php' method='post'>";
while ($i < count($tovar)){
list($n1,$n2,$n3,$n4,$n5,$n6,$n7,$n8,$n9,$n10,$n11,$n12,$n13,$n14) = split("\t",$tovar[$i]);
$n_6 = str_replace(",",".","$n6");
$coeff=1;
$cena_to_be=$coeff*$n_6;
$i++;
echo "<input name='id' type='text' value='".$n1."' size='5'>
<input name='brand' type='text' value='".$n2."' size='15'>
<input name='kode' type='text' value='".$n4."' size='8'>
<input name='cena' type='text' value='".$n_6."' size='5'>
<input name='model' type='text' value='".$n7."' size='8'>
<input name='name' type='text' value='".$n9."' size='25'>
Коеффициент :<input name='coeff' type='text' value='1' size='3'>
Желаемая цена:<input name='cena_zelan' type='text' value='' size='5'></form>";
$price_in="INSERT INTO price VALUES ('".$n1."','".$n2."','".$n4."','".$n_6."','".$n7."','".$n9."','".$coeff."','".$cena_zelan."','".$coeff_back."','".$cena_to_be."')" or die ("данные не сохранены!");
mysql_query($price_in);
}
echo "<input type='submit' name='button' value='GO'></form>";
|
ваще ничего не уходит! | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:02)
| | теперь посмотрите, где вы закрываете форму. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 22:13)
| | да это понятно! это я только что тупикнул. а вообще все делаю по -правилам вроде бы - все открытое закрываю. но происходит следующее - все нормально выводиться и кнопочка одна внизу но тыцкаю на кнопку и ничего вообще не происходит. хоть бы ошибку какую, гад давал, так нет вообще молчит как рыба об лед......... все мозги последние уже сломал | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:24)
| | так если кнопка у Вас за пределами открытой формы - так и должно быть.
А ошибок html-кода браузеры не выдают принципиально. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 22:27)
| | - | |
|
|
|
|
|
|
|
для: AcidTrash
(22.03.2009 в 22:33)
| | так кнопка-то не за пределами! вот же:
echo "<form action='reg.php' method='post'>";
while ($i < count($tovar)){
list($n1,$n2,$n3,$n4,$n5,$n6,$n7,$n8,$n9,$n10,$n11,$n12,$n13,$n14) = split("\t",$tovar[$i]);
$n_6 = str_replace(",",".","$n6");
$coeff=1;
$cena_to_be=$coeff*$n_6;
$i++;
echo "<input name='id' type='text' value='".$n1."' size='5'>
<input name='brand' type='text' value='".$n2."' size='15'>
<input name='kode' type='text' value='".$n4."' size='8'>
<input name='cena' type='text' value='".$n_6."' size='5'>
<input name='model' type='text' value='".$n7."' size='8'>
<input name='name' type='text' value='".$n9."' size='25'>
Коеффициент :<input name='coeff' type='text' value='1' size='3'>
Желаемая цена:<input name='cena_zelan' type='text' value='' size='5'>"
$price_in="INSERT INTO price VALUES ('".$n1."','".$n2."','".$n4."','".$n_6."','".$n7."','".$n9."','".$coeff."','".$cena_zelan."','".$coeff_back."','".$cena_to_be."')" or die ("данные не сохранены!");
mysql_query($price_in);
}
echo "<input type='submit' name='button' value='GO'></form>";
|
| |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:37)
| | Желаемая цена:<input name='cena_zelan' type='text' value='' size='5'></form>";
А это что? Выделено жирным. | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:37)
| | точка с запятой не стоит после echo.
а что в цикле формирования текста формы делает оператор INSERT?
Он должен быть совсем в другом цикле - в цикле обработки массива $_POST . Возможно даже в другом файле. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 22:45)
| | с insert все нормально - в обработчике стоит update. Вы мне лучше с формой подскажите что ДЕЛАТЬ а то я уже с ума схожу | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:48)
| |
echo "
<input name='brand[$n1]' type='text' value='$n2' size='15'>
<input name='kode[$n1]' type='text' value='$n4' size='8'>
...
Желаемая цена:<input name='cena_zelan[$n1]' type='text' value='' size='5'>";
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 22:54)
| | а в обработчик так писать потом?:
id=$_POST['id[$n1]'];
$brand=$_POST['brand[$n1]'];
$kode=$_POST['kode[$n1]'];
|
| |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:58)
| |
foreach($_POST['brand'] as $id => $brand)
{
$kode = $_POST['kode'][$id];
...
$cena_zelan = $_POST['cena_zelan'][$id];
...
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 23:01)
| | вот мой обработчик (кстати вообще перестал работать): чую сердцем что-то не так
<?php
include('info.inc.php');
$connect=mysql_connect($host, $account, $password) or die ('нет соединения');
$db=mysql_select_db($dbname, $connect);
foreach($_POST['id'] as $id => $id)
{
$brand = $_POST['brand'][$id];
$kode = $_POST['kode'][$id];
$cena=$_POST['cena'][$id];
$model=$_POST['model'][$id];
$name=$_POST['name'][$id];
$coeff=$_POST['coeff'][$id];
$cena_zelan = $_POST['cena_zelan'][$id];
}
$cena_to_be = $cena * $coeff;
if ($cena < $cena_zelan){
$cena_to_be = $cena_zelan;
$coeff_back = $cena_zelan/$cena;
}
$pic="UPDATE price SET cena_to_be='".$cena_to_be."', coeff='".$coeff."',cena_zelan='".$cena_zelan."',coeff_back='".$coeff_back."' WHERE id='".$id."'" ;
$res=mysql_query($pic) ;
printf ("<input name='id' type='text' value='%s' size='5'>
<input name='brand' type='text' value='%s' size='15'>
<input name='kode' type='text' value='%s' size='8'>
<input name='cena' type='text' value='%s' size='5'>
<input name='model' type='text' value='%s' size='8'>
<input name='name' type='text' value='%s' size='25'>
Коеффициент удорожания:<input name='coeff' type='text' value='%s' size='3'>
Желаемая цена:<input name='cena_zelan' type='text' value='%s' size='5'>
Цена существующая:<input name='cena_to_be' type='text' value='".$cena_to_be."' size='5'>
Обратный коеффициент:<input name='coeff_back' type='text' value='".$coeff_back."' size='5'>
<a href='index.php'> Вернуться </a>",$id,$brand,$kode,$cena,$model,$name,$coeff,$cena_zelan);
?>
|
| |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 23:12)
| | > <input name='brand' type='text'
какой смысл Вам советовать, если Вы не следуете совету? | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 23:26)
| | ой! в обработчике не проставил........... | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 23:31)
| | если обработчик - отдельный файл, то непонятно, зачем там вообще этот printf() . Тем более, что форму он не создает. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 23:36)
| | ЗАРАБОТАЛО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!
ВЕСЬ мой тупизм проявился !
всего навсево нужно было цикл засандалить. а я в обработчике с самого начала просто для проверки оставил вывод и забыл про него. НО сейчас все РАБОТАЕТ!!!! СПАСИБО ОГРОМНОЕ!
P.S. обнагле окончательно с еще одним вопросом - база не хочет считать числа с запятыми - я их меняю (автоматом) на точки. но после всех пересчетов я экспортирую в ексель и получаю вместо некоторых чисел - месяцы (автозамена срабатывает). где мне влепить обратную замену на запятые из базы? вот куски:
# читаю файл и меняю запятые на точки#
list($n1,$n2,$n3,$n4,$n5,$n6,$n7,$n8,$n9,$n10,$n11,$n12,$n13,$n14) = split("\t",$tovar[$i]);
$n_6 = str_replace(",",".","$n6");
|
вот вывод в ексель:
include('info.inc.php');
$connect=mysql_connect($host, $account, $password) or die ('íåò ñîåäèíåíèÿ');
$db=mysql_select_db($dbname, $connect);
$result = "SELECT * FROM price";
$result1 = mysql_query($result);
$count = mysql_num_fields($result1);
for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($result1, $i)."\t";
}
while($row = mysql_fetch_row($result1)){
$line = '';
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r", "", $data);
if ($data == "") {
$data = "\nno matching records found\n";
}
header("Content-type: application/octet-stream");
# replace excelfile.xls with whatever you want the filename to default to
header("Content-Disposition: attachment; filename=price.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $header."\n".$data;
?>
|
| |
|
|
|
|
|
|
|
для: dimon76
(23.03.2009 в 00:00)
| | вот здесь у Вас имя $value явно перегружено
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
|
исправляйте - тогда будет понятно где менять. | |
|
|
|
|
|
|
|
для: Trianon
(23.03.2009 в 00:05)
| | ну как бы в ексель все нормально выводит за исключением точек в ценах. но точки в ценах беруться из базы.
честно говоря я не понимаю в чем там перегрузка :( | |
|
|
|
|
|
|
|
для: dimon76
(23.03.2009 в 00:08)
| | в том, что Вы и для значения отдельного поля и для текста всей накопленной строки применяете одну и ту же переменную.
Стоп. Вру.
Но тогда что за вопрос?
В $value и меняйте. | |
|
|
|
|
|
|
|
для: Trianon
(23.03.2009 в 00:10)
| | ЗАРАБОТАЛО!!!
СПАСИБИЩЕ ОГРОМЕННОЕ! | |
|
|
|
|
|
|
|
для: dimon76
(23.03.2009 в 00:12)
| |
while($row = mysql_fetch_row($result1))
{
$line = ''; $sep = '';
foreach($row as $n => $value)
{
if($n == 5) $value = str_replace('.',',', $value);
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' ;
$line .= $sep . $value;
$sep = "\t";
}
$data .= $line."\r\n";
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 23:26)
| | блин, туплю...
ну не понимаю я почему оно не работает. | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 23:33)
| | $cena_to_be = $cena * $coeff;
if ($cena < $cena_zelan){
$cena_to_be = $cena_zelan;
$coeff_back = $cena_zelan/$cena;
}
$pic="UPDATE price SET cena_to_be='".$cena_to_be."', coeff='".$coeff."',cena_zelan='".$cena_zelan."',coeff_back='".$coeff_back."' WHERE id='".$id."'" ;
$res=mysql_query($pic) ;
эти строки нужно поместить внутрь цикла foreach | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 23:26)
| | а разве вот это
echo "<input name='id' type='text' value='".$n1."' size='5'>
<input name='brand' type='text' value='".$n2."' size='15'>
<input name='kode' type='text' value='".$n4."' size='8'>
<input name='cena' type='text' value='".$n_6."' size='5'>
<input name='model' type='text' value='".$n7."' size='8'>
<input name='name' type='text' value='".$n9."' size='25'>
Коеффициент :<input name='coeff' type='text' value='1' size='3'>
Желаемая цена:<input name='cena_zelan' type='text' value='' size='5'>";
|
не тоже самое что и это:
echo "<input name='id[$n1]' type='text' value='".$n1."' size='5'>
........................................
Желаемая цена:<input name='cena_zelan[$n1]' type='text' value='' size='5'>";
|
| |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 23:38)
| | А Вы посмотрите HTML-код страницы, сгенерированной сервером, и увидите, что не то же. | |
|
|
|
|
|
|
|
для: dimon76
(22.03.2009 в 22:24)
| | Для : dimon76
Вы определитесь с </form> где оное должно быть в единственном экземпляре. | |
|
|
|
|
|
|
|
для: AcidTrash
(22.03.2009 в 22:37)
| | чуть выше сообщение | |
|
|
|
|
|
|
|
для: AcidTrash
(22.03.2009 в 22:37)
| | UPD насчет </form> вы поправили.
Так проблема актуальна? | |
|
|
|
|
|
|
|
для: AcidTrash
(22.03.2009 в 22:45)
| | ага. все так же | |
|
|
|