我想将值与数据库中的值进行比较。
这是我的数据库
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";
}
}
我的代码目前只有echo没有错误,即使我将数值与数据库中的内容完全相同。任何人都可以看到问题出在哪里?
我真正想要的是比较让我们说$ xm是否在数据库值xone和xtwo的范围内。那可能吗? 非常感谢提前..
答案 0 :(得分:3)
我不确定您是否关注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我觉得应该是不同的表。我不知道你的项目的范围。祝你好运!
答案 1 :(得分:0)
表格会有多于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";
}
}
}
答案 2 :(得分:0)
function check_record($db, $table, $where) {
try {
$db->where($where);
return $db->count_all_results($table);
} catch (Exception $e) {
return false;
}
}