2015-03-22 2 views
0

Этот код должен проверять, зарегистрирован ли пользователь при публикации ввода, если это так, он затем проверяет, имеет ли ItemID и ID пользователя уже запись в таблице , и если да, то он обновляет эту запись, а не создает дубликат.Wordpress Form php code, представляющий пустые значения

Это выход мне нужно от него:

+--------+-------+----------+ 
| ItemID | Price | user  | 
+--------+-------+----------+ 
| 1  | 20 | 27  | 
+--------+-------+----------+ 

Это то, что я получаю:

+--------+-------+----------+ 
| ItemID | Price | user  | 
+--------+-------+----------+ 
| 0  | 0  | 27  | 
+--------+-------+----------+ 

Вот полная функция, если это необходимо: http://pastebin.com/W0UM68UT

if (is_user_logged_in()) { 

    $hf_user = get_current_user_id(); 
    $hf_username = $hf_user->user_login; 
    global $quanid; 
    $inputValue = isset($_POST[$quanid]); 
    global $newdb; 
    $newdb = new wpdb('user', 'pass', 'db', 'localhost'); 
    $retval = $newdb->get_results("SELECT * FROM $table WHERE ItemID = '$quanid' AND user = '$hf_username' "); 

if($retval > 0) 
{ 
    //If user exists, update 
    $newdb->replace($table,array(
    'ItemID' => '$quanid', 
    'Price' => $inputValue, 
    'user' => $hf_username 
     ) 
    ); 
} 
else 
{ 
     global $table; 
     global $newdb; 
     $newdb->insert( 
      $table, 
      array( 
       'ItemID' => $quanid, 
       'Price' => $inputValue, 
       'user' => $hf_username 
      ) 
     ); 
} 



} else { 
    global $error; 
    $error = "Error: You must be logged in to submit prices"; 
    return; 
} 


} 

ответ

1

не используют Глобал ...

How to avoid using PHP global objects?

Изменения ЗЕЬЕСТ отсчета для лучшей производительности:

SELECT count(1) FROM $table WHERE ItemID = '$quanid' AND user = '$hf_username' 

на ваш вопрос:

Оказывается, ваши global $quanid; и isset($_POST[$quanid]); возвращают неожиданные значения, поэтому вы ld посмотрим, где они установлены. Попробуйте использовать:

var_dump прямо под этими двумя линиями:

global $quanid; 
$inputValue = isset($_POST[$quanid]); 
var_dump($quanid); 
var_dump($inputValue ); 
var_dump($_POST); 
die; 
+0

var_dump в результате чего в этих двух извещений: 'Примечание: Попытка получить имущество не-объект в /directory/plugin.php на линии 131 строка (2) "10" '' Примечание: Не определено переменная: InputValue в /directory/plugin.php на линии 134 NULL, массив (0) {} ' строка 131:' $ hf_username = $ hf_user-> user_login; ' Строка 134:' var_dump ($ inputValue); ' – Kreation

+0

Появляется, что вы либо не тестируете d во время публикации или вашего сообщения ничего нет. Попытайтесь отключить его до тех пор, пока он не будет работать ... $ quanid = 1; $ _POST [1] = 'abc'; $ inputValue = 'abc'; затем устраните неисправность с помощью комбинации var_dump/die, чтобы определить вашу проблему. –

Смежные вопросы