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

Форум MySQL

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

 

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

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

тема: новая компания
 
 автор: liberty   (15.03.2013 в 08:51)   письмо автору
 
 

Добрый день!
Пытаюсь сделать форму для ввода новой компании.
В начале пользователь выбирает свой регион.
<
tr>
  <td width="200" valign="top"><strong>Регион:</td>
  <td width="550" align="left" style='background-color:#f0f0f0'>
    <select>
 <?php
    
///   узнаем регион
$result_region mysql_query("SELECT * FROM region"$db);
while (
$myrow_region mysql_fetch_array($result_region)) {
?>
  <option><?php echo $myrow_region['name']; ?></option>
<?php
}
?>
  </select>
  </td>
</tr>

Выбрав регион выводим районы этого региона
<tr>
  <td width="200" valign="top"><strong>Район:</td>
  <td width="550" align="left" style='background-color:#f0f0f0'>
    <select>
 <?php
    
///   узнаем area
$id_area $myrow_region[id_area];
$result_area mysql_query("SELECT * FROM area WHERE id_area='" mysql_real_escape_string($id_area) . "'"$db);
while (
$myrow_area mysql_fetch_array($result_area)) {
?>
  <option><?php echo $myrow_area['name']; ?></option>
<?php
}
?>
  </select>
  </td>
</tr>

Районы не выбираются. Почему?

  Ответить  
 
 автор: liberty   (16.03.2013 в 09:28)   письмо автору
 
   для: liberty   (15.03.2013 в 08:51)
 

надеюсь, кто-нибудь укажет на ошибку.

  Ответить  
 
 автор: Sfinks   (16.03.2013 в 12:11)   письмо автору
 
   для: liberty   (16.03.2013 в 09:28)
 

Если Вы покажете достаточно исходных данных для ответа, то обязательно кто-нибудь укажет.

Пока что вы сказали примерно следующее:

Пытаюсь сварить борщ .... картошка выглядит вот-так, капуста выглядит вот так ... Почему борщ не вкусный?

  Ответить  
 
 автор: liberty   (16.03.2013 в 21:06)   письмо автору
 
   для: Sfinks   (16.03.2013 в 12:11)
 

попробую. выбрав регион, надо показать следующей форме что надо выбрать город из выбранного региона.
но как?

  Ответить  
 
 автор: Sfinks   (16.03.2013 в 21:47)   письмо автору
 
   для: liberty   (16.03.2013 в 21:06)
 

И где тут форма?
И что такое "<option><?php echo $myrow_region['name']; ?></option>" без атрибута value?
И какое вообще отношение имеет это все к MySQL? С запросами вроде нет проблем.

  Ответить  
 
 автор: liberty   (17.03.2013 в 00:52)   письмо автору
 
   для: Sfinks   (16.03.2013 в 21:47)
 

вот отсюда
<tr> 
  <td width="200" valign="top"><strong>Район:</td> 
  <td width="550" align="left" style='background-color:#f0f0f0'> 
    <select> 
 <?php 
    
