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

Форум PHP

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

 

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

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

тема: запутался сотправкой формы
 
 автор: dimon76   (22.03.2009 в 21:39)   письмо автору
 
 

доброго времени суток!
помогите с такой темой:
выводится список из файла (тут все нормально), потом этот список нужно отправить в обработчик - причем так чтобы можно было внести изменения в ВЕСЬ список и весь за один раз отправить.
у меня только получается отправлять построчно.(запарился уже)
вот кусок кода:



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>";

  Ответить  
 
 автор: Trianon   (22.03.2009 в 21:57)   письмо автору
 
   для: dimon76   (22.03.2009 в 21:39)
 

Вы формируете кучу форм с одной строкой.
на сервер уйдет лишь одна форма.

Формируйте одну форму с кучей строк.

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:02)   письмо автору
 
   для: 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>";













ваще ничего не уходит!

  Ответить  
 
 автор: Trianon   (22.03.2009 в 22:13)   письмо автору
 
   для: dimon76   (22.03.2009 в 22:02)
 

теперь посмотрите, где вы закрываете форму.

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:24)   письмо автору
 
   для: Trianon   (22.03.2009 в 22:13)
 

да это понятно! это я только что тупикнул. а вообще все делаю по -правилам вроде бы - все открытое закрываю. но происходит следующее - все нормально выводиться и кнопочка одна внизу но тыцкаю на кнопку и ничего вообще не происходит. хоть бы ошибку какую, гад давал, так нет вообще молчит как рыба об лед......... все мозги последние уже сломал

  Ответить  
 
 автор: Trianon   (22.03.2009 в 22:27)   письмо автору
 
   для: dimon76   (22.03.2009 в 22:24)
 

так если кнопка у Вас за пределами открытой формы - так и должно быть.
А ошибок html-кода браузеры не выдают принципиально.

  Ответить  
 
 автор: AcidTrash   (22.03.2009 в 22:33)   письмо автору
 
   для: Trianon   (22.03.2009 в 22:27)
 

-

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:37)   письмо автору
 
   для: 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>"; 

  Ответить  
 
 автор: AcidTrash   (22.03.2009 в 22:42)   письмо автору
 
   для: dimon76   (22.03.2009 в 22:37)
 

Желаемая цена:<input name='cena_zelan' type='text' value='' size='5'></form>";
А это что? Выделено жирным.

  Ответить  
 
 автор: Trianon   (22.03.2009 в 22:45)   письмо автору
 
   для: dimon76   (22.03.2009 в 22:37)
 

точка с запятой не стоит после echo.
а что в цикле формирования текста формы делает оператор INSERT?
Он должен быть совсем в другом цикле - в цикле обработки массива $_POST . Возможно даже в другом файле.

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:48)   письмо автору
 
   для: Trianon   (22.03.2009 в 22:45)
 

с insert все нормально - в обработчике стоит update. Вы мне лучше с формой подскажите что ДЕЛАТЬ а то я уже с ума схожу

  Ответить  
 
 автор: Trianon   (22.03.2009 в 22:54)   письмо автору
 
   для: 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'>";
 

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:58)   письмо автору
 
   для: Trianon   (22.03.2009 в 22:54)
 

а в обработчик так писать потом?:



id=$_POST['id[$n1]'];
$brand=$_POST['brand[$n1]'];
$kode=$_POST['kode[$n1]'];

  Ответить  
 
 автор: Trianon   (22.03.2009 в 23:01)   письмо автору
 
   для: dimon76   (22.03.2009 в 22:58)
 

foreach($_POST['brand'] as $id => $brand)
{
    $kode = $_POST['kode'][$id];
...
    $cena_zelan = $_POST['cena_zelan'][$id];

...

}

  Ответить  
 
 автор: dimon76   (22.03.2009 в 23:12)   письмо автору
 
   для: 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);

