Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Формы
Форумы портала PHP.SU » PHP » Программирование на PHP » Формы

Страниц (1): [1]
 

1. den_y - 16 Марта, 2007 - 15:04:07 - перейти к сообщению
Как ссделать так чтоб вместо php файла вызвывать функцию php!
Т. е вместо <form action='test.php' method='post'> "test.php" можно было вписать функцию, я вписывал, у меня ошибка!!
2. evgenijj - 16 Марта, 2007 - 17:15:00 - перейти к сообщению
Как это? Вопросы у тебя - один мудренее другого.

файл test.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once "functions.php";
  4. myfunct("Hello, World!");
  5. ?>
  6.  

Файл functions.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function myfunct( $message )
  4. {
  5.     echo $message;
  6. }
  7.  
  8. function connectDB()
  9. {
  10.     ........................
  11. }
  12.  
  13. .......................
  14. ?>
  15.  
3. den_y - 16 Марта, 2007 - 17:41:55 - перейти к сообщению
evgenijj пишет:
Как это? Вопросы у тебя - один мудренее другого.

файл test.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once "functions.php";
  4. myfunct("Hello, World!");
  5. ?>
  6.  

Файл functions.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function myfunct( $message )
  4. {
  5.     echo $message;
  6. }
  7.  
  8. function connectDB()
  9. {
  10.     ........................
  11. }
  12.  
  13. .......................
  14. ?>
  15.  

Извините что иногда задаю некорректные вопросы! Я просто начинающий в php. Вроде похож на с++, который более менее хорошо знаю, но всеравно, сложновато пока он мне даетсяУлыбка!!
Вообщем не буду задавать множество маленьких вопросов, а задам один большо!! В принципе мне нужно то чтоб этот select правильно работал, о котором я неоднократно спрашивал и, наверное, уже успел всех достать Растерялся .
Вот код, и я не знаю что с ним сделать чтоб он заработал! Смысл в том что я выбираю в select значение,из базы выбирается в зависимости от него что надо, но дело в том что скрипт опять грузиться а, а значение которое я выбрал в select стоит совсем другое, а не которое я выбрал! Огорчение


\n\n(Добавление)
den_y пишет:
evgenijj пишет:
Как это? Вопросы у тебя - один мудренее другого.

файл test.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. require_once "functions.php";
  4. myfunct("Hello, World!");
  5. ?>
  6.  

Файл functions.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function myfunct( $message )
  4. {
  5.     echo $message;
  6. }
  7.  
  8. function connectDB()
  9. {
  10.     ........................
  11. }
  12.  
  13. .......................
  14. ?>
  15.  

Извините что иногда задаю некорректные вопросы! Я просто начинающий в php. Вроде похож на с++, который более менее хорошо знаю, но всеравно, сложновато пока он мне даетсяУлыбка!!
Вообщем не буду задавать множество маленьких вопросов, а задам один большо!! В принципе мне нужно то чтоб этот select правильно работал, о котором я неоднократно спрашивал и, наверное, уже успел всех достать Растерялся .
Вот код, и я не знаю что с ним сделать чтоб он заработал! Смысл в том что я выбираю в select значение,из базы выбирается в зависимости от него что надо, но дело в том что скрипт опять грузиться а, а значение которое я выбрал в select стоит совсем другое, а не которое я выбрал! Огорчение
Этот скрипт должен называться как test1.php
<?
$tip_vra4ei = array( "Терапевт"=>"Терапевт", "Хирург"=>"Хирург", "Невропатолог"=>"Невропатолог");
echo "<form action='test1.php' method='post'>";
echo "<p>Список врачей</p>";
echo "<SELECT NAME='vrachi_1php' onChange='this.form.submit();'>";

foreach ( $tip_vra4ei as $key =>$value )
{

if ($vrachi_1php==$key) echo "<option 'selected' value='".$key."'>".$value."</option>";
else echo "<option value='".$key."'>".$value."</option>";
}

echo "</select>";

echo "</form>" ;



?>