///   узнаем area 
$id_area $myrow_region[id_area]; 
$result_area mysql_query("SELECT * FROM area WHERE id_area='" mysql_real_escape_string($id_area) . "'"$db); 
while (
$myrow_area mysql_fetch_array($result_area)) { 
?> 
  <option><?php echo $myrow_area['name']; ?></option> 
<?php 

?> 
  </select> 
  </td> 
</tr>

$id_area = $myrow_region[id_area]; - известен.
почему не выбирает?
вроде все верно

  Ответить  
 
 автор: Sfinks   (17.03.2013 в 09:45)   письмо автору
 
   для: liberty   (17.03.2013 в 00:52)
 

> $id_area = $myrow_region[id_area]; - известен.
Кому известен???
Вы вообще не представляете как это все работает?

PHP формирует html страницу и отдает ее браузеру. Все! На этом работа пхп завершена! Скрипт умер! Дальше можете хоть что делать на странице - пхп об этом не узнает! То что у вас все это (PHP и HTML) написано вперемешку - не означает, что оно будет работать одновременно!
После получения вашей страницы посмотрите ее исходный код и осознайте наконец, что то что вы видите - это результат работы уже умершего пхп скрипта.
они в принципе не могут работать одновременно! PHP выполняется на сервере, HTML+JS отображаются на клиенте (в браузере). А между ними - HTTP-протокол.

Чтобы скрипт узнал о каких-то действиях пользователя, ему нужно об этом дополнительно сообщить - Выполнить сабмит формы или AJAX-запрос.
Но при этом это будет не тот же самый экземпляр скрипта, который уже знает какие-то данные и переменные, а новый, который ничего сам по себе не знает. И все что ему необходимо знать, ему нужно передать из формы методами POST или GET, о которых вам уже тоже говорили.

И результат работы скрипта будет передан браузеру и его нужно будет обработать. Если запрос был сгенерирован сабмитом формы, то результатом должен быть полный код страницы и браузер ее сам перересует. Если запрос был произведен по AJAX, то результат возможен в разных вариантах и его необходимо обрабатывать на клиенте JavaScript'ом.

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

  Ответить  
 
 автор: Sfinks   (17.03.2013 в 11:40)   письмо автору
 
   для: liberty   (17.03.2013 в 00:52)
 

Еще раз повторюсь, что это не имеет отношения к MySQL!

Но раз уж тут начали, то я закончу.
Приведу максимально упрощенный пример:
<!-- Участок кода, который выводится всегда -->
<?php
  error_reporting
(E_ALL E_NOTICE);
  
print_r($_POST)
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<select name="gorod">
  <option value="g1"<?=($_POST['gorod']=='g1'?' selected':'')?>>город 1</option>
  <option value="g2"<?=($_POST['gorod']=='g2'?' selected':'')?>>город 2</option>
  <option value="g3"<?=($_POST['gorod']=='g3'?' selected':'')?>>город 3</option>
</select>

<?php
  
if(key_exists('gorod',$_POST))
  { 
// Участок кода, который выполняется только если выбран город
    
echo'<br><select name="firm">'// это выводится не зависимо от того, какой город выбран
    
switch($_POST['gorod'])         // а это условный вывод
    
{
      case 
'g1':?>
        <option value="f1">такси</option>
        <option value="f2">мусоровозы</option>
        <option value="f3">скорая</option>
      <?php break;
      case 
'g2':?>
        <option value="f1">каляски</option>
        <option value="f2">санки</option>
        <option value="f3">велики</option>
      <?php break;
      case 
'g3':?>
        <option value="f1">солнце</option>
        <option value="f2">ветер</option>
        <option value="f3">дождь</option>
      <?php break;
      default:
    }
    echo
'</select>'// это выводится не зависимо от того, какой город выбран
  
// Конец участка кода, который выполняется только если выбран город
?>
<br><input type="submit" value="Нажми меня"></form>

Запишите этот код в файл с расширением .php, закиньте на сервер и разбирайтесь. Щелкайте, перезагружайте, смотрите "исходный код страницы" в браузере и анализируйте.

Если и с этим не разберетесь, то я умываю руки.
А если разберетесь, то вам не составит труда усложнить этот пример для вашей конкретной задачи.

  Ответить  
 
 автор: Sfinks   (17.03.2013 в 11:56)   письмо автору
 
   для: liberty   (17.03.2013 в 00:52)
 

Да, и еще.....

Вам необходимо понять, что следующие 4 фрагмента кода выглядят по разному, но АБСОЛЮТНО ИДЕНТИЧНЫ по результату!!!
<select name="gorod">
  <option value="g1">город 1</option>
  <option value="g2">город 2</option>
  <option value="g3">город 3</option>
</select>

<?php
  
echo '<select name="gorod">
  <option value="g1">город 1</option>
  <option value="g2">город 2</option>
  <option value="g3">город 3</option>
</select>'
;  
?>

<select name="gorod">
<?php
  
for($i=1;$i<=3;$i++){
    echo 
'<option value="g'.$i.'">город '.$i.'</option>';
  }
?>
</select>

<select name="gorod">
<?php
  $num 
= array(1,2,3);
  foreach(
$num as $i){
?>
  <option value="g<?=$i?>">город <?=$i?></option>
<?php
  
}
?>
</select>

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

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