Fatto, adesso l'errore che mi da è:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:....
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:....
$risultato=mysql_query($query);
var_dump($risultato);//questa riga poi la togli
//la seguente istruzione è utile soprattutto se le selezioni possibili sono + di una
$esiste=mysql_num_rows($risultato);
<?php echo $tipo; ?>
tanto col tempo che fà....a smanettare e studiare durante il we
va bene comunque confronta la stringa che è 0 se non hai record che soddisfano le condizioniif($scelta=="0")
si....si può fare anche nel caso della citata tabella?
devi usare le sessioniIo volevo che rimanesse fissa...
devi aggiungere nel form le selezioni che vuoi fare e nella parte di php oltre a leggere i vari tipi di scelta....se volessi aggiungere altri campi di ricerca in combinazione
<?php
//.....
$where=" WHERE ";
$scelta_loc=$_POST['localita'];//come prima 0 se tutte
$scelta_num_stanze=$_POST['num_stanze'];//sempre 0 se indifferente
//per il prezzo conviene fare minore di
$scelta_prezzo=$_POST['prezzo'];//sempre 0 se tutti
//quindi devi combinare le tre scelte
if($scelta_loc=="0"){
$loc="";//SE 0 LASCIO VUOTA
}else{
$loc=" localita='$localita' AND";
}
if($scelta_num_stanz=="0"){
$stanze="";//SE 0 LASCIO VUOTA
}else{
$stanze=" num_stanze='$scelta_num_stanze' AND";
}
if($scelta_prezzo=="0"){
$prezzo="";//SE 0 LASCIO VUOTA
}else{
$prezzo=" prezzo<'$scelta_prezzo' AND";
}
//e costruisci la clausola
$where .=$loc.$stanze.$prezzo." 1=1";//dopo ti spiego quell' uno=uno finale
/*in funzione delle scelte fatte la $where diventa
tutte 0 $where = "WHERE 1=1"
poi le varie combinazioni es. loc=padova e prezzo 100000
$where = "WHERE localita='padova' AND prezzo<'100000' AND 1=1"
quell' uno=uno viene messo perchè se non fai alcuna scelta e non lo mettessi
$where sarebbe = "WHERE " e ti darebbe errore oppure se ai fatto una scelta
avresti un AND finale non chiuso e quindi errore
1=1 elimina questi errori senza dover ricorrere ad astruse complicazioni
*/
//.....
?>
<option selected="<?php $scelta; ?>"><?php echo $scelta; ?></option>
<option selected="<?php $_POST['camere']; ?>"><?php echo $_POST['camere']; ?></option>
prova a guardare questo:...select onchange="this-forum.submit()",....
if(isset($_POST['Submit']) OR isset($_POST['localita'])){
//....
if(isset($_POST['Submit']) OR ($_POST['localita']) OR ($_POST['camere']))
<?php require_once("Connessione.php");
$default_localita="OGNI";
$default_locali="OGNI";
if(isset($_POST['Submit']) OR ($_POST['localita']) OR ($_POST['camere'])){//attento maiuscole/minuscole
//leggo il valore della scelta fatta
$scelta_localita=$_POST['localita'];
$default_localita=$scelta_localita;
$scelta_locali=$_POST['camere'];
$default_locali=$scelta_locali;
$where=" WHERE ";
//e in funzione della scelta fatta creero la query di interrogazione
if($scelta_localita=="OGNI"){
$scelta_localita=""; //metto a stringa vuota
}else{
$scelta_localita=" localita='$scelta_localita' AND";
}
if($scelta_locali=="OGNI"){
$scelta_locali=""; //metto a stringa vuota
}else{
$scelta_locali=" camere='$scelta_locali' AND";
}
$where .=$scelta_localita.$scelta_locali." 1=1";
//interrogo nuovamente per cercare gli immobili
//penso che tu abbia compreso come risulta la variabile $where dopo l'if
//stringa query, con * questa volta leggo tutti i campi del record e non solo il campo localita
$query="SELECT * FROM immobile".$where;
//e cioe la query cambierà in funzione della scelta fatta
//volendo porei aggiungere alla riga ORDER BY prezzo per poi eventualmente averli in ordine di prezzo
//è evidente che posso fare tutte le selezioni possibili, sul prezzo, se affitto o vendita, numero di stanze...
// e interrogo il db
$risultato=mysql_query($query);
//la seguente istruzione è utile soprattutto se le selezioni possibili sono + di una
$esiste=mysql_num_rows($risultato);//conto quanti record (immobili) esistono con le condizioni richieste
if($esiste==0){
//non ci sono immobili con le condiszioni richieste
echo "<h4>Non ci sono immobili con le condizioni richieste</h4>";
}else{
//esiste almeno uno quindi devo visualizzare i suoi dati
//ciclo con while perchè devo visualizzare tutti gli esistenti con le caratteristice selezionate
echo "La selezione ha fornito $esiste immobili<br>";
while($riga=mysql_fetch_array($risultato)){
//a ogni ciclo del while leggo un record e estraggo i suoi campi
$tipo=$riga['tipo'];
$camere=$riga['camere'];
$localita=$riga['localita'];
$prezzo=number_format($riga['prezzo'], 0, ",", ".");
$disp=$riga['disp'];
echo "<table class=\"table3\" width=\"99%\" align=\"center\">
<tbody><tr>
<td width=\"15%\" bgcolor=\"#696969\"></td>
<td width=\"30%\" bgcolor=\"#dcdcdc\"> $localita <br /> $tipo <br />composto da $camere locali <br />al prezzo di €$prezzo<br />contratto $disp</td>
</tr></tbody></table>";// in alternativa si può fare tabella uscendo da PHP e rientrando prima di chiudere il while
}
}
} else {
echo "siamo in ELSE";
$query="SELECT * FROM immobile";
//estraggo tutti i record dal db
$risultato=mysql_query($query);
//la seguente istruzione è utile soprattutto se le selezioni possibili sono + di una
$esiste=mysql_num_rows($risultato);//conto quanti record (immobili) esistono con le condizioni richieste
while($riga=mysql_fetch_array($risultato)){
//a ogni ciclo del while leggo un record e estraggo i suoi campi
$tipo=$riga['tipo'];
$camere=$riga['camere'];
$localita=$riga['localita'];
$prezzo=number_format($riga['prezzo'], 0, ",", ".");
$disp=$riga['disp'];
echo "<table class=\"table3\" width=\"99%\" align=\"center\">
<tbody><tr>
<td width=\"15%\" bgcolor=\"#696969\"></td>
<td width=\"30%\" bgcolor=\"#dcdcdc\"> $localita <br /> $tipo <br />composto da $camere locali <br />al prezzo di €$prezzo<br />contratto $disp</td>
</tr></tbody></table>";
}
}
?>
<p></p>
<!--
nota il costrutto action è dinamico ti permette di cambiare nome alla pagina senza preuccupazione
e come si può entrare ed uscire da php a html nei punti che servono
-->
<div style="position:fixed; top:145px; right:10px; width: 141px; height: 89px;">
<form name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<!--faccio una selct per scegliere la località -->
<fieldset>
<legend style="color:#FFF">SELEZIONA</legend>
<p style="text-align:left; font-size:9px; color:#FFF">DOVE</p>
<select name="localita" id="localita" title="dove" onchange="this.form.submit()">
<option selected="<?php $default_localita; ?>"><?php echo $default_localita; ?></option>
<option value="OGNI"><strong>OGNI</strong></option> <!--onchange='this.form.submit()'-->
<?php
//entro in php per farla dinamica
//interrogo il db per sapere in quali località ci sono gli immobili
//faccio la solita stringa di query
$query="SELECT localita FROM immobile GROUP BY localita ORDER BY localita";
/*in pratica tradotto in linguaggio umano
CERCA le località esistenti NELLA tabella immobili, RAGGRUPPANDO PER località (se due o più immobili a padova fai vedere padova una volta sola)
METTENDO IN ORDINE (in questo caso) alfabetico le località es. padova treviso venezia
*/
//faccio l'interrogazione, in questo caso "mettendola" in una variabile che mi servirà in seguito
$risultato=mysql_query($query) or die(mysql_error());
//estraggo tutti i record dalla tabella con un ciclo while, caso mai discutermo perchè
while($riga=mysql_fetch_array($risultato)){//in pratica esploro tutta la tabella estraendo i record uno alla volta
$localita=$riga['localita'];
//dico a php di creare la/e casella/e di selezione
echo "<option value=\"$localita\">$localita</option>";
}//fine del while
?>
</select>
<p style="text-align:left; font-size:9px; color:#FFF">STANZE</p>
<select name="camere" id="camere" onchange="this.form.submit()">
<option selected="<?php $default_locali; ?>"><?php echo $default_locali; ?></option>
<option value="OGNI"><strong>OGNI</strong></option>
<!--onchange='this.form.submit()'-->
<?php
$query="SELECT camere FROM immobile GROUP BY camere ORDER BY camere";
$risultato=mysql_query($query) or die(mysql_error());
while($riga=mysql_fetch_array($risultato)){
$camere=$riga['camere'];
echo "<option value=\"$camere\">$camere</option>";
}//fine del while
?>
</select>
</p>
<p><input type="submit" name="Submit" value="cerca">
</p>
</fieldset>
</form>
</div>
<p></p>
<?php require_once("Connessione.php");
$default_localita="OGNI";
$default_locali="OGNI";
if(isset($_POST['Submit']) OR ($_POST['localita']) OR ($_POST['camere'])){
//leggo il valore della scelta fatta
//prova in questa maniera
if(isset($_POST['localita'])){
$default_localita=$_POST['localita'];
}
if(isset($_POST['camere'])){
$default_locali=$_POST['camere'];
}
//se non hai dato il post localita o camere rimane il valore di default
/*
$scelta_localita=$_POST['localita'];
$default_localita=$scelta_localita;
$scelta_locali=$_POST['camere'];
$default_locali=$scelta_locali;
*/
$where=" WHERE ";
//ecc.....
<?php
if(!empty($_POST)){//Al primo caricamento pagina tutti i POST sono vuoti e non definiti, basta cambiarne uno per avere TRUE
//poi nel ciclo che crea le select option ho messo questo
<select name="localita" id="localita" title="dove" onchange="this.form.submit()">
<option selected="<?php $default_localita; ?>"><?php echo $default_localita; ?></option>
<?php if ($default_localita!="OGNI") {
echo "<option value=\"OGNI\"><strong>OGNI</strong></option>"; }
//entro in php per farla dinamica e verifico se l'ultima selezione fatta è OGNI, non ripeto
//faccio la solita stringa di query
$query="SELECT localita FROM immobile GROUP BY localita ORDER BY localita";
$risultato=mysql_query($query) or die(mysql_error());
while($riga=mysql_fetch_array($risultato)){//in pratica esploro ed estraggo
$localita=$riga['localita'];
if ($localita==$default_localita) continue;//saltando l'opzione già selezionata
//dico a php di creare la/e casella/e di selezione
echo "<option value=\"$localita\">$localita</option>";
}//fine del while
?>
</select>