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

Форум PHP

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

 

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

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

тема: Не передается значение переменной
 
 автор: Morax   (14.10.2009 в 00:38)   письмо автору
 
 

Значение переменной "$item" ну ни в какую не передается... т.е. она даже определяется как пустая.
Часть кода:

<?php
if (isset($_POST['name']))      {$name $_POST['name']; if ($name == '') {unset($name);}}
if (isset(
$_POST['phone']))      {$phone $_POST['phone']; if ($phone== '') {unset($phone);}}
if (isset(
$_POST['text']))        {$textmes$_POST['text']; if ($textmes == '') {unset($textmes);}}
if (isset(
$_GET['item']))             {$item $_GET['item']; }
          if (isset(
$item) && isset($textmes) && isset($phone) && isset($name))
          {
    if (
$name == '') {$name '';}
    if (
$phone == '') {$phone '';}
    if (
$textmes == '') {$textmes '';}

          
$result3 mysql_query ("INSERT INTO mails (by_who,phone,item,text) VALUES ('$name', '$phone','$item','$textmes')");
if (
$result3 == 'true') {echo "<p>Сообщение успешно отправлено! Врнуться <a href='index.php'>на Главную</a></p>";}
else {echo 
"<p>Сообщение не удалось отправить!</p>";}
}
?>

Пояснение к коду:

Первые три значения передаются из формы в этом же файле и проблем с ними нет.
Следующее значение, оно же "$item", передается из другого файла... причем двумя способами. Первым для кода, которого в приведенном мной нет - там все в порядке. Вторым для этой части кода - с ума схожу... может че не заметил или не знаю... Но не из первой передачи, не из второй вставляться в поток вывода не хочет.

Может код не всю картину отображает... но во всем коде лишнего много...
Заранее благодарен

  Ответить  
 
 автор: Trianon   (14.10.2009 в 00:42)   письмо автору
 
   для: Morax   (14.10.2009 в 00:38)
 

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

  Ответить  
 
 автор: Morax   (14.10.2009 в 00:47)   письмо автору
 
   для: Trianon   (14.10.2009 в 00:42)
 

<?php 
<a href="msend.php?id=%s&item=%s"', $myrow["id"], $myrow["title"]) .......?>

Он и отправляет

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

  Ответить  
 
 автор: Trianon   (14.10.2009 в 00:50)   письмо автору
 
   для: Morax   (14.10.2009 в 00:47)
 

Это какой-то обрывок кода вне контекста с неочевидным синтаксисом и семантикой.
Поглядите, как выглядит ссылка в сгенерированном коде.

PS. Вы вырезаете куски кода на лету, явно не понимая, как они работают. Решению проблемы это не способствует.

  Ответить  
 
 автор: Morax   (14.10.2009 в 00:54)   письмо автору
 
   для: Trianon   (14.10.2009 в 00:50)
 

http://localhost/boat/msend.php?id=2&item=Bayliner%2018 - ссылка

  Ответить  
 
 автор: Trianon   (14.10.2009 в 01:01)   письмо автору
 
   для: Morax   (14.10.2009 в 00:54)
 

if (isset($item) && isset($textmes) && isset($phone) && isset($name))

Здесь у Вас проверяется, что переданы GET-item , POST-textmes, POST-phone, и POST-name , в то время как никаких POST-параметров через ссылку передано быть не может в принципе.
Если, конечно, $name , $phone и $textmes не заданы строками выше. Но строк этих Вы не привели.

  Ответить  
 
 автор: Morax   (14.10.2009 в 08:38)   письмо автору
 
   для: Trianon   (14.10.2009 в 01:01)
 

вот отправкак методом пост в приемном файле ему же...

<?php<form class="send_form" name="MSend" action="msend.php" method="POST">
          <
table class="table_form">
                  <
tr>
                      <
td>Ваше имя:</td>
                      <
td><input type="text" name="name" size="20" maxlength="20" id="name"></td>
                  </
tr>
                  <
tr>
                      <
td>Контактный телефон:</td>
                     <
td><input type="text" name="phone" size="20" maxlength="20" id="phone"></td>
                  </
tr>
                  <
tr valign="top">
                      <
td>Текст сообщения:</td>
                      <
td><textarea name="text" rows="8" cols="25" id="text"></textarea></td>
                  </
tr>
                  <
tr valign="top">
                      <
