2013-04-15 2 views
1

У меня проблема с моими данными проверки PHP. Это мой код до сих порОшибка проверки верификации PHP

$cek_saldo=mysql_query 
("SELECT * FROM t_balance"); 

     while ($data_cek = mysql_fetch_array($cek_saldo)); 
     { 
      $b_id = $data_cek['badge_id']; 
      $mon = $data_cek['month']; 
      $bal = $data_cek['balance_type']; 
     } 

     if ($b_id == '$badge_id' AND $mon == '$date_month' AND $b_type == '$jns_saldo') 
     { 
      echo "<div class='emp_err warn'>Balance for this month has been added before.</div>"; 
     } 

     else 
     { 
      if($_POST) 
      { 
       $query = "INSERT INTO t_balance(badge_id, balance_amount, month, balance_type, date_transaction) 
         VALUES ('$badge_id', '$saldo', '$bulan', '$jns_saldo', '$date_transaction') 
       "; 
       $hasil = mysql_query($query); 

       if($hasil) 
       { 

        echo "<div class='emp_err success'>Balance transaction successfully added.</div>"; 
       } 
       else 
       { 

        echo "<div class='emp'>Gagal menambahkan saldo.</div>"; 
       } 
      } 
     } 

Правило:
Tabungan ваджибом можно подать в течение 1 раз в месяц. Поэтому, если дважды, это даст ошибку: «Баланс за этот месяц был добавлен раньше».

Tabungan Tambahan может быть отправлено более 1 раз в месяц. Поэтому, если вы отправляете более одного раза, оно будет сохранено.

У кого-нибудь есть предложения?

+0

Возникли ли ошибки? Каково поведение, которое вы испытываете и чего вы ожидаете? Нужно прояснить некоторые разъяснения. –

+0

Майкл, мне нужно сделать это, чтобы предотвратить передачу данных дважды, если есть те же данные с badge_id, месяц и тип баланса. Это только для правил Табунгана ваджиба. Для Tabungan tambahan он может быть отправлен много раз –

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://www.brightmeup.info/article.php?a_id=2). –

ответ

0
if ($b_id == "$badge_id" AND $mon == "$date_month" AND $b_type == "$jns_saldo") 
     { 
      echo "<div class='emp_err warn'>Balance for this month has been added before.</div>"; 
     } 

Ваш код не удалось из-за одинарные кавычки в сравнении с использованием переменных попытаться узнать разницу между одиночными и двойными кавычками строк в PHP

+0

то, что я хочу сделать, это предотвратить сохранение данных с сохранением баланса: tabungan wajib. если tabungan tambahan это позволит много раз сэкономить –

0

Эта проверка не будет никакой работы Причина в том, вы выбираете несколько строк из базы данных и назначения только последний на е к $b_id .. $mon и т.д.

и вы используете single quotes для сравнения

РАЗРЕШЕНИЕ

  1. выберите данные, основанные на каком-то идентификаторе, если вы можете

    $cek_saldo=mysql_query("SELECT * FROM t_balance where id = 'someid'"); 
    
    while ($data_cek = mysql_fetch_array($cek_saldo)); 
    { 
        $b_id = $data_cek['badge_id']; 
        $mon = $data_cek['month']; 
        $bal = $data_cek['balance_type']; 
    } 
    
  2. установлен флаг ошибки

    $error = false; 
    
    while ($data_cek = mysql_fetch_array($cek_saldo)); 
    { 
        $b_id = $data_cek['badge_id']; 
        $mon = $data_cek['month']; 
        $bal = $data_cek['balance_type']; 
        if($b_id == $badge_id AND $mon == $date_month AND $b_type == $jns_saldo) 
        { 
         $error = true; 
         break 
        } 
    } 
    if($error) 
    { 
        echo "<div class='emp_err warn'>Balance for this month has been added before.</div>"; 
    
    } 
    

Надеется, что это помогает

0

Вам не нужно quote.I предположить $badge_id$date_month$jns_saldo приходят из вашей формы с $ _POST

if ($b_id == $badge_id AND $mon == $date_month AND $b_type == $jns_saldo) 
0

Используйте это.

$cek_saldo= mysql_query("SELECT * FROM t_balance"); 

    while ($data_cek = mysql_fetch_array($cek_saldo)); 
    { 
     $b_id = $data_cek['badge_id']; 
     $mon = $data_cek['month']; 
     $bal = $data_cek['balance_type']; 

     if ($b_id == "$badge_id" && $mon == "$date_month" && $b_type == "$jns_saldo") 
     { 
      echo "<div class='emp_err warn'>Balance for this month has been added before.</div>"; 
     } 
     else 
     { 
      if($_POST) 
      { 
       $query = "INSERT INTO t_balance(badge_id, balance_amount, month, balance_type, date_transaction) 
         VALUES ('".$badge_id."', '".$saldo."', '".$bulan."', '".$jns_saldo."', '".$date_transaction."')"; 
       $hasil = mysql_query($query); 

       if($hasil) 
       { 

        echo "<div class='emp_err success'>Balance transaction successfully added.</div>"; 
       } 
       else 
       { 

        echo "<div class='emp'>Gagal menambahkan saldo.</div>"; 
       } 
      } 
     } 
    } 
Смежные вопросы