Отправить 2 переменные через URL - PullRequest
0 голосов
/ 28 января 2019

Я посылаю 2 переменные по URL:

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);
}

на странице подключения. У меня есть 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);

}   

Iпопытался применить форму, которую он сказал, но это не работает, он выдает 500 ошибок, когда я отправляю значения переменных.Вы можете помочь решить проблему?У меня есть форма для заполнения этими значениями

Ответы [ 2 ]

0 голосов
/ 28 января 2019
$where = " where ";
$CodigoUtente = 'a';
$Nome = '';
if($CodigoUtente != '' && $Nome != '')
{
  $where .= "CodigoUtente = '$CodigoUtente' OR Nome = '$Nome';"; 
}else if ($CodigoUtente != ''){
  $where .= "CodigoUtente = '$CodigoUtente';"; 
}else{
  $where .= " Nome = '$Nome';"; 
}

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

echo $query;
0 голосов
/ 28 января 2019

Вы можете попробовать вот так, прежде чем делать SQL-запрос.Это поможет вам справиться с ГДЕ с условием ИЛИ , без условия ИЛИ и без каких-либо условий .

$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...