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.050
193
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.050
193
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.042
149
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.050
193
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.042
149
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.050
193
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.042
149
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.050
193
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
P Problema acquisizione clienti Webdesign e Grafica 0
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 7
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
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
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1

Discussioni simili