selezionare dati da mysql mediante form

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Ciao ragazzi,
sono un neofita del php, sto cercando di scrivere un codice che permetta all'utente del sito di recuperare dati mediante la compilazione di un form, nel quale ha varie opzioni.

Cerco di spiegarmi meglio: è un sito per una agenzia immobiliare. Il nostro utente, mediante un form può selezionare una ricerca selezionando:

A) il comune in cui è ubicato l'immobile;
B) il quartiere
C) se è un ufficio o un appartamento;
D) il prezzo

per tutti i campi, può scegliere anche l'opzione tutti, in modo da ricevere tutti i dati presenti nel database relativi al campo non selezionato.

Con il form non ho problemi, per la pagina di elaborazione, invece, ho provato con if else, con if nidificati e con switch, ma non riesco ad ricomprendere tutte le opzioni.

C'è qualcuno che può darmi una mano?

Grazie.
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Ecco il codice, avevo provato anche con if ed else, ma siccome non riusciva a gestire tutte le opzioni, ho riniziato da 0 provando con gli switch.
Per provare ho considerato solo 2 opzioni.

è possibile inserire uno switch multiplo? es. switch ($Comune) & ($Destinazione__urbanistica) ?
in questo modo potrei scrivere le possibili combinazioni nei case e dare un'istruzione precisa per ogni case.

Grazie mille

PHP:
<html>
<head>
<title>Prova risultato</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
 <?php
			  //collegamento a Mysql
			  $db = mysql_connect ('.................' , '..............' , '..............') or 
			  die (' Non è possibile stabilire la connessione, rivedere i parametri.'); 
			  //scelta del database
			  mysql_select_db ('...................', $db) or die (mysql_error ($db));
			  $Destinazione__urbanistica = $_POST['Destinazione'];
			  $Comune = $_POST['Comune'];
			  //effettua ricerca e salva risultato
			 switch ($Comune) {
			 	case 'tutti':
			 	$sql = " SELECT * FROM Immobili...................";
			break;
				case $Comune:
				$sql = "SELECT * FROM Immobili..................... WHERE Comune = '$Comune' ";
				break;
			}
			  $risultati = mysql_query($sql);
			 // mostra i risultati
			 echo '<table border="1">';
			 while ($row = mysql_fetch_assoc ($risultati)){
				 echo '<tr>';
			  foreach ($row as $value) {
				  echo  '<td>' . $value . '</td>';
				  }
				   echo '<tr/>';
			 }
			 echo '</table>';
			 ?>
            
</body>
</html>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
PHP:
<?php
//....
// se da <select> devi mettere anche un value="" e non servirebbe il trim
//comunque dato che servono per interrogare in un db sarebbero nesessari alcuni controlli soprattutto se provengono da un input text
$Destinazione__urbanistica = trim($_POST['Destinazione']);
$Comune = trim($_POST['Comune']);
$we=" WHERE 1=1";// questa condizione è sempre eseguita in quanto 1 è sempre uguale a 1, se rimane solo questa = a tutti
if($Destinazione__urbanistica != ""){$we. = " AND destinazione = '$Destinazione__urbanistica'";}
if($Comune != ""){$we. = " AND comune = '$comune'";}
$sql ="SELECT * FROM immobili $we";
//.....
?>

p.s.
racchiudi sempre il codice tra gli appositi tag (una delle tre iconcine, seconda riga ultime 3, barra formattazione post)
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Grazie mille, provo e ti faccio sapere

PHP:
<?php
//....
// se da <select> devi mettere anche un value="" e non servirebbe il trim
//comunque dato che servono per interrogare in un db sarebbero nesessari alcuni controlli soprattutto se provengono da un input text
$Destinazione__urbanistica = trim($_POST['Destinazione']);
$Comune = trim($_POST['Comune']);
$we=" WHERE 1=1";// questa condizione è sempre eseguita in quanto 1 è sempre uguale a 1, se rimane solo questa = a tutti
if($Destinazione__urbanistica != ""){$we. = " AND destinazione = '$Destinazione__urbanistica'";}
if($Comune != ""){$we. = " AND comune = '$comune'";}
$sql ="SELECT * FROM immobili $we";
//.....
?>