td align="right" colspan="2"><button type="submit">Отправить форму</button></td>
                  </
tr>
                  <
tr valign="top">
                      <
td align="right" colspan="2"><font color="#006600">Для отправки сообщения необходимо <u>замолнить все поля</u></font></td>
                  </
tr>
         </
table>
?>


суть проблемы в том, что приведенному в первом сообщении коду значение параметра $item не хочет передаваться не через GET, не из базы...
Для наглядности если заинтересует вот код:

<?php 
    
include ("parts/bd.php");
if (isset(
$_GET['id'])) {$id $_GET['id']; }
if (!isset(
$id)) {$id 0;}
if (isset(
$_GET['type'])) {$type $_GET['type']; }
if (!isset(
$type)) {$type 0;}
$img '';
$title '';

$result mysql_query("SELECT * FROM pages WHERE page='msend'"$db);

if (!
$result)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору <br> <strong>Код ошибки:</strong></p>";
exit(
mysql_error());
}
if (
mysql_num_rows($result) > 0)
{
$myrow mysql_fetch_array($result); 
}
else
{echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}

if ((
$type !== 0) && ($id !== 0))
        {    
[
b]$result2 mysql_query("SELECT * FROM spares WHERE id='$id'"$db);

if (!
$result2)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору <br> <strong>Код ошибки:</strong></p>";
exit(
mysql_error());
}
if (
mysql_num_rows($result2) > 0)
{
$myrow2 mysql_fetch_array($result2); 
}
else
{echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
$img $myrow2["img"];
$title $myrow2["title"];
}

if ((
$id !== 0) && ($type == 0))
        {    
$result1 mysql_query("SELECT title, img FROM boats WHERE id='$id'"$db);

if (!
$result1)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору <br> <strong>Код ошибки:</strong></p>";
exit(
mysql_error());
}
if (
mysql_num_rows($result1) > 0)
{
$myrow1 mysql_fetch_array($result1); 
}
else
{echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
$img $myrow1["img"];
$title $myrow1["title"];
}
?>[/b]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Продажа и ремонт катеров :: <?php echo $myrow["title"]; ?></title>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta name="description" content="<?php echo $myrow["meta_d"]; ?> ">
<meta name="keywords" content="<?php echo $myrow["meta_k"]; ?> ">
</head>

<body cellpadding="0" cellspacing="0">
<table width="1024" border="0" align="center" bgcolor="#ffffff" cellpadding="0" cellspacing="0">
    
<?php include ("parts/nav_t.php"); ?>
    
    <tr>
    <td colspan="4" valign="top">
<?php echo $myrow["text"]; ?>
      <table align="center" border="0" cellpadding="0" cellspacing="0" width="760" class="table_middle">
          <?php
        
if ($id != 0)
    { 
printf('
    <caption class="table_title">Форма отправки сообщения о&nbsp;<b><u>%s</b></u></caption>
         <tr>
              <td width="400" height="303">
          
          <img width="400" height="303" src="%s"></img>
          
              </td>
                  <td valign="top" width="*">
      <form class="send_form" name="MSend" action="msend.php" method="POST">
          <table class="table_form">
                  <tr>
                      <td>Ваше имя:</td>
                      <td><input type="text" name="name" size="20" maxlength="20" id="name"></td>
                  </tr>
                  <tr>
                      <td>Контактный телефон:</td>
                     <td><input type="text" name="phone" size="20" maxlength="20" id="phone"></td>
                  </tr>
                  <tr valign="top">
                      <td>Текст сообщения:</td>
                      <td><textarea name="text" rows="8" cols="25" id="text"></textarea></td>
                  </tr>
                  <tr valign="top">
                      <td align="right" colspan="2"><button type="submit">Отправить форму</button></td>
                  </tr>
                  <tr valign="top">
                      <td align="right" colspan="2"><font color="#006600">Для отправки сообщения необходимо <u>замолнить все поля</u></font></td>
                  </tr>
         </table>
      </form>
          </td>'
$title$img);
    } 
        else
        { echo 
'
                <caption class="table_title">Форма отправки сообщения</caption>
         <tr>
            <td align="center" valign="top" width="*">
      <form class="send_form" name="MSend" action="msend.php" method="POST">
          <table class="table_form">
                  <tr>
                      <td>Ваше имя:</td>
                      <td><input type="text" name="name" size="20" maxlength="20" id="name"></td>
                  </tr>
                  <tr>
                      <td>Контактный телефон:</td>
                     <td><input type="text" name="phone" size="20" maxlength="20" id="phone"></td>
                  </tr>
                  <tr valign="top">
                      <td>Текст сообщения:</td>
                      <td><textarea name="text" rows="8" cols="25" id="text"></textarea></td>
                  </tr>
                  <tr valign="top">
                      <td align="right" colspan="2"><button type="submit">Отправить форму</button></td>
                  </tr>
                  <tr valign="top">
                      <td align="right" colspan="2"><font color="#006600">Для отправки сообщения необходимо <u>замолнить все поля</u></font></td>
                  </tr>
         </table>
      </form>
          </td> '
;
          }
          
