Grazie darbula, per la pazienza e la risposta.
Devo dire che se correggo la query come mi hai indicato:
Codice PHP:
$sql = "SELECT * FROM `residenti` WHERE appello=1$p_sql$s_sql";
Mi segnala subito
mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
nella riga dell'istruzione
Codice PHP:
if ( mysqli_num_rows($result) == 0) {
anche per le ricerche prima andavano bene.
Aggiungo che se modficio anche la parte di script, come mi hai mandato:
Codice PHP:
//Creazione query con uno o due parametri
//Ordinamento Cognome ascendente
if(!empty($_POST['camera'])) {
$camera = $mysqli->escape_string($_POST['camera']);
$s_sql = " `camera_res` LIKE '$camera%' ";
}
if(!empty($_POST['cognome'])) {
$cognome = $mysqli->escape_string($_POST['cognome']);
/*
if(!empty($_POST['camera'])) {
$s_sql = ' AND' . $s_sql;
}
*/
$p_sql = " `cognome_res`
LIKE '$cognome%'$s_sql ORDER BY `cognome_res` ASC";
$s_sql = '';
}
Non mi funziona più bene la ricerca.
Riassumendo. Così funziona:
Codice PHP:
<?php
//Se esiste
if(!empty($_POST['cognome']) || !empty($_POST['camera'])) {
$s_sql = '';
$p_sql = '';
//Creazione query con uno o due parametri
//Ordinamento Cognome ascendente
if(!empty($_POST['camera'])) {
$camera = $mysqli->escape_string($_POST['camera']);
$s_sql = " `camera_res` LIKE '$camera%' ";
}
if(!empty($_POST['cognome'])) {
$cognome = $mysqli->escape_string($_POST['cognome']);
if(!empty($_POST['camera'])) {
$s_sql = ' AND' . $s_sql;
}
$p_sql = " `cognome_res`
LIKE '$cognome%'$s_sql ORDER BY `cognome_res` ASC";
$s_sql = '';
}
$sql = "SELECT * FROM `residenti` WHERE $p_sql$s_sql";
$result=$mysqli->query($sql);
// se dalla ricerca l'assegnatario risulta assente
if ( mysqli_num_rows($result) == 0) {
Se aggiungo appello=1 nella query non va.
Inoltre ho corretto la struttura del parametro colonna appello del valore 1, mettendolo a INT.
In effetti inizialmente avevo pensato di impostarlo come varchar perchè volevo mettere presente o assente o quello che mi serviva sapere, poi ho cambiato idea perchè è più comodo usare i numeri. Così mi sono codificato 1 per presente, 2 per viaggio, 3 per uscita e così via ...
Scusa se ti faccio impazzire e grazie ancora per la comprensione