p.s.
racchiudi sempre il codice tra gli appositi tag (una delle tre iconcine, seconda riga ultime 3, barra formattazione post)
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
ho provato, ma mi da comunque un errore:

Parse error: syntax error, unexpected '=' in D:\Inetpub\webs\faispazioit\ricerca_immobili.php on line 17

La riga 17 è questa:

PHP:
if($Destinazione__urbanistica != ""){$we. = " AND Destinazione = '$Destinazione__urbanistica'";}

Riesci ad individuare l'errore????

Grazie.


Grazie mille, provo e ti faccio sapere
 
Ultima modifica di un moderatore:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
PHP:
$we.=

. e = vanno attaccati
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
hai aggiunto (o forse sono stato io senza accorgermene) uno spazio tra il punto e l'uguale
if($Destinazione__urbanistica != ""){$we. = " AND Destinazione = '$Destinazione__urbanistica'";}

toglilo
if($Destinazione__urbanistica != ""){$we.= " AND Destinazione = '$Destinazione__urbanistica'";}
e verifica anche l'altro
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Grazie, sono riuscito ad eliminare l'errore, ora funziona, ma solo se sia il campo destinazione che quello comune sono selezionati con dei dati compresi nel database.
se ne lascio anche uno solo dei tutte su tutti, il risultato della ricerca è 0

Cosa posso fare?

Grazie.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
dipende da come selezioni nel form i dati che ti interessano.
potresti fare due <select> dinamiche che ti estraggono solo i comuni e le destinazioni esitenti.
è evidente che se metti un comunne che non c'è deve darti 0 o non trovati
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Certo, sicuramente, se scelgo un comune che non è in elenco, è giusto che mi dia 0
però, io vorrei riuscire a fare in modo che se non seleziono alcun comune, o alcuna destinazione, mi restituisca i valori con tutti i comuni o con tutte le destinazioni.
Vorrei che funzionassero un po' come i filtri, per cui se seleziono il dato, mi restituisce un valore pari a quello selezionato, altrimenti me li da tutti.

Spero di essere stato chiaro.....

Ti chiedo scusa, ma non so come spiegarmi meglio.......
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
quanti ti ho postato dovrebbe fare quello che chiedi
se non selezioni ne comune ne destinazione la query ti risulta
"SELECT * FROM immobili WHERE 1=1" quindi tutti di tutti i comuni e di tutte le destinazioni
se selezioni solo un comune (es. parma) ma non la destinazione
"SELECT * FROM immobili WHERE 1=1 AND comune='parma'" quindi tutti quelli di parma
se selezioni non un comune ma solo la destinazione (es. casa chiusa)
"SELECT * FROM immobili WHERE 1=1 AND destinazione='casa chiusa'" quindi tutti quelli con tale destinazione (sono quelli che rendono di più)
se selezioni il comune (es. parma) e la destinazione (es. casa chiusa)
"SELECT * FROM immobili WHERE 1=1 AND comune= 'parma' AND destinazione='casa chiusa'" quindi tutte le case chiuse di parma
eventualmente per provare metti subito dopo $sql
PHP:
//...
$sql ="SELECT * FROM immobili $we"; 
var_dump($sql);
//..... 
?>
dovrebbe darti
string(lunghezza) "SELECT ecc..."
così vedi se hai fatto tutto bene e se la query viene come vorresti nei vari casi
 

tivovi74

Utente Attivo
31 Gen 2012
58
1
8
Grazie mille, adesso funziona perfettamente, ho fatto solo una piccola modifica

if($Destinazione__urbanistica != "tutte"){$we.= " AND Destinazione__urbanistica = '$Destinazione__urbanistica'";}
if($Comune != "tutti"){$we.= " AND Comune = '$Comune'";}

aggiungendo tutte e tutti ed inserendo gli stessi valori nel form, altrimenti lasciati vuoti non mi dava i risultati.

Ora provo ad inserire gli altri campi di ricerca, sperando di non fare casini col codice.....

Grazie ancora.





