|
|
|
| Есть следующий код
<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. Заранее благодарен. | |
|
|
|
|
|
|
|
для: tim_mironov
(21.09.2005 в 23:10)
| |
В одиночных кавычках интерпретации переменных не происходит - подробности в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=130 - замените кавычки на двойные. | |
|
|
|
|
|
|
|
для: cheops
(22.09.2005 в 00:30)
| | Большое спасибо. | |
|
|
|
|
|
|
|
для: 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, $coun, yes);
?>
<?
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,$reg, no);
}
?>
</form>
|
| |
|
|
|
|
|
|
|
для: tim_mironov
(23.09.2005 в 11:09)
| | А вы выведите содержимое $var1[0] - в нём вообще что-нибудь есть?
<?php
echo $var1[0]."<br>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 13:53)
| | При вставке $var1[0] вместо $var1[1] в
echo">$var1[1]</option>";
| в первом селекте появляются следующие значения: 0, ru, ua, что полностью соответствует таблице. Я и сам бы на это погрешил, если бы второй селект не модифицировался согласно изменению первого. | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 13:53)
| | Сограждане, друзья, товарищи, я в истерике! Я уже больше суток мучаю этот кусок кода, который является всем кодом и никак не могу найти ошибку.
ПОМОГИТЕ! Не дайте возможности для посмертной надписи: "Он так и не научился PHP, пав смертью храбрых пред монитором от руки недописанного скрипта".
P.S. Если ставлю предложенную строку после </select>, то ничего не выводится, но переброс строки производится. | |
|
|
|
|
|
|
|
для: tim_mironov
(24.09.2005 в 23:23)
| | Странный запрос
его следует переписать
У вас нет нигде проверок на правильность выполнения SQL-запросов - они вас так быстро убъют :))) Проверяйте всегда результат выполнения функции mysql_query()
<?php
$coun = mysql_query("SELECT*FROM country");
if(!$coun) exit(mysql_error());
?>
|
Если вы сами не позаботитесь об обработке ошибок MySQL - об них никто не сообщит, так как Web-сервер не видит что твориться в дебрях MySQL-сервера и наоборот. | |
|
|
|
|
|
|
|
для: cheops
(25.09.2005 в 00:14)
| | Спасибо за дельные советы, но не помогает. Я отключил выполнение второго селекта, а воз и ныне там. Я шаг за шагом собрал такуюже форму в новом файле, но не использовал ее как функцию. Вопрос: "Может ли быть причиной то, что я использую эту конструкцию как функцию?" | |
|
|
|
|
|
|
|
для: tim_mironov
(25.09.2005 в 00:36)
| | Ну возможно - попробуйте перенести SQL-запрос внутрь функции. | |
|
|
|
|
|
|
|
для: cheops
(25.09.2005 в 13:46)
| | Спасибо.
Попробовал...
Не помогло... | |
|
|
|
|
|
|
|
для: 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:16)
| | Прошу прощения, напутал с error_reporting. Для вывода замечаний-подсказок нужно включить именно E_ALL. | |
|
|
|
|
|
|
|
для: кен
(28.09.2005 в 14:22)
| | Спасибо, но пробовал.
Не помогает... | |
|
|
|