Problema checkbox e ricerca avanzata

MARCO29

Nuovo Utente
26 Apr 2013
4
0
0
Salve, avrei un problema con la creazione di una checkbox per ricerche avanzate, so che questo lo si puo' fare attraverso degli if e man mano comporre la query : il mio problema è praticamente come estrarre le caselle selezionate dalla checkbox e fare gli if . C'è qualcuno in grado di aiutarmi ?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
spero sufficiente,
ciao
Marino

PHP:
form
  $ForLeft.="<input type='checkbox' name='chkbox1' value='X' /> chkbox1<br />";
  $ForLeft.="<input type='checkbox' name='chkbox2' value='X' /> chkbox2<br />";
  $ForLeft.="<input type='checkbox' name='chkbox3' value='X' /> chkbox3<br />";

query
  $sql = "select ......";
  $sql.= " from .......";

  $x = " where ";

  eventuali altre clausole
  if ($chkbox1 == "X") { $sql.= $x."chkbox1='X'"; $x = " and "; }
  if ($chkbox2 == "X") { $sql.= $x."chkbox2='X'"; $x = " and "; }
  if ($chkbox3 == "X") { $sql.= $x."chkbox3='X'"; $x = " and "; }
  eventuali altre clausole

  $sql.= " order by ....";
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
scusa ho aggiunto un pezzetto
Marino
PHP:
form 
  $ForLeft.="<input type='checkbox' name='chkbox1' value='X' /> chkbox1<br />"; 
  $ForLeft.="<input type='checkbox' name='chkbox2' value='X' /> chkbox2<br />"; 
  $ForLeft.="<input type='checkbox' name='chkbox3' value='X' /> chkbox3<br />"; 

dopo submit
  $chkbox1 = (isset($_POST['chkbox1']) ? "X" : " ");
  $chkbox2 = (isset($_POST['chkbox2']) ? "X" : " ");
  $chkbox3 = (isset($_POST['chkbox3']) ? "X" : " ");

query 
  $sql = "select ......"; 
  $sql.= " from ......."; 

  $x = " where "; 

  eventuali altre clausole 
  if ($chkbox1 == "X") { $sql.= $x."chkbox1='X'"; $x = " and "; } 
  if ($chkbox2 == "X") { $sql.= $x."chkbox2='X'"; $x = " and "; } 
  if ($chkbox3 == "X") { $sql.= $x."chkbox3='X'"; $x = " and "; } 
  eventuali altre clausole 

  $sql.= " order by ....";
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
attento agli AND
dai un occhio a questo
PHP:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['invia'])){
	if(is_array($_POST['chkbox'])){
		foreach($_POST['chkbox'] as $chiave => $valore){
			$wh.=" AND chkbox".$chiave." = '".$valore."' ";
		}
	}else{
		$wh="";
	}
	$query="SELECT * FROM tabella WHERE 1=1 $wh ORDER BY pinco";
echo "<pre>";
var_dump($query);
echo "<pre>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<input type="checkbox" name="chkbox[1]" value="X" /> chkbox1<br />
<input type="checkbox" name="chkbox[2]" value="X" /> chkbox2<br />
<input type="checkbox" name="chkbox[3]" value="X" /> chkbox3<br />
<input name="invia" type="submit" id="invia" value="invia">
</form>
</body>
</html>
e poi guarda
https://www.mrw.it/php/php-checkbox_11620.html
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
scusa borgo,
gli and mi sembrano correttamente gestiti dalla variabile $x anche se l'ultimo è di troppo ma se ci sono clausole successive, serve anche lui
altrimenti non ho capito

ciao
Marino
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho detto di stare attento agli AND perchè come hai schematizzato tu sembra che ogni condizione termini con AND
per cui sembra che querry possa diventare es.
SELECT * FROM tabella WHERE pinco='pallo' AND tizio='caio' AND ORDER BY sempronio
quindi o togli l'ultimo AND con sbstring o aggiungi (io l'ho messo prima) la condizione 1=1 (o qualsiasi altra uguaglianza) in modo che comunque la query diventi
SELECT * FROM tabella WHERE pinco='pallo' AND 1= 1 ORDER BY sempronio
o in caso non ci siano condizioni
SELECT * FROM tabella WHERE 1= 1 ORDER BY sempronio
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
a me non sembra, $x parte con il valore " where "
e alla prima condizione vera, dopo averla utilizzata, viene sostituita da " and "
$x è anteposta ..... suddivido la riga per chiarezza

PHP:
  if ($chkbox3 == "X") { 

    $sql.= $x."chkbox3='X'"; 

    $x = " and "; }

ho preferito questa soluzione perché se non ci sono condizioni estraggo la tabella (uso e consumo mio)
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda che ho detto sembra, non che fosse errato
comunque scrivere
SELECT * FROM tabella WHERE 1= 1 ORDER BY sempronio
o
SELECT * FROM tabella ORDER BY sempronio
è uguale
l'unica differenza è il trattamento del chek che con il tuo sistema in caso di aggiunta/eliminazione di una chek devi fare due correzzioni, nel form e nello script di lettura
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ciao
guarda che ho detto sembra, non che fosse errato
comunque scrivere
SELECT * FROM tabella WHERE 1= 1 ORDER BY sempronio
o
SELECT * FROM tabella ORDER BY sempronio
è uguale
l'unica differenza è il trattamento del chek che con il tuo sistema in caso di aggiunta/eliminazione di una chek devi fare due correzzioni, nel form e nello script di lettura

molte di più di due correzioni,
anche nella validazione, nei trattamenti specifici di quell'elemento e chi più ne ha più ne metta,
non credo che modi diversi portino ad un miglioramento dell'efficienza della programmazione, io preferisco leggere bene il codice
in ogni caso io correggo un solo script (!).... questo è il mio modo di pensare e lavorare
ciao
Marino
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [HTML] Problema Checkbox HTML e CSS 3
A Problema checkbox checked con valore prelevato da db PHP 1
blips Problema con checkbox multiple PHP 1
P problema con checkbox PHP 5
A Problema PHP e checkbox! PHP 10
A problema con checkbox funzionante solamente al secondo "tentativo" Javascript 12
F Problema urgente con checkbox, array e explode PHP 10
M Problema convalida checkbox Javascript 0
D problema con checkbox e input text PHP 6
G problema checkbox con mdb asp Classic ASP 8
P Problema con CheckBox Javascript 2
F problema con convalida form e checkbox Javascript 1
P [PHP] problema script con checkbox! PHP 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0

Discussioni simili