2013-03-03 3 views
0

Я создал страницу профиля в php, где пользователь, используя форму, может сохранить свой номер телефона в таблице с именем profile в базе данных. Если пользователь решает изменить свой номер телефона, вы можете легко изменить его и сохранить его снова. Моя единственная проблема заключается в следующем. Предположим, что пользователь хочет удалить свой номер телефона. Если он отправляется в форму, удалите его номер (делает поле пустым) и нажмите «Сохранить», номер телефона не изменится на пустое значение и продолжит удерживать предыдущий номер. Любая идея, как изменить это, чтобы сохранить пустое значение?форму сохранить пустое значение php

Это мой код с формой:

<form action="" method="POST" >  

<?php 

if (isset($_GET['success']) === true && empty($_GET['success'])===true){ 
    echo'Profile Updated Sucessfuly'; 
    }else{ 
    if(empty($_POST) === false && empty($errors) === true){ 
    $update_data_profile = array('telephone' => $_POST['telephone']); 

      update_user_profile($session_user_id, $update_data_profile); 
     header('Location: profile_update.php?success');        
     exit(); 

    }else if (empty($errors) === false){ 
     echo output_errors($errors); 
     } 

    ?> 

Telephone<input name="telephone" type="text" size="25" value="<?php echo $user_data_profile['telephone']; ?>"/> 
<input type="submit" value="" name="submit"/> 
</form> 

И это моя функция, которая отправляет данные в профиль таблице:

function update_user_profile($user_id, $update_data_profile){ 

    $result = mysql_query("select user_id from profile where user_id = $user_id limit 1"); 

    if(mysql_num_rows($result) === 1){ 

    $update = array(); 
     array_walk($update_data_profile, 'array_sanitize'); 

    foreach($update_data_profile as $field => $data){ 
    if(!empty($data)){ 
     $update[]='`' . $field . '` = \'' . $data . '\''; 
    } 
    } 

    if(isset($update) && !empty($update)){ 

    mysql_query(" UPDATE `profile` SET " . implode(', ', $update) . " WHERE `user_id` = $user_id ") or die(mysql_error()); 
} 
    } 
    else{ 

$user_id = $update_data_profile['user_id'] ; 

if(count($update_data_profile)){ 

$columns = array(); 
$values = array(); 

    foreach($update_data_profile as $field => $data){ 
    $columns[] = $field; 
    $values[] = $data; 
    } 
} 

mysql_query(" INSERT INTO `profile` (" . implode(",", $columns) .") values ('" . implode("','", $values) . "')") or die (mysql_error()); 

} 

} 

ответ

1

Вы только обновляя поле, если данные не пусто ,

Смотрите эту строку:

if(!empty($data)){ 
+0

ok и изменить его на что? – 33528

+0

Вы можете просто удалить его; // if (! Empty ($ data)) { $ update [] = ''. $. ''= \' '. $ data. '\' '; //} – Anonymous

1

Поскольку вы явно игнорируя пустые значения с этим:

if(!empty($data)) 
+0

Как мне изменить его, чтобы принимать также пустые значения? – 33528

+0

Ну, вы можете удалить его, если хотите, чтобы все поля были пустыми. Если это просто телефон, который вы хотите разрешить пользователю, вы можете сделать что-то вроде 'if (! Empty ($ data) || $ field == 'phone')' – juco

0

Так как пустой функции() можно проверить для отсутствующих, и ложные элементы, вы можете» t просто передать это на запрос SQL. Так что, если вы действительно хотите сгенерировать запрос для этих элементов, вам нужно будет установить значение явно делать что-то вроде этого:

if (empty($data)) { 
    $update[] = "`{$field}` = ''" ; 
} else { 
    $update[] = "`{$field}` = '{$data}'" ; 
} 

Если вы пишете для PHP 5.3 или выше, можно также заменить if..else и сократите свой код с помощью тройного оператора (условное присвоение), выполнив что-то вроде этого:

$update[] = (empty($data)) ? "`{$field}` = ''" : "`{$field}` = '{$data}'"; 
Смежные вопросы