ciao
quanti ti ho postato dovrebbe fare quello che chiedi
se non selezioni ne comune ne destinazione la query ti risulta
"SELECT * FROM immobili WHERE 1=1" quindi tutti di tutti i comuni e di tutte le destinazioni
se selezioni solo un comune (es. parma) ma non la destinazione
"SELECT * FROM immobili WHERE 1=1 AND comune='parma'" quindi tutti quelli di parma
se selezioni non un comune ma solo la destinazione (es. casa chiusa)
"SELECT * FROM immobili WHERE 1=1 AND destinazione='casa chiusa'" quindi tutti quelli con tale destinazione (sono quelli che rendono di più)
se selezioni il comune (es. parma) e la destinazione (es. casa chiusa)
"SELECT * FROM immobili WHERE 1=1 AND comune= 'parma' AND destinazione='casa chiusa'" quindi tutte le case chiuse di parma
eventualmente per provare metti subito dopo $sql
PHP:
//...
$sql ="SELECT * FROM immobili $we"; 
var_dump($sql);
//..... 
?>
dovrebbe darti
string(lunghezza) "SELECT ecc..."
così vedi se hai fatto tutto bene e se la query viene come vorresti nei vari casi
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Selezionare dati in intervallo di tempo PHP 21
M [PHP] selezionare dati da db e fare confronti PHP 0
M Tabella PHP con sorgente dati csv: selezionare le riche e compilare Form eMail PHP 1
M Selezionare dati tra due tabelle Database 3
M Selezionare dati tra due tabelle PHP 1
F selezionare dati tra due tabelle e prendere max valori PHP 10
D selezionare solo dati non presenti in entrambe le tabelle PHP 5
M Come selezionare e deselezionare radiobutton con jquery jQuery 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Upload file senza doverlo selezionare PHP 2
S Selezionare e deselezionare checkbox Javascript 0
M [PHP] Selezionare immagini directory non presenti in db PHP 11
S [PHP] selezionare colonna tabella utilizzando un array PHP 1
S [PHP] Selezionare i campi non in comune con le altre colonne della tabella PHP 4
L [PHP] CHECKBOX DA SELEZIONARE IN UNA TABELLA PHP 4
S [PHP] selezionare colonne in comune con un altra tabella PHP 5
T selezionare terza colonna della relatica row Database 2
G [Javascript] Selezionare una checkbox in maniera condizionata Javascript 5
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
otto9due Selezionare singoli giorni su datepiker jQuery 1
gandalf1959 Selezionare un intervallo tra due date, php e mysql PHP 2
L [PHP] selezionare righe di una tabella con le checkbox e cancellarle PHP 2
R [Photoshop] Selezionare elemento in immagine ed esportarlo Photoshop 3
S [PHP] Selezionare ultimo campo ed escludere doppioni PHP 16
S [PHP] Selezionare tutte le colonne meno due PHP 6
asevenx Selezionare elementi da un elenco in modo dinamico e inviarli al database PHP 0
C selezionare distinti id e sommare uguali PHP 1
asevenx Realizzare modulo per selezionare elementi da una lista PHP 1
M Selezionare un risultato ogni 10 da select MySQL 4
L [php e mysql] selezionare sia i selezionati e i non selezionati PHP 1
M Selezionare un record da una tabella continua MS Access 0
H Selezionare la versione di Access Runtime in base all' applicazione MS Access 0
H Selezionare la versione di Access Runtime in base all' applicazione MS Access 0
F Selezionare voce di menu attiva HTML e CSS 1
asevenx selezionare prossima data da database PHP 2
T selezionare un campo da un db con radio button PHP 0
P Impossibile selezionare il database PHP 7
P impossibile selezionare il database PHP 0
felino Selezionare le colonne con una certa condizione PHP 2
S Selezionare files con drag and drop prima di upload PHP 0
F selezionare puntatore google engine Javascript 0
L Selezionare query da menu a tendina MS Access 2
M Selezionare quantità spostando una "barra" Javascript 5
M Selezionare un campo alla volta su un ciclo while PHP 47
S Selezionare campi da una tabella,vincolati da un'altra tabella Database 4
neo996sps [FORM] selezionare solo file con estensione MP3 HTML e CSS 2
D Selezionare tutti i checkbox di un form con jQuery jQuery 1
J Selezionare col mouse una riga di una tabella PHP 1
P Javascript per selezionare contenuti pagina tramite checkbox Javascript 1

Discussioni simili