SELECTED и редактирование базы?

Ответить
mkden
Сообщения: 96
Зарегистрирован: 08.05.2010
КОРОЧЕ ВОТ КУСОК КОДА РЕДАКТИРОВАНИЯ СТРАНЫ ЮЗЕРА

Код: Выделить всё

<? 
function show_form(){ 
        // подключаем файл с настройками подключения к БД 
     include ("bd.php");

        //делаем запрос к БД, на данный момент на следующие две строчки не стоит обращать внимание, объясню их потом, посокльку на данном этапе они еще не используются. 
        $result = mysql_query("SELECT * FROM yyy WHERE id = '".$_GET['id']."';", $db); 
        $row = mysql_fetch_array($result); 
?> 
<!-- далее идет обычный HTML --> 
<form action="" method="post"> 
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760"> 

<tr bgcolor="#B0ADC3"> 
  <td><p>Страна</p></td> 
</tr> 
<tr bgcolor="#ffffff"> 
  <td> 
<select name="country" >

<?php

  function gg_country()
  {
    return array(
  "RU"         => "Россия",
 "UA"         => "Украина",
"BY"         => "Беларусь",
"GE"         => "Грузия",
"KZ"         => "Казахстан",
"US"         => "США",
"FR"         => "Франция",
"DE"         => "Германия",
"PL"         => "Польша",
"RO"         => "Румыния"
    
    );
  }


$lcountry = gg_country();
foreach ($lcountry as $country => $description) {
        echo "<option " . ($country == $row['country'] ? "selected='selected'" : "") . " value='{$country}'>{$description}</option>";
    }
?>
</select> 
  </td> 
</tr> 




<tr> 
  <td bgcolor="#1F2760" align="right"> 
      <input type="hidden" name="id" value="<?=$_GET['id'];?>"> 
      <input type="submit" value="отправить" name="edit"> 
  </td> 
</tr> 
</table> 
</form> 
<? 
} 
function complete(){ 
      // подключаем файл с настройками подключения - это мы уже знаем. 
      include ("bd.php");

      // делаем запрос к БД в котором пытаемся вытащить страничку с указаным id. На данный момент мы не сделали еще ни одной страницы, посему запрос вернет пустой ряд. 
      $result = mysql_query("SELECT * FROM yyy WHERE id = '".$_POST['id']."';", $db); 

      // перекидываем данные из MySQL в пхпшный ассоциативный массив 
      $row = mysql_fetch_array($result); 

      // проверяем не пуст ли элемент массива id. Если пуст, значит вставляем наши данные в БД 
      if(empty($row['id'])) 
            $query = "INSERT INTO yyy (country) VALUES (
'".mysql_real_escape_string($_POST['country'])."',

      // а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем 
      else 
            $query = "UPDATE lgsl SET 

country = '".mysql_real_escape_string($_POST['country'])."'
                     WHERE id = '".$_POST['id']."';"; 

      // непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем) 
      mysql_query($query, $db); 

      // ну и просто выводим крикливую надпись, что скрипт отработал 
      echo '<h3>Данные обновлены</h3>'; 
} 

if($_POST['edit']) complete(); 
if($_GET['id']) show_form(); 

?>

Вопрос почему после редактирования данные не обновляються?
Но если поменять select на

Код: Выделить всё

<input type="text" name="country" value="<?=htmlspecialchars(stripslashes($row['country']));?>" class="enter" size="79">
То все ок где ошибка?
p.s: В php я нуб!!! )

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Ничего странного, код не валидный.
Вижу ошибку вот в этой строке

Код: Выделить всё

'".mysql_real_escape_string($_POST['country'])."',
- или продолжай запрос, или закрывай его.
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

mkden
Сообщения: 96
Зарегистрирован: 08.05.2010
Все разобрался проблемма была не в этом!)
p.s: В php я нуб!!! )

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Странно, хочешь сказать, что с подобными ошибками все работает? Или просто криво выложил код?
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

mkden
Сообщения: 96
Зарегистрирован: 08.05.2010
да все прекрасно работает единственное запитой нету после '".mysql_real_escape_string($_POST['country'])."'
p.s: В php я нуб!!! )

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Поправил свой пост, ибо второй - была не ошибка, так как меня сбила первая ошибка. Однако первая запись - не корректная. Возможно криво выложил. Так работать не должно! Вместо запятой там как минимум должно быть так

Код: Выделить всё

'".mysql_real_escape_string($_POST['country'])."')";
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Ответить