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

Форум MySQL

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

 

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

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

тема: Запоминание положение формы select при перезагрузке
 
 автор: tim_mironov   (21.09.2005 в 23:10)   письмо автору
 
 

Есть следующий код
<form name="form" method="post" action="index.php"> 
    <select name="select" onChange='this.form.submit()'> 
      <?
      $coun
=mysql_query("SELECT*FROM country");
      while(
$country=mysql_fetch_array($coun))
      {
      echo(
"<option value=$country[id] onClick='this.form.submit()'");
      if (
$HTTP_POST_VARS['select']=='$country[id]' )
      echo(
"selected");
      echo(
">$country[country]</option>");
                        }
       
?>
</select> 

1. При выборе любого из выводимых значений происходит перезагрузка, но выводится всегда первая строка таблицы. Подскажите, пожалуйста, где ошибка.
2.
onClick='this.forum.submit()'
срабатывает только в Opera. В чем причина, как исправить.
P.S. Заранее благодарен.

   
 
 автор: cheops   (22.09.2005 в 00:30)   письмо автору
 
   для: tim_mironov   (21.09.2005 в 23:10)
 

'$country[id]'

В одиночных кавычках интерпретации переменных не происходит - подробности в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=130 - замените кавычки на двойные.

   
 
 автор: tim_mironov   (22.09.2005 в 09:27)   письмо автору
 
   для: cheops   (22.09.2005 в 00:30)
 

Большое спасибо.

   
 
 автор: tim_mironov   (23.09.2005 в 11:09)   письмо автору
 
   для: cheops   (22.09.2005 в 00:30)
 

Я поменял кавычки, как Вы советовали и все работало, но поскольку у меня два селекта формируются из базы, то я решил вывести это формирование в функцию, что привело к тому, что опять значение не сохраняется. Я пробовал ставить кавычки в разных вариациях, но эффект не изменялся. Может Вы сможете найти ошибку, был бы очень признателен.
<?
include("dbconnect.php");
function 
sel($var2$var$var3)
{
    if(
mysql_num_rows($var) > 0)
    {
        echo
"<select name='$var2'";
        if (
$var3=="yes") echo"onChange='this.form.submit()'";
        echo
">";
    }
    while(
$var1=mysql_fetch_row($var))
         {
        echo(
"<option value='$var1[0]'");
        if (
$HTTP_POST_VARS["$var2"]=="$var1[0]")
        echo
" selected";
        echo
">$var1[1]</option>";
        }
    echo
"</select>";
}    
?>
<form name="form" method="post" action=""> 
<?
$coun
=mysql_query("SELECT*FROM country");
sel(select$counyes);
?>
<?
if (!isset($HTTP_POST_VARS['select']))
$HTTP_POST_VARS['select']='0';
if (
$HTTP_POST_VARS['select']=='0')
echo 
"<select name='region'  disabled><option>- нет деления -</option>"
else
{
$reg mysql_query("SELECT * FROM ".$HTTP_POST_VARS['select'].""); 
sel(region,$regno);
}
?>
</form>

   
 
 автор: cheops   (23.09.2005 в 13:53)   письмо автору
 
   для: tim_mironov   (23.09.2005 в 11:09)
 

А вы выведите содержимое $var1[0] - в нём вообще что-нибудь есть?
<?php
  
echo $var1[0]."<br>";
?>

   
 
 автор: tim_mironov   (23.09.2005 в 14:46)   письмо автору
 
   для: cheops   (23.09.2005 в 13:53)
 

При вставке $var1[0] вместо $var1[1] в
echo">$var1[1]</option>";
в первом селекте появляются следующие значения: 0, ru, ua, что полностью соответствует таблице. Я и сам бы на это погрешил, если бы второй селект не модифицировался согласно изменению первого.

   
 
 автор: tim_mironov   (24.09.2005 в 23:23)   письмо автору
 
   для: cheops   (23.09.2005 в 13:53)
 

Сограждане, друзья, товарищи, я в истерике! Я уже больше суток мучаю этот кусок кода, который является всем кодом и никак не могу найти ошибку.
ПОМОГИТЕ! Не дайте возможности для посмертной надписи: "Он так и не научился PHP, пав смертью храбрых пред монитором от руки недописанного скрипта".
P.S. Если ставлю предложенную строку после </select>, то ничего не выводится, но переброс строки производится.

   
 
 автор: cheops   (25.09.2005 в 00:14)   письмо автору
 
   для: tim_mironov   (24.09.2005 в 23:23)
 

Странный запрос
"SELECT*FROM country"

его следует переписать
"SELECT * FROM country"

У вас нет нигде проверок на правильность выполнения SQL-запросов - они вас так быстро убъют :))) Проверяйте всегда результат выполнения функции mysql_query()
<?php
$coun 
mysql_query("SELECT*FROM country");
if(!
$coun) exit(mysql_error());
?>

Если вы сами не позаботитесь об обработке ошибок MySQL - об них никто не сообщит, так как Web-сервер не видит что твориться в дебрях MySQL-сервера и наоборот.

   
 
 автор: tim_mironov   (25.09.2005 в 00:36)   письмо автору
 
   для: cheops   (25.09.2005 в 00:14)
 

Спасибо за дельные советы, но не помогает. Я отключил выполнение второго селекта, а воз и ныне там. Я шаг за шагом собрал такуюже форму в новом файле, но не использовал ее как функцию. Вопрос: "Может ли быть причиной то, что я использую эту конструкцию как функцию?"

   
 
 автор: cheops   (25.09.2005 в 13:46)   письмо автору
 
   для: tim_mironov   (25.09.2005 в 00:36)
 

Ну возможно - попробуйте перенести SQL-запрос внутрь функции.

   
 
 автор: tim_mironov   (25.09.2005 в 22:09)   письмо автору
 
   для: cheops   (25.09.2005 в 13:46)
 

Спасибо.
Попробовал...
Не помогло...

   
 
 автор: кен   (28.09.2005 в 14:16)   письмо автору
 
   для: tim_mironov   (25.09.2005 в 22:09)
 

А не в том ли проблема, что в функцию передаются не строки, а необъявленные константы (значения не заключены в кавычки: sel(select, $coun, yes) вместо sel('select', $coun, 'yes')). Если после изменения в php.ini параметра error_reporting с E_ALL, на E_ALL & ~E_NOTICE вылезет сообщение о том, что нелады с константами, то так и есть. Я вообще всегда держу включённым вывод "нотаций" - в этом случае нужно все переменные и константы явно объявлять перед их использованием, зато это здорово помогает не "пасть смертью храбрых пред монитором от руки недописанного скрипта" :).

   
 
 автор: кен   (28.09.2005 в 14:22)   письмо автору
 
   для: кен   (28.09.2005 в 14:16)
 

Прошу прощения, напутал с error_reporting. Для вывода замечаний-подсказок нужно включить именно E_ALL.

   
 
 автор: tim_mironov   (28.09.2005 в 23:12)   письмо автору
 
   для: кен   (28.09.2005 в 14:22)
 

Спасибо, но пробовал.
Не помогает...

   
Rambler's Top100
вверх

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