[
b]if (isset($_POST['name']))      {$name $_POST['name']; if ($name == '') {unset($name);}}
if (isset(
$_POST['phone']))      {$phone $_POST['phone']; if ($phone== '') {unset($phone);}}
if (isset(
$_POST['text']))        {$textmes$_POST['text']; if ($textmes == '') {unset($textmes);}}
if (isset(
$_GET['item']))             {$item $_GET['item']; }
          if (isset(
$item) && isset($textmes) && isset($phone) && isset($name))
          {
    if (
$name == '') {$name '';}
    if (
$phone == '') {$phone '';}
    if (
$textmes == '') {$textmes '';}

          
$result3 mysql_query ("INSERT INTO mails (by_who,phone,item,text) VALUES ('$name', '$phone','$item','$textmes')");
if (
$result3 == 'true') {echo "<p>Сообщение успешно отправлено! Врнуться <a href='index.php'>на Главную</a></p>";}
else {echo 
"<p>Сообщение не удалось отправить!</p>";}
}

if (isset(
$textmes) && isset($phone) && isset($name) && !isset($item))
{
    if (
$name == '') {$name '';}
    if (
$phone == '') {$phone '';}
    if (
$textmes == '') {$textmes '';}
$result3 mysql_query ("INSERT INTO mails (by_who,phone,text) VALUES ('$name', '$phone','$textmes')");
if (
$result3 == 'true') {echo "<p>Сообщение успешно отправлено! Врнуться <a href='index.php'>на Главную</a></p>";}
else {echo 
"<p>Сообщение не удалось отправить!</p>";}
}
           
?>[/b]
        </tr>
</table>
                <br>
</td>
    <td width="150" class="nav_right">

<table border="0" width="200" cellpadding="0" cellspacing="0" class="table_right">
<?php include ('parts/nav_r.php'); ?>
<?php 
include ("parts/foot.php"?>

</body>

</html>

  Ответить  
 
 автор: Trianon   (14.10.2009 в 09:00)   письмо автору
 
   для: Morax   (14.10.2009 в 08:38)
 

так через форму или через ссылку?
Определитесь уж.
Код Ваш ничем не поможет, если Вы не понимаете, как он работает.

  Ответить  
 
 автор: Morax   (14.10.2009 в 15:27)   письмо автору
 
   для: Trianon   (14.10.2009 в 09:00)
 

Изначально через форму. Не получилось. попробовал ЕЩЕ И через ссылку... тоже не получилось... Как код работает я понимаю, я не понимаю как он не работает

  Ответить  
 
 автор: Morax   (14.10.2009 в 15:33)   письмо автору
 
   для: Trianon   (14.10.2009 в 09:00)
 

С начала через форму - не получилось. Попробовал через ссылку - и так не получилось... И код свой я понимаю

  Ответить  
 
 автор: Вот случайно зашел   (14.10.2009 в 10:57)   письмо автору
 
   для: Morax   (14.10.2009 в 08:38)
 

Trim ещё используй могут вместо словаввести много пробелов, а лучше регулярными выражениями, например, preg_match("\^[\w\d]{1,15}$\i", $name)
if (trim($name) == ''){...}

  Ответить  
 
 автор: morax   (14.10.2009 в 15:26)   письмо автору
 
   для: Вот случайно зашел   (14.10.2009 в 10:57)
 

Спасибо. забыл совсем.

  Ответить  
 
 автор: Morax   (14.10.2009 в 17:18)   письмо автору
 
   для: morax   (14.10.2009 в 15:26)
 

Проблема решена... К форме добавил поле с текстом только для чтения, в котором и выводил этот итем, он и передавался ПОСТом и отлично работал...

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

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