?>



  Ответить  
 
 автор: Trianon   (22.03.2009 в 23:26)   письмо автору
 
   для: dimon76   (22.03.2009 в 23:12)
 

> <input name='brand' type='text'

какой смысл Вам советовать, если Вы не следуете совету?

  Ответить  
 
 автор: dimon76   (22.03.2009 в 23:31)   письмо автору
 
   для: Trianon   (22.03.2009 в 23:26)
 

ой! в обработчике не проставил...........

  Ответить  
 
 автор: Trianon   (22.03.2009 в 23:36)   письмо автору
 
   для: dimon76   (22.03.2009 в 23:31)
 

если обработчик - отдельный файл, то непонятно, зачем там вообще этот printf() . Тем более, что форму он не создает.

  Ответить  
 
 автор: dimon76   (23.03.2009 в 00:00)   письмо автору
 
   для: 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 ('&#237;&#229;&#242; &#241;&#238;&#229;&#228;&#232;&#237;&#229;&#237;&#232;&#255;');
$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; 
?> 

  Ответить  
 
 автор: Trianon   (23.03.2009 в 00:05)   письмо автору
 
   для: 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;
  } 

исправляйте - тогда будет понятно где менять.

  Ответить  
 
 автор: dimon76   (23.03.2009 в 00:08)   письмо автору
 
   для: Trianon   (23.03.2009 в 00:05)
 

ну как бы в ексель все нормально выводит за исключением точек в ценах. но точки в ценах беруться из базы.

честно говоря я не понимаю в чем там перегрузка :(

  Ответить  
 
 автор: Trianon   (23.03.2009 в 00:10)   письмо автору
 
   для: dimon76   (23.03.2009 в 00:08)
 

в том, что Вы и для значения отдельного поля и для текста всей накопленной строки применяете одну и ту же переменную.
Стоп. Вру.

Но тогда что за вопрос?
В $value и меняйте.

  Ответить  
 
 автор: dimon76   (23.03.2009 в 00:12)   письмо автору
 
   для: Trianon   (23.03.2009 в 00:10)
 

ЗАРАБОТАЛО!!!


СПАСИБИЩЕ ОГРОМЕННОЕ!

  Ответить  
 
 автор: Trianon   (23.03.2009 в 00:21)   письмо автору
 
   для: 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";
}

  Ответить  
 
 автор: dimon76   (22.03.2009 в 23:33)   письмо автору
 
   для: Trianon   (22.03.2009 в 23:26)
 

блин, туплю...

ну не понимаю я почему оно не работает.

  Ответить  
 
 автор: Trianon   (22.03.2009 в 23:37)   письмо автору
 
   для: 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

  Ответить  
 
 автор: dimon76   (22.03.2009 в 23:38)   письмо автору
 
   для: 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'>";

  Ответить  
 
 автор: Trianon   (22.03.2009 в 23:57)   письмо автору
 
   для: dimon76   (22.03.2009 в 23:38)
 

А Вы посмотрите HTML-код страницы, сгенерированной сервером, и увидите, что не то же.

  Ответить  
 
 автор: AcidTrash   (22.03.2009 в 22:37)   письмо автору
 
   для: dimon76   (22.03.2009 в 22:24)
 

Для : dimon76
Вы определитесь с </form> где оное должно быть в единственном экземпляре.

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:39)   письмо автору
 
   для: AcidTrash   (22.03.2009 в 22:37)
 

чуть выше сообщение

  Ответить  
 
 автор: AcidTrash   (22.03.2009 в 22:45)   письмо автору
 
   для: AcidTrash   (22.03.2009 в 22:37)
 

UPD насчет </form> вы поправили.
Так проблема актуальна?

  Ответить  
 
 автор: dimon76   (22.03.2009 в 22:49)   письмо автору
 
   для: AcidTrash   (22.03.2009 в 22:45)
 

ага. все так же

  Ответить  
Rambler's Top100
вверх

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