4. evgenijj - 16 Марта, 2007 - 18:46:04 - перейти к сообщению
Да, тяжело с тобой. Давай попробуем разобраться. Когда пользователь набирает в адресной строке браузера адрес (http://someserver.com/index.html), браузер запрашивает у сервера соответствующий документ (index.html), а сервер (Apache), найдя у себя этот документ, отдает браузеру. Если расширение запрашиваемого файл php, Apache отдает этот файл на выполнение PHP. PHP выполняет этот скрипт, а результат выполнения (сгенерированный html) отдает серверу, а тот, в свою очередь - клиенту (браузеру).

Как видишь, php-скрипт - это абсолютно независимая единица. Этому скрипту доступны только те переменные, которые были тобой определены внутри этого скрипта, плюс некоторое количество предопределенных переменных (например $_SERVER["DOCUMENT_ROOT"]). Немного другая ситуация, если скрипт - обработчик формы, т.е. имя файла, содержащего скрипт, указано в качестве значения атрибута action тега form:

<form name='myform' action='test.php' method='post'>
<input type="text" name="first" value="" />
<input type="text" name="second" value="" />
<input type="text" name="third" value="" />
<input type="submit" name="mysubmit" value="Отправить" />
</form>

В этом случае, после отправки формы, внутри скрипта test.php будут доступны следующие переменные: $_POST["first"], $_POST["second"], $_POST["third"], $_POST["mysubmit"]. Если пользователь ввел значения "первый", "второй", "третий", то
$_POST["first"] = "первый"
$_POST["second"] = "второй"
$_POST["third"] = "третий"
$_POST["mysubmit"] = "Отправить"
Но это только в том случае, если данные формы были отправлены. Если просто набрать в адресной строке браузера http://someserver[dot]com/test.php переменные $_POST["first"], $_POST["second"], $_POST["third"], $_POST["mysubmit"] будут неопределены.

Теперь о том, как работает скрипт, который я приводил ранее:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.  
  4.  $language = array( 1 => "JavaScript", 2 => "PHP", 3 => "Perl" );
  5.  
  6.  if ( isset( $_POST["course"] ) )
  7.  {  
  8.         echo "<h2>Вы выбрали курс:</h2>";
  9.         echo "<form name='myform' action='".$_SERVER["PHP_SELF"]."' method='POST'>";
  10.         echo "<select name='course' onChange='this.form.submit()'>";     
  11.         foreach ( $language as $key => $value )
  12.         {
  13.                 if ( $_POST["course"] == $key )
  14.                         echo "<option value='".$key."' 'selected'>".$value."</option>";
  15.                 else
  16.                         echo "<option value='".$key."'>".$value."</option>";
  17.         }
  18.         echo "</select>";
  19.         echo "</form>";
  20.          
  21.         $query = "SELECT name, surname FROM students WHERE course=".$_POST["course"];
  22.         $res = mysql_query( $query );
  23.         echo "<p >Слушатели курса:</p>";
  24.         echo "<ul>";
  25.         while ( $student = mysql_fetch_array( $res ) )
  26.         {
  27.                 echo "<li>".$student["name"]." ".$student["surname"]."</li>";
  28.         }
  29.         echo "</ul>";    
  30.  }
  31.  else
  32.  {
  33.         echo "<h2>Доступные курсы:</h2>";
  34.         echo "<form name='myform' action='".$_SERVER["PHP_SELF"]."' method='POST'>";
  35.         echo "<select name='course' onChange='this.form.submit()'>";
  36.         echo "<option value='0'>Выберите:</option>";
  37.         foreach ( $language as $key => $value )
  38.         {
  39.                 echo "<option value='".$key."'>".$value."</option>";
  40.         }
  41.         echo "</select>";
  42.         echo "</form>";
  43.  }
  44.          
  45.  ?>
  46.  


Внутри скрипта мы определяем массив $language. Если пользователь еще не заполнил форму (проверка if), скрипт выводит в браузер форму:

<h2>Доступные курсы:</h2>
<form name='myform' action='test.php' method='POST'>
<select name='course' onChange='this.form.submit()'>
<option value='0'>Выберите:</option>
<option value='1'>JavaScript</option>
<option value='2'>PHP</option>
<option value='3'>Perl</option>
</select>
</form>

Выбран первый элемент - по умолчанию. Здесь нет кнопки отправки - отправка данных осуществляется с помощью JavaScript. Как только пользователь выберет курс - onChange='this.form.submit()'. В данном случае форма и обработчик формы расположены в одном файле (но могут быть и в разных). Как только данные формы были отправлены, внутри скрипта test.php, который обрабатывает данные из этой формы, будет доступна переменная $_POST["course"]. Проверка (оператор if) устанавливает этот факт и скрипт выводит в браузер следующий код (запрашивая при этом данные из базы данных):

<h2>Вы выбрали курс:</h2>
<form name='myform' action='test.php' method='POST'>
<select name='course' onChange='this.form.submit()'>
<option value='1'>JavaScript</option>
<option value='2' 'selected'>PHP</option>
<option value='3'>Perl</option>
</select>
</form>
<p >Слушатели курса:</p>
<ul>
<li>Иван Иванов</li>
<li>Петр Петров</li>
</ul>
5. den_y - 16 Марта, 2007 - 19:31:07 - перейти к сообщению
evgenijj пишет:
Да, тяжело с тобой. Давай попробуем разобраться. Когда клиент набирает в адресной строке браузера адрес (http://someserver.com/index.html), браузер запрашивает у сервера соответствующий документ (index.html), а сервер (Apache), найдя у себя этот документ, отдает браузеру. Если расширение запрашиваемого файл php, Apache отдает этот файл на выполнение PHP. PHP выполняет этот скрипт, а результат выполнения (сгенерированный html) отдает серверу, а тот, в свою очередь - клиенту (браузеру).

Как видишь, php-скрипт - это абсолютно независимая единица. Этому скрипту доступны только те переменные, которые были тобой определены внутри этого скрипта, плюс некоторое количество предопределенных переменных (например $_SERVER["DOCUMENT_ROOT"]). Немного другая ситуация, если скрипт - обработчик формы, т.е. имя файла, содержащего скрипт, указано в качестве значения атрибута action тега form:

<form name='myform' action='test.php' method='post'>
<input type="text" name="first" value="" />
<input type="text" name="second" value="" />
<input type="text" name="third" value="" />
<input type="submit" name="mysubmit" value="Отправить" />
</form>

В этом случае, после отправки формы, внутри скрипта test.php будут доступны следующие переменные: $_POST["first"], $_POST["second"], $_POST["third"], $_POST["mysubmit"]. Если пользователь ввел значения "первый", "второй", "третий", то
$_POST["first"] = "первый"
$_POST["second"] = "второй"
$_POST["third"] = "третий"
$_POST["mysubmit"] = "Отправить"
Но это только в том случае, если данные формы были отправлены. Если просто набрать в адресной строке браузера http://someserver[dot]com/test.php переменные $_POST["first"], $_POST["second"], $_POST["third"], $_POST["mysubmit"] будут неопределены.

Теперь о том, как работает скрипт, который я приводил ранее:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.  
  4.  $language = array( 1 => "JavaScript", 2 => "PHP", 3 => "Perl" );
  5.  
  6.  if ( isset( $_POST["course"] ) )
  7.  {  
  8.         echo "<h2>Вы выбрали курс:</h2>";
  9.         echo "<form name='myform' action='".$_SERVER["PHP_SELF"]."' method='POST'>";
  10.         echo "<select name='course' onChange='this.form.submit()'>";     
  11.         foreach ( $language as $key => $value )
  12.         {
  13.                 if ( $_POST["course"] == $key )
  14.                         echo "<option value='".$key."' 'selected'>".$value."</option>";
  15.                 else
  16.                         echo "<option value='".$key."'>".$value."</option>";
  17.         }
  18.         echo "</select>";
  19.         echo "</form>";
  20.          
  21.         $query = "SELECT name, surname FROM students WHERE course=".$_POST["course"];
  22.         $res = mysql_query( $query );
  23.         echo "<p >Слушатели курса:</p>";
  24.         echo "<ul>";
  25.         while ( $student = mysql_fetch_array( $res ) )
  26.         {
  27.                 echo "<li>".$student["name"]." ".$student["surname"]."</li>";
  28.         }
  29.         echo "</ul>";    
  30.  }
  31.  else
  32.  {
  33.         echo "<h2>Доступные курсы:</h2>";
  34.         echo "<form name='myform' action='".$_SERVER["PHP_SELF"]."' method='POST'>";
  35.         echo "<select name='course' onChange='this.form.submit()'>";
  36.         echo "<option value='0'>Выберите:</option>";
  37.         foreach ( $language as $key => $value )
  38.         {
  39.                 echo "<option value='".$key."'>".$value."</option>";
  40.         }
  41.         echo "</select>";
  42.         echo "</form>";
  43.  }
  44.          
  45.  ?>
  46.  


Внутри скрипта мы определяем массив $language. Если пользователь еще не заполнил форму (проверка if), скрипт выводит в браузер форму:

<h2>Доступные курсы:</h2>
<form name='myform' action='test.php' method='POST'>
<select name='course' onChange='this.form.submit()'>
<option value='0'>Выберите:</option>
<option value='1'>JavaScript</option>
<option value='2'>PHP</option>
<option value='3'>Perl</option>
</select>
</form>

Выбран первый элемент - по умолчанию. Здесь нет кнопки отправки - отправка данных осуществляется с помощью JavaScript. Как только пользователь выберет курс - onChange='this.form.submit()'. В данном случае форма и обработчик формы расположены в одном файле (но могут быть и в разных). Как только данные формы были отправлены, внутри скрипта test.php, который обрабатывает данные из этой формы, будет доступна переменная $_POST["course"]. Проверка (оператор if) устанавливает этот факт и скрипт выводит в браузер следующий код (запрашивая при этом данные из базы данных):

<h2>Вы выбрали курс:</h2>
<form name='myform' action='test.php' method='POST'>
<select name='course' onChange='this.form.submit()'>
<option value='1'>JavaScript</option>
<option value='2' 'selected'>PHP</option>
<option value='3'>Perl</option>
</select>
</form>
<p >Слушатели курса:</p>
<ul>
<li>Иван Иванов</li>
<li>Петр Петров</li>
</ul>

Огромное спсибо, до меня кажется дошло!! РадостьРадостьРадость

 

Powered by ExBB FM 1.0 RC1