通过网址发送2个变量

时间:2019-01-28 17:05:03

标签: javascript php mysql xmlhttprequest

我通过url发送2个变量:

var http = false;
http = new XMLHttpRequest();

function carrega(){

    var nome = document.getElementById('CodigoUtente').value;
    var nomes = document.getElementById('Nome').value;

    var url_="conexao4?CodigoUtente="+nome+"&Nome="+nomes;
    http.open("GET",url_,true);
    http.onreadystatechange=function(){
        if(http.readyState==4){
            var retorno = JSON.parse(http.responseText);

            document.getElementById('CodigoUtente').value = retorno.CodigoUtente;
            document.getElementById('Nome').value = retorno.Nome;
            document.getElementById('DataNasc').value = retorno.DataNasc;
            document.getElementById('Sexo').value = retorno.Sexo;
            document.getElementById('Estadocivil').value = retorno.Estadocivil;
            document.getElementById('Nacionalidade').value = retorno.Nacionalidade;
            document.getElementById('Responsavel').value = retorno.Responsavel;
            document.getElementById('Parentesco').value = retorno.Parentesco;
            document.getElementById('Contato').value = retorno.Contato;
        }
    }
    http.send(null);
}

在连接页面4中,我有接收变量的php:

$CodigoUtente = $_GET['CodigoUtente'];
$Nome = $_GET['Nome'];

if((isset($CodigoUtente)) && (isset($Nome))){
    $query= "SELECT CodigoUtente, Nome, DataNasc, Sexo, Estadocivil, Nacionalidade, Responsavel, Parentesco, Contato FROM centrodb.PsicUtentes   WHERE (CodigoUtente = '$CodigoUtente') OR (Nome LIKE '%$Nome%')";
    $resultados = $conn->query($query);
    $json = array();
    while ($rowResultados = $resultados->fetch_assoc()) {
        $dados = array(
            'CodigoUtente' => $rowResultados['CodigoUtente'],
            'Nome' => $rowResultados['Nome'],
            'DataNasc' => $rowResultados['DataNasc'],
            'Sexo' => $rowResultados['Sexo'],
            'Estadocivil' => $rowResultados['Estadocivil'],
            'Nacionalidade' => $rowResultados['Nacionalidade'],
            'Responsavel' => $rowResultados['Responsavel'],
            'Parentesco' => $rowResultados['Parentesco'],
            'Contato' => $rowResultados['Contato']
        );
        $json = $dados;
    }
    echo json_encode($json);
}

问题在于,只有当您填写两个输入并且它们打算仅在填充其中两个输入时才从数据库返回数据时,它们才起作用。

Curious_Mind这样说?

    $where_caluse = array();

if(isset($_GET['CodigoUtente'])){
  $where_caluse[] = "CodigoUtente = '".$_GET['CodigoUtente']."'";    
}

if(isset($_GET['Nome'])){
  $where_caluse[] =  "Nome = '".$_GET['Nome']."'";  
}

$where = array_filter($where_caluse);

$query = "SELECT CodigoUtente, Nome, DataNasc, Sexo, Estadocivil, Nacionalidade, Responsavel, Parentesco, Contato FROM centrodb.PsicUtentes";

$resultados = $conn->query($query);

if(!empty($where)){

$final_where = count($where) > 1 ? implode(' OR ', $where) : end($where);
$query = "$query WHERE ". $final_where;

$json = array();

while ($rowResultados = $resultados->fetch_assoc()) {

  $dados = array(
     'CodigoUtente' => $rowResultados['CodigoUtente'],
     'Nome' => $rowResultados['Nome'],
     'DataNasc' => $rowResultados['DataNasc'],
     'Sexo' => $rowResultados['Sexo'],
     'Estadocivil' => $rowResultados['Estadocivil'],
     'Nacionalidade' => $rowResultados['Nacionalidade'],
     'Responsavel' => $rowResultados['Responsavel'],
     'Parentesco' => $rowResultados['Parentesco'],
     'Contato' => $rowResultados['Contato']
    );
      $json = $dados;
}
echo json_encode($json);

}   

我试图应用它所说的形式,但是它不起作用,当我发送变量的值时,它会给出500错误。 您能协助解决问题吗?我有一个表格要填充这些值

2 个答案:

答案 0 :(得分:1)

groupBy

答案 1 :(得分:0)

在进行sql查询之前,您可以尝试这种方式。这将帮助您处理有OR条件无OR条件完全无条件的情况。

$where = array();
$_GET['CodigoUtente'] = 'Sany';
$_GET['Nome'] = 'Bruno';

if(isset($_GET['CodigoUtente'])){
  $where[] = "CodigoUtente = '".$_GET['CodigoUtente']."'";    
}

if(isset($_GET['Nome'])){
  $where[] =  "Nome = '".$_GET['Nome']."'";  
}


$sql = "SELECT CodigoUtente, Nome, DataNasc, Sexo, Estadocivil, Nacionalidade, Responsavel, Parentesco, Contato FROM centrodb.PsicUtentes";

if(!empty($where)){
    $final_where = count($where) > 1 ? implode(' OR ', $where) : end($where);
    $sql = "$sql WHERE ". $final_where;
}

echo $sql; 

演示: https://3v4l.org/phZGW