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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проблема с отправкой данных

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: cheops   (18.10.2005 в 21:53)   письмо автору
 
   для: Dead_Fenix   (18.10.2005 в 21:41)
 

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

   
 
 автор: Dead_Fenix   (18.10.2005 в 21:41)   письмо автору
 
   для: cheops   (18.10.2005 в 21:36)
 

Было б все так просто. Я должен вставить функцию в $msg, а функция выводит текст...

   
 
 автор: cheops   (18.10.2005 в 21:36)   письмо автору
 
   для: Dead_Fenix   (18.10.2005 в 21:13)
 

Я имею ввиду следующее
<?php 
case "zakaz"
// форма для оформления заказа 
   
echo "<form action=$PHP_SELF method=post><input type=hidden name=c value=post>"
        
"<input type=hidden name=SID value='$SID'>"
        
"<table border=0  cellpadding=5 cellspacing=2  bgcolor=#275CBD>"
   for (
$i=0$i<count($post); $i++) { 
      echo 
"<tr bgcolor=#FFFFFF><td><FONT size=+1>$post[$i]</FONT></td><td><input type=text size=60 name='v[$i]'></td></tr>"
   } 
   echo 
"</table><br><input type=submit value='Отправить заказ'></form>"
   break; 


case 
"post"
// генерим и отправляем анкету посетителя, где указаны данные посетителя 
// и список товаров из корзины 
 
$is_error false;
  if(!empty(
$_POST)) 
  { 
    for (
$i=0$i<count($post); $i++) 
    { 
      if(empty(
$_POST['v'][$i]))
      {
        echo (
"Заполните поле ".$post[$i]); 
        
$is_error true;
      }
    } 
  } 
  if(!
$is_error)
 {
   
$msg="Анкета посетителя:\n\n <BR>"
   for (
$i=0$i<count($post); $i++) { 
      
$msg.="$post[$i]: ".substr($v[$i],0,500)."\n <BR>"
   } 
   
$msg.="<BR> \nСписок покупок:\n\n <BR>"
   
$k=@array_keys($t[all]); 
   for (
$i=0$i<count($k); $i++) { 
      
$id=$k[$i]; 
      
$msg.=($i+1).") {$t[$id][name]} \\ ".doubleval($t[$id][cena])." руб \\ {$t[$id][kol]} шт. \\ = "
           
sprintf("%.2f",$t[$id][cena]*$t[$id][kol])." руб\n <BR>"
   } 

   
$to "'somebody@somewhere.ru'"
   
$subject "Заказ"

   
mail($to$subject$msg); 
 }
?>

>И еще, мне надо отправить, в письме, текст из функции, как вставить его(текст) в $msg
<?php
  $msg 
.= "Текст из функции";
?>

   
 
 автор: Dead_Fenix   (18.10.2005 в 21:13)   письмо автору
 
   для: cheops   (18.10.2005 в 20:48)
 

Э... Лучше приведу часть кода

<?php
case "zakaz":
// форма для оформления заказа
   
echo "<form action=$PHP_SELF method=post><input type=hidden name=c value=post>".
        
"<input type=hidden name=SID value='$SID'>".
        
"<table border=0  cellpadding=5 cellspacing=2  bgcolor=#275CBD>";
   for (
$i=0$i<count($post); $i++) {
      echo 
"<tr bgcolor=#FFFFFF><td><FONT size=+1>$post[$i]</FONT></td><td><input type=text size=60 name='v[$i]'></td></tr>";
   }
   echo 
"</table><br><input type=submit value='Отправить заказ'></form>";
   break;


case 
"post":
// генерим и отправляем анкету посетителя, где указаны данные посетителя
// и список товаров из корзины
  
if(!empty($_POST))
  {
    for (
$i=0$i<count($post); $i++)
    {
      if(empty(
$_POST['v'][$i])) exit("Заполните поле ".$post[$i]);
    }
  }

   
$msg="Анкета посетителя:\n\n <BR>";
   for (
$i=0$i<count($post); $i++) {
      
$msg.="$post[$i]: ".substr($v[$i],0,500)."\n <BR>";
   }
   
$msg.="<BR> \nСписок покупок:\n\n <BR>";
   
$k=@array_keys($t[all]);
   for (
$i=0$i<count($k); $i++) {
      
$id=$k[$i];
      
$msg.=($i+1).") {$t[$id][name]} \\ ".doubleval($t[$id][cena])." руб \\ {$t[$id][kol]} шт. \\ = ".
           
sprintf("%.2f",$t[$id][cena]*$t[$id][kol])." руб\n <BR>";
   }

   
$to "'somebody@somewhere.ru'";
   
$subject "Заказ";

   
mail($to$subject$msg);

?>

И еще, мне надо отправить, в письме, текст из функции, как вставить его(текст) в $msg

   
 
 автор: cheops   (18.10.2005 в 20:48)   письмо автору
 
   для: Dead_Fenix   (18.10.2005 в 15:13)
 

У вас как выглядите обработчик? Т.е. он ведь не срабатывает при первой загрузке - каково условия его срабатывания?

Для того, чтобы поля не сбрасывались, необходимо поместить значения из $_POST в атрибут value тэга <input>.

   
 
 автор: Dead_Fenix   (18.10.2005 в 15:13)   письмо автору
 
   для: cheops   (18.10.2005 в 14:27)
 

Что-то я не совсем понял...
Ладно поставлю вопрос по другому. Допустим поле не заполнено, то требуется загрузить страницу с формой еще раз и что бы над формой появилась надпись - Заполните поле. И что бы при этом заполненные поля не сбрасывались.
Хотя если на последнее трудно реализуемо - то лучше не надо...

   
 
 автор: cheops   (18.10.2005 в 14:27)   письмо автору
 
   для: Dead_Fenix   (18.10.2005 в 13:07)
 

Конечно, введите, например, флаг $is_error, который будет сигнализировать об ошибке
<?php
  $is_error 
false;
  if(!empty(
$_POST)) 
  { 
    for (
$i=0$i<count($post); $i++) 
    { 
      if(empty(
$_POST['v'][$i]))
      {
        echo 
"Заполните поле ".$post[$i]; 
        
$is_error true;
      }
    } 
  } 
  ...
  if(
$is_error) exit();
?>

   
 
 автор: Dead_Fenix   (18.10.2005 в 13:07)   письмо автору
 
   для: cheops   (17.10.2005 в 12:32)
 

Как я понимаю exit это функция которая приостанавливает выполнение скрипта, а также обработку хтмл. Можно ли это как-то избежать?

   
 
 автор: Dead_Fenix   (17.10.2005 в 14:24)   письмо автору
 
   для: cheops   (17.10.2005 в 12:32)
 

Спасибо, сработало. Но при exit не прорисовывается дизайн сайта :(
И появился еще 1 вопрос, как сделать что бы введенные поля сохранялись... т.е. если первое поле заполнили, а второе нет, не приходилось первое заполнять еще раз, или это не возможно?

   
 
 автор: cheops   (17.10.2005 в 12:32)   письмо автору
 
   для: Dead_Fenix   (17.10.2005 в 05:14)
 

Ну да у вас имя поля является массивом v[$i], поэтому следует использовать $_POST['v'][$i]. Попробуйте распечатать содержимое массива $_POST
<?php
  print_r
($_POST);
?>

а также измените !isset() на empty()
<?php 
  
if(!empty($_POST)) 
  { 
    for (
$i=0$i<count($post); $i++) 
    { 
      if(empty(
$_POST['v'][$i])) exit("Заполните поле ".$post[$i]); 
    } 
  } 
?>

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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