Codeigniter проверяет, существуют ли значения в базе данных - PullRequest
0 голосов
/ 08 октября 2011

Я хочу сравнить значения с тем, что в базе данных.

Это моя база данных

            Id  xone     xtwo   yone    ytwo
            1   519      819    64      364

Имя базы данных: num.

 public function coord_check() {

               $X = $this->input->post('X');
        $Xm = $this->input->post('Xm');
         $Y = $this->input->post('Y');
         $Ym = $this->input->post('Ym');

        $query = $this->db->where('xone',$X)->select('xone')->get('num');
         $query2 = $this->db->where('xtwo',$Xm)->select('xtwo')->get('num');
         $query3 = $this->db->where('yone',$Y)->select('yone')->get('num');
         $query4 = $this->db->where('ytwo',$Ym)->select('ytwo')->get('num');

         if($query->num_rows() > 0 && $query->num_rows() > 0 )        {

             echo "xerror";
                               }
         elseif($query3->num_rows() > 0 || $query4->num_rows() > 0 )        {

             echo "yerror";  }

               else{
                   echo "noerror";
               }



 } 

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

Что я действительно хочу, это сравнить, скажем, если $xm находится в диапазоне значений базы данных xone и xtwo.Это возможно?Большое спасибо заранее ..

Ответы [ 3 ]

3 голосов
/ 08 октября 2011

Я не уверен, следите ли вы за архитектурой MVC или нет, потому что ваш пост действительно сбивает с толку.

Тем не менее, это то, что я бы сделал - в Codeigniter. Я постараюсь соответствовать вашему стилю кода как можно лучше. Также есть множество способов сделать это, некоторые могут быть более эффективными, чем это, но это сделает работу. Я никогда не запускал этот скрипт, поэтому он может содержать ошибки или потребовать небольшой отладки:

<?php
/* Controller
*************************/

class Something extends CI_Controller {

function coord_check() {

    //Form Validation -- if necessary
    $this->form_validation->set_rules('X', 'X', 'required|xss_clean');
    $this->form_validation->set_rules('Xm', 'Y', 'require|xss_clean'); 
    $this->form_validation->set_rules('Y', 'Y', 'require|xss_clean'); 
    $this->form_validation->set_rules('Ym', 'Ym', 'require|xss_clean'); 

    if ($this->form_validation->run() == FALSE) {
        $this->load->view('your_view'); 
    } else {
        $this->load->model('num');

        $X = $this->input->post('X');
        $Xm = $this->input->post('Xm');
        $Y = $this->input->post('Y');
        $Ym = $this->input->post('Ym');

        $X_result = $this->num->check_if_coord_thingy_exists('xone', $X);
        $Xm_result = $this->num->check_if_coord_thingy_exists('xtwo', $Xm);
        $Y_result = $this->num->check_if_coord_thingy_exists('yone', $Y);
        $Ym_result = $this->num->check_if_coord_thingy_exists('ytwo', $Ym);

        /*
        if ($X_result == TRUE && $Xm_result == TRUE && $Y_result == TRUE && $Ym_result == TRUE) {
            //all things inputed match database
        } else {
            //all values don't match database
        }


        if ($X_result == TRUE && $Xm_result == TRUE) :
            //all X things inputed match database
                    endif;

        if ($Y_result == TRUE && $Ym_result == TRUE) :
            //all X things inputed match database
                    endif; */


        $data['X_repsonse'] = ($X_result == TRUE ? 'X exist' : 'X doesn\'t exist';
        $data['Xm_repsonse'] = ($Xm_result == TRUE ? 'Xm exist' : 'Xm doesn\'t exist';
        $data['Y_repsonse'] = ($Y_result == TRUE ? 'Y exist' : 'Y doesn\'t exist';
        $data['Ym_repsonse'] = ($Ym_result == TRUE ? 'Ym exist' : 'Ym doesn\'t exist';

        $this->load->view('your_view', $data);
    }
}
?>

<?php
/* Model
*************************/  

class Num extends CI_Model {

    function check_if_coord_thingy_exists($value, $variable) {
        $this->db->select($value);
        $this->db->where($value, $variable);

        $query = $this->db->get('num');

        if ($query->num_rows() > 0) {
            //Value exists in database
            return TRUE;
        } else {
            //Value doesn't exist in database
            return FALSE;
        }
    }   
}

?>

<?php 
/* View -> your_view.php
*************************/  

    echo validation_errors('<div class="message">', '</div>');

    if (!empty($X_response)) echo '<div class="message">X: '.$X_response.'</div>';
    if (!empty($X_response)) echo '<div class="message"Xm: >'.$Xm_response.'</div>';
    if (!empty($X_response)) echo '<div class="message">Y: '.$Y_response.'</div>';
    if (!empty($X_response)) echo '<div class="message">Ym: '.$Ym_response.'</div>';

?>

<?php echo form_open('something/coord_check'); ?>

<?php echo form_label('First Coord', 'X'); ?><br>
<?php $first_coord = array('name' => 'X', 'id' => 'X', 'value' => set_value('X')); ?>
<?php echo form_input($first_coord); ?><br>

<?php echo form_label('Second Coord', 'Xm'); ?><br>
<?php $second_coord = array('name' => 'Xm', 'id' => 'Xm', 'value' => set_value('Xm')); ?>
<?php echo form_input($second_coord); ?><br>

<?php echo form_label('Third Coord', 'Y'); ?><br>
<?php $third_coord = array('name' => 'Y', 'id' => 'Y', 'value' => set_value('Y')); ?>
<?php echo form_input($third_coord); ?><br>

<?php echo form_label('Fourth Coord', 'Ym'); ?><br>
<?php $fourth_coord = array('name' => 'Ym', 'id' => 'Ym', 'value' => set_value('Ym')); ?>
<?php echo form_input($fourth_coord); ?><br>

<?php echo form_submit('submit', 'Coord Check or Whatever'); ?>
<?php echo form_close(); ?>

Надеюсь, это поможет. Все это предполагает, что вы автоматически загружаете свою базу данных и библиотеки form_validation.

Наконец, ваша база данных странная. X и Y я чувствую, должны быть разные таблицы. Я не знаю масштаб вашего проекта, хотя. Удачи!

0 голосов
/ 20 сентября 2016
function check_record($db, $table, $where) {
    try {
        $db->where($where);
        return $db->count_all_results($table);
    } catch (Exception $e) {
        return false;
    }
}
0 голосов
/ 08 октября 2011

Будет ли таблица иметь более 1 значения?

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

Примерно так:

public function coord_check() {

  $X = $this->input->post('X');
  $Xm = $this->input->post('Xm');
  $Y = $this->input->post('Y');
  $Ym = $this->input->post('Ym');

  $query = $this->db->where('Id',1)->get('num');
  if ($query->num_rows())
  {
    $row = $query->row();

    if ($row->xone > $X || $row->xtwo < $X || $row->xone > $Xm || $row->xtwo < $Xm) {
      echo "xerror";
    }
    elseif ($row->xone > $Y || $row->xtwo < $Y || $row->xone > $Ym || $row->xtwo < $Ym) {
      echo "yerror";
    }
    else {
      echo "noerror";
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...