Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форма для отправки, Сдаюсь-не отправляет и не записывает! 
:(
    Опции темы
PARROT
Дата 27.4.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Я честно, сидела 3 часа и искала ошибку в этой и других подобных моих формах отправки, но так и не поняла, почему она у меня не отправляет ничего и даже не записывает данные в базу!
То ли у меня крыша потекла, то ли комп озверел.
Решила себе облегчить задачу, записать все формы по условиям на одну страницу, но... Сижу и мучаюсь теперь smile
Помогите найти ошибку!

Код

<?
//добавление объявления на доску по условию
if($mode=='board')
{
if($posil){
        if(empty($name)){
        $error="Ошибка: Вы не указали имя отправителя!<br>";
        }
        if(empty($t1)){
        $error.="Ошибка: Вы не указали текст сообщения!<br>";
        }
        if(!$error){
        $t1=strip_tags($t1);
        $mail=strip_tags($mail);
        $name=strip_tags($name);
        $tel=strip_tags($tel);
        $site=strip_tags($site);
        $reg=strip_tags($reg);
        $zag=strip_tags($zag);
        $t1=ereg_replace("\r|\t", "", $t1);
        $mail=ereg_replace("\r|\t", "", $mail);
        $name=ereg_replace("\r|\t", "", $name);
        $tel=ereg_replace("\r|\t", "", $tel);
        $site=ereg_replace("\r|\t", "", $site);
        $reg=ereg_replace("\r|\t", "", $reg);
        $zag=ereg_replace("\r|\t", "", $zag);
        $t1=ereg_replace("\n", "<br>", $t1);
                $res1=mysql_query("select txt from notice");
        $db_text=mysql_fetch_row($res1);
                if ($db_text[0]!=$t1){
                $time=date("Y-m-d");
                mysql_query("insert into notice values('','$time','$zag','$t1','$name','$reg','$tel','$site','$mail')");
                $header="Content-type:text/html;charset=windows-1251\r\n";
                $msg="<table width=400 border bordercolor=green style=border-collapse:collapse><tr><td>$name</td></tr><tr><td>$time</td></tr><tr><td>$mail</td></tr><tr><td>$tel</td></tr><tr><td>$site</td></tr><tr><td>$reg</td></tr><tr><td>$zag</td></tr><tr><td>$t1</td></tr></table>";
                mail("[email protected]","Доска объявлений",$msg,$header);
        }
          header('location: index.php?page=board');
ob_end_flush();
exit;
    }
}
?>
<Form  Method="POST">
<table cellpadding="0" cellspacing="0" align="center">
<tr>
<td>
<fieldset>
<table border="0">
<tr>
<td colspan=2 align=center><b>Добавить объявление:</b></td>
</tr>
<tr>
<td style="padding-right:20">Контактное лицо:</td>
<td><Input Type="text" Name="name" maxlength="40" size="48"><?echo $error;?></td>
</tr>
<tr>
<td style="padding-right:20">e-mail:</td>
<td><Input Type="text" Name="mail" maxlength="40" size="48"></td>
</tr>
<tr>
<td style="padding-right:20">тел/факс:</td>
<td><Input Type="text" Name="tel" maxlength="60" size="48"></td>
</tr>
<tr>
<td style="padding-right:20">сайт:</td>
<td><Input Type="text" Name="site" maxlength="60" size="48" value="http://www."></td>
</tr>
<tr>
<td style="padding-right:20">Регион:</td>
<td><Input Type="text" Name="reg" maxlength="40" size="48"></td>
</tr>
<tr>
<td style="padding-right:20">Заголовок:</td>
<td><Input Type="text" Name="zag" maxlength="43" size="48"></td>
</tr>
<tr>
<td colspan=2 align=center>Текст объявления:<br><font color=red>* Ссылки и контактные данные добавятся автоматически.</font></td>
</tr>
<tr>
<td colspan=2 align=center><textarea id="text1" name="t1" rows="5" cols="30"  onkeyup="checkLength(this);" onchange="checkLength(this);"></textarea><br>
 Осталось:
 <input id="text2" type="text" name="t2" value="300" size="4" maxlength="4" disabled="false" />
</td>
</tr>
<tr>
<td><Input Type="submit" name="posil" Value="Добавить" class="inp" style="width:100;" style="cursor:hand"></td>
<td align="right"><Input Type="reset" Value="Очистить" class="inp" style="width:100;" style="cursor:hand"></td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
</Form>
<?
}
?>




--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 27.4.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



register_globals = Off?
PM   Вверх
PARROT
Дата 27.4.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Вопрос отпал!

Другой возник, по той же теме:
Есть 5 форм, на одной странице, выводятся формы по условиям, как лучше организовать это дело и могут ли быть переменные одинаково названы, конфликта не будет?

Код

if($mode='send')
{
одна форма
}
if($send='opp')
{
другая форма
}

и т. д.


В таком духе....
Как правильно организовать?

Это сообщение отредактировал(а) PARROT - 27.4.2005, 13:48


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Irokez
Дата 27.4.2005, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



попробуйте добавить в начало:
Код

foreach ($_POST as $key => $value) {
    $$key = &$_POST[$key];
}

PM   Вверх
Mal Hack
Дата 27.4.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



PARROT
У кнопки для каждой формы зделай уникальное значение и его в скрипте опрашивай.
Я бы сделал через switch
PM ICQ   Вверх
PARROT
Дата 27.4.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Mal Hack
Я уже решила проблему через if, как и было выше написано (все работает), но хотелось бы пример использования с switch.
Как вариант!
Спасибо! Жду.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 27.4.2005, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



PM ICQ   Вверх
Aliance
Дата 27.4.2005, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Код

$kakuu_formu_vivodit;

switch ($form_id) {
   case "send":
      $kakuu_formu_vivodit = 'index.php';
      break;
   case "opp":
      $kakuu_formu_vivodit = 'special.php';
      break;

   default:
      $kakuu_formu_vivodit = '';
      break;
}

echo "<form action='>".$kakuu_formu_vivodit."<' method=post>.......";


Например так...

Объяснения:
Если $form_id === "send" - то переменная $kakuu_formu_vivodit = "index.php", если $form_id === "щзз" - то переменная $kakuu_formu_vivodit = "special.php"... если не тому,ю ни другому - то пустому значению...
PM MAIL WWW ICQ Skype   Вверх
PARROT
Дата 28.4.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Не получается вот что:
В выводимом объявлении есть ссылка: такого вида
Код

// $id это номер объявления (тут все правильно!)
<a href=?page=post&mode=$id>Послать письмо</a>

Выходя по ссылке мы должны увидеть форму которая находится в switch
Код

<?
switch ($mode) {
case 'board': {
.......
break;
}
}
case 'id':
{ 
//ответ на объявление
$send=mysql_query("select caption,mail FROM notice WHERE id_notice=".$id);
for($i=0;$i<mysql_num_rows($send);$i++)
{
        $mas=mysql_fetch_row($send);
        $mas[0]=stripslashes($mas[0]);
        $mas[1]=stripslashes($mas[1]);
        

}
echo "<Form Method=POST>
<table cellpadding=0 cellspacing=0 align=center>
<tr>
<td>
<fieldset>
<table border=0>
<tr>
<td style=padding-right:20>тема</td>
<td><Input Type=text Name=tema value='re:<?php echo $mas[0]; ?>' maxlength=60 size=48></td>
</tr>
<tr>
<td style=padding-right:20>Имя:</td>
<td><Input Type=text Name=name maxlength=60 size=48></td>
</tr>
<tr>
<td style=padding-right:20>e-mail:</td>
<td><Input Type=text Name=mail maxlength=60 size=48></td>
</tr>
<tr>
<td style=padding-right:20>телефон/факс:</td>
<td><Input Type=text Name=tel maxlength=60 size=48></td>
</tr>
<tr>
<td colspan=2 align=center><textarea id=text1 name=t1 rows=5 cols=30  onkeyup='checkLength(this);' onchange='checkLength(this);'></textarea><br>
 Осталось:
 <input id=text2 type=text name=t2 value=300 size=4 maxlength=4 disabled='false' />
</td>
</tr>
<tr>
<td><Input Type=submit name=send3 Value=Отправить class=inp style='width:100;' style='cursor:hand'></td>
<td align=right><Input Type=reset Value=Очистить class=inp style='width:100;' style='cursor:hand'></td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
</Form>";
if($send3)
{
    if(empty($name)){
    $error="Ошибка: Вы не указали имя отправителя!<br>";
    }
    if(empty($t1)){
    $error.="Ошибка: Вы не указали текст сообщения!<br>";
    }
    if(!$error){
    $t1=strip_tags($t1);
    $mail=strip_tags($mail);
    $name=strip_tags($name);
    $tel=strip_tags($tel);
    $tema=strip_tags($tema);
    $t1=ereg_replace("\r|\t", "", $t1);
    $tel=ereg_replace("\r|\t", "", $tel);
    $tema=ereg_replace("\r|\t", "", $tema);
    $name=ereg_replace("\r|\t", "", $name);
    $t1=ereg_replace("\n", "<br>", $t1);
        $header="Content-type:text/html;charset=windows-1251\r\n";
        $msg="<table width=400 border bordercolor=green style=border-collapse:collapse><tr><td>$tema</td></tr><tr><td>$t1</td></tr><tr><td>$mail</td></tr><tr><td>$tel</td></tr><tr><td>$name</td></tr></table>";
        mail("$mas[1]","$mas[0]:",$msg,$header);
 header('location: index.php?page=board');
ob_end_flush();
exit;
break;
}
}
}        
}
?>

Так вот выходя по ссылке, на страницу, никакой формы не печатается. Кроме того, я не пойму как это сделать, если отвечать на объявление мы должны по номеру объявления, а номера могут быть разными.
Если запрос спустить ниже перед выводом re:, то ошибка mysql_num_row

Короче я незнаю что ставить в case, какую переменную вызывать и как обмануть PHP!

А если в case принудительно написать номер объявления, то форма выводится, но с ошибкой!

smile smile smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 28.4.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Код

<?
switch ($mode) {
    case 'board': {
        // ...
        break;
    } 
    case 'id': { 
        //ответ на объявление
        $send=mysql_query("select caption, mail FROM notice WHERE id_notice=".$id);
        for($i=0;$i<mysql_num_rows($send);$i++)
        {
                $mas=mysql_fetch_row($send);
                $mas[0]=stripslashes($mas[0]);
                $mas[1]=stripslashes($mas[1]);
                
        
        }
        echo "<Form Method=POST>
        <table cellpadding=0 cellspacing=0 align=center>
        <tr>
        <td>
        <fieldset>
        <table border=0>
        <tr>
        <td style=padding-right:20>тема</td>
        <td><Input Type=text Name=tema value='re:<?php echo $mas[0]; ?>' maxlength=60 size=48></td>
        </tr>
        <tr>
        <td style=padding-right:20>Имя:</td>
        <td><Input Type=text Name=name maxlength=60 size=48></td>
        </tr>
        <tr>
        <td style=padding-right:20>e-mail:</td>
        <td><Input Type=text Name=mail maxlength=60 size=48></td>
        </tr>
        <tr>
        <td style=padding-right:20>телефон/факс:</td>
        <td><Input Type=text Name=tel maxlength=60 size=48></td>
        </tr>
        <tr>
        <td colspan=2 align=center><textarea id=text1 name=t1 rows=5 cols=30  onkeyup='checkLength(this);' onchange='checkLength(this);'></textarea><br>
         Осталось:
         <input id=text2 type=text name=t2 value=300 size=4 maxlength=4 disabled='false' />
        </td>
        </tr>
        <tr>
        <td><Input Type=submit name=send3 Value=Отправить class=inp style='width:100;' style='cursor:hand'></td>
        <td align=right><Input Type=reset Value=Очистить class=inp style='width:100;' style='cursor:hand'></td>
        </tr>
        </table>
        </fieldset>
        </td>
        </tr>
        </table>
        </Form>";
        if($send3)
        {
            if(empty($name)){
                $error="Ошибка: Вы не указали имя отправителя!<br>";
            }
            if(empty($t1)){
                $error.="Ошибка: Вы не указали текст сообщения!<br>";
            }
            if(!$error){
                $t1=strip_tags($t1);
                $mail=strip_tags($mail);
                $name=strip_tags($name);
                $tel=strip_tags($tel);
                $tema=strip_tags($tema);
                $t1=ereg_replace("\r|\t", "", $t1);
                $tel=ereg_replace("\r|\t", "", $tel);
                $tema=ereg_replace("\r|\t", "", $tema);
                $name=ereg_replace("\r|\t", "", $name);
                $t1=ereg_replace("\n", "<br>", $t1);
                $header="Content-type:text/html;charset=windows-1251\r\n";
                $msg="<table width=400 border bordercolor=green style=border-collapse:collapse><tr><td>$tema</td></tr><tr><td>$t1</td></tr><tr><td>$mail</td></tr><tr><td>$tel</td></tr><tr><td>$name</td></tr></table>";
                mail("$mas[1]","$mas[0]:",$msg,$header);
                header('location: index.php?page=board');
         
                ob_end_flush();
                exit;
            }
        }
        break;
    }
}
?> 

Думаю что так должно работать.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Aliance
Дата 28.4.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Сразу не понял откуда берется $mode, если из строки адреса - то так ее получаем:
Код

$mode2 = $_GET['mode'];


Это сообщение отредактировал(а) Aliance - 28.4.2005, 15:07
PM MAIL WWW ICQ Skype   Вверх
IZ@TOP
Дата 28.4.2005, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ага, и посмотри что в $mode. Может там значение которого нету ни в одном @case.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
PARROT
Дата 28.4.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



case 'id' должен придти номер, но не приходит, как его вызвать?
Добавлено @ 15:38
И вот так тоже $mode2 = $_GET['mode']; ссылка <a href=?page=post&mode=$id>Послать письмо</a>

Ну незнаю. Может оставить 2 формы в if ()?
Правда интересно, почему switch так себя ведет.



Это сообщение отредактировал(а) PARROT - 28.4.2005, 17:19


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
PARROT
Дата 29.4.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Ну что, вот так просто проблема решилась, но только наполовину:
Код

switch($id) {
 case $id: {// не 'id', именно $id без апострофов, потому как это число (получила по шапке за это! только что  :( )
...
}
}

выход по ссылке <a href=?page=post&id=$id>Послать письмо</a>


Но это еще не все:
Есть еще одна похожая форма, которую надо бы подсоединить к этому switch

Код

case $idr:
{
.....
выход по ссылке  <a href=?page=post&id=$idr>Послать письмо</a>

Работает, но криво, вызывает данные из $id почему-то


Вопрос: Как бороться? И стоит ли?





--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
IZ@TOP
Дата 29.4.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, по моему ты пошла не совсем тем путем. Зачем делать switch($id) case $id? Достаточно просто сделать проверку if(isset($id)) { ... сделать то-то... }.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0829 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.