• Home
  • Forum
  • Fare Web
  • PHP

modifica query selezione

  • Creatore Discussione Creatore Discussione danpippo
  • Data di inizio Data di inizio 7 Feb 2012
Prec.
  • 1
  • 2
Primo Prec. 2 di 2

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 11 Feb 2012
  • #21
ciao
scusate ma secondo me state girando in tondo come trottole

dove è il value del chekbox?

dimenticavo
se ha più chek invece di chiamarli
HTML:
<!-- ...qui manca il value... -->
<input name="c1" type="checkbox"/>elemento 1<br>
<input name="c2" type="checkbox"/>elemento 2<br>                    
<input name="c3" type="checkbox"/>elemento 3<br>
<input name="c4" type="checkbox"/>elemento 4<br>
<!-- ..ecc.. -->
sarebbe meglio chiamarli
HTML:
<!-- ..ecc.. -->
<input name="c[]" type="checkbox" value="elemento 1"/>elemento 1<br>
<input name="c[]" type="checkbox" value="elemento 2"/>elemento 2<br>                    
<input name="c[]" type="checkbox" value="elemento 3"/>elemento 3<br>
<input name="c[]" type="checkbox" value="elemento 4"/>elemento 4<br>
<!-- ..ecc.. -->
poi nella parte php li estrai con un foreach

PHP:
<?php
//............
$q = "SELECT * FROM dati WHERE 1=1 ";
$whe_2="";
foreach($_POST['c'] as $valore){
	if($valore !=""){
		$whe_2.=" OR genere = '$valore' ";
	}
}
$q .= $whe_2." ORDER BY nome";
//e qui il solito var_dump. !!!fai delle prova e posta il/i risultato/i del var_dump
var_dump($q);
//questo indipendentemente da quanto la query ti fa vedere
//....
?>
 
Ultima modifica: 11 Feb 2012

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 11 Feb 2012
  • #22
PHP:
array
// senza value
  'c1' => string 'on' (length=2)
// con value
  'c2' => string 'elemento2' (length=9)

string 'SELECT * FROM dati WHERE 1=1 && (1=0 || genere = 'elemento1'  || genere = 'elemento2' ) ORDER BY nome' (length=101)

Cambia poco mettere il value per come è stata impostata la query
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 11 Feb 2012
  • #23
poi nella parte php li estrai con un foreach
PHP:
<?php
//............
$q = "SELECT * FROM dati WHERE 1=1 ";
$whe_2="";
foreach($_POST['c'] as $valore){
    if($valore !=""){
        $whe_2.=" OR genere = '$valore' ";
    }
}
$q .= $whe_2." ORDER BY nome";
//e qui il solito var_dump. !!!fai delle prova e posta il/i risultato/i del var_dump
var_dump($q);
//questo indipendentemente da quanto la query ti fa vedere
//....
?>
Clicca per allargare...

Codice:
SELECT * FROM dati WHERE 1=1 OR genere = 'elemento1'


Cosi però verranno sempre estratti tutti
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 11 Feb 2012
  • #24
ragazzi tutto ok ora funziona. Avevo fatto degli errori di sintassi. Posto il codice completo casomai dovesse servire anche ad altri:

PHP:
<html>
<head>
<style type="text/css">
body{
margin-left: .5cm;
    margin-right: .5cm;
    color: black;
    font-family: Verdana, Arial, sans-serif;
    font-size: 10pt;
}
</style>
</head>
<?php
$nomeDB = "";
$connessione = mysql_connect("", "", "") or die("Connessione al Server non possibile.");
mysql_select_db($nomeDB, $connessione) or die("Connessione al DB non possibile.");
$q = "SELECT * FROM dati WHERE 1=1";
if (isset($_POST['c1']) || isset($_POST['c2']) || isset($_POST['c3']) || isset($_POST['c4']) || isset($_POST['c5']) || isset($_POST['c6']) || isset($_POST['c7']) || isset($_POST['c8'])) {
    $q.= " && (1=0";
    if (isset($_POST['c1'])) {
        $q.= " || genere = 'elemento1' ";
    }
    if (isset($_POST['c2'])) {
        $q.= " || genere = 'elemento2' ";
    }
    if (isset($_POST['c3'])) {
        $q.= " || genere = 'elemento3' ";
    }
    if (isset($_POST['c4'])) {
        $q.= " || genere = 'elemento4' ";
    }
    if (isset($_POST['c5'])) {
        $q.= " || genere = 'elemento5' ";
    }
    if (isset($_POST['c6'])) {
        $q.= " || genere = 'elemento6' ";
    }
    if (isset($_POST['c7'])) {
        $q.= " || genere = 'elemento7' ";
    }
    if (isset($_POST['c8'])) {
        $q.= " || genere = 'elemento8' ";
    }
    $q.= ")";
}
$q.= " ORDER BY nome";  
$id_ris = mysql_query($q)
        or die("Non è possibile eseguire la query!");
$num_libri = mysql_num_rows($id_ris);
mysql_data_seek($id_ris, 0);
echo "<table border='1'>";
echo "<tr>";
echo "<td>Tipo</td>";
echo "<td>Quantità</td>";
echo "<td>Prezzo</td>";
echo "<td>Genere</td>";
echo "<td>Nome</td>";
echo "</tr>";
for ($i = 0; $i < $num_libri; $i++) {
    $record = mysql_fetch_array($id_ris);
    echo "<tr>";
    echo "<td>", $record[0], "</td>";
    echo "<td>", $record[1], "</td>";
    echo "<td>", $record[2], "</td>";
    echo "<td>", $record[3], "</td>";
    echo "<td>", $record[4], "</td>";
    echo "</tr>";
}
echo "</table>";
?>  
</html>

e qui il form:
HTML:
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="AlterVista - Editor HTML">
<TITLE></TITLE>
<form action="action.php" method="post" target="_blank">
<span style="font-style: italic;">Ricerca per tipo</span><br><br>
<span style="font-weight: bold; font-style: italic;">
Scelta:
<br>
</span>
<font size="3">
<table>
<tr>
<td>
<input name="c1" type="checkbox">elemento1<br>
<input name="c2" type="checkbox">elemento2<br>
<input name="c3" type="checkbox">elemento3<br>
<input name="c4" type="checkbox">elemento4<br>
<input name="c5" type="checkbox">elemento5<br>
<input name="c6" type="checkbox">elemento6<br>
<input name="c7" type="checkbox">elemento7<br>
<input name="c8" type="checkbox">elemento8<br>
</td>
</table>
</font>
<br>
<input value="RICERCA" type="submit">
<input value="ANNULLA" type="reset">
</form>
</HEAD>
<BODY>
<P>&nbsp;</P>
</BODY>
</HTML>

non avete idea dell'aiuto monumentale che mi avete dato! Vi ringrazio di cuore
Comunque non è detto che sia finita qui. E' probabile che presto dovrò richiedervi altri aiuti...:fonzie:
grazie ancora!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 11 Feb 2012
  • #25
ciao
@ciric
non capisco bene la tua osservazione: se è ininfluente a che servono i chek e la loro eventuale selezione?
che poi la query non sia come dovrebbe essere è un'altro discorso e quindi deve/o/i costruirla meglio, ma se non dai un value il valore di qualsiasi chek e null (o vuoto).
forse la query andrebbe scritta meglio senza 1=1 AND e togliere l'ultimo OR
ma concatenere una stringa $stringa = 'elemento1' OR genere = 'elemento2' OR.....
togliere l'ultimo OR con substring e, se non vuota, aggiungere il where davanti
PHP:
<?php
$q = "SELECT * FROM dati "; 
$whe_2=""; 
foreach($_POST['c'] as $valore){ 
    if($valore !=""){ 
        $whe_2.=" genere = '$valore' OR"; //l'OR in fondo
    } 
}
if(strlen($whe_2) >0){
	$whe_2=" WHERE ".substr($whe_2,0,(strlen($whe_2)-2));
}
$q .= $whe_2." ORDER BY nome";
/*
quindi se ho checcato es. due chek il 2 e il 4) la query diventa
$q = "SELECT * FROM dati WHERE  genere = 'elemento2' OR genere = 'elemento4' ORDER BY nome";
quindi ti estrae i record in cui genere sia uguale a elemento2 oppure a elemento4
*/
//e qui il solito var_dump. !!!fai delle prova e posta il/i risultato/i del var_dump 
var_dump($q); 
//questo indipendentemente da quanto la query ti fa vedere 
//.... 
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 11 Feb 2012
  • #26
Felice cmq che il nostro amico abbia risolto
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 11 Feb 2012
  • #27
ehm...purtroppo non ancora...
ho dovuto modificare la mia query facendo una selezione su piu tabelle identiche

Codice:
$q = "SELECT * FROM tabella1 UNION SELECT * FROM tabella2 UNION SELECT * FROM tabella3 ";

ma facendo le selezioni con le checkbox mi dice "non è possibile eseguire la query"
non è che potreste darmi l'ultimo aiuto?
grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 11 Feb 2012
  • #28
questo è masochismo

hai qualche campo che accomuna le tabelle?

tipo id

se si ti conviene considerare le JOIN
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 12 Feb 2012
  • #29
adoro farmi male...

le tabelle non hanno campi in comune.
Speravo di poterci riuscire senza usare le join, che le ho provate con il vecchio script e non funzionavano.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 13 Feb 2012
  • #30
ma facendo le selezioni con le checkbox mi dice "non è possibile eseguire la query"
non è che potreste darmi l'ultimo aiuto?
Clicca per allargare...

metti piu info
PHP:
$id_ris = mysql_query($q)
        or die("Non è possibile eseguire la query!<br/>" . $q . "<br/>" . mysql_error());
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 14 Feb 2012
  • #31
scrivendo cosi, mi da quando seleziono le checkbox il seguente messaggio

Non è possibile eseguire la query!
select * from tab1 union select * from tab2 union select * from tab3 && (1=0 || genere = 'elemento1' || genere = 'elemento2' )
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '&& (1=0 || genere = 'elemento1' || genere = 'elemento2' )' at line 1
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 14 Feb 2012
  • #32
select * from tab1 union select * from tab2 union select * from tab3 && (1=0 || genere = 'elemento1' || genere = 'elemento2' )
Clicca per allargare...


manca il WHERE 1=1

lo hai perso
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 14 Feb 2012
  • #33
l'ho inserito ma adesso anche selezionando le checkbox, mi visualizza sempre tutti i dati del db.
mentre se cambio la query in questo modo inserendo where 1=1 ad ogni tabella

Codice:
$q="select * from tab1 WHERE 1=1 union select * from tab2 WHERE 1=1 union select * from tab3 WHERE 1=1 ";

mi funziona solo con la tab3...
boh!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 14 Feb 2012
  • #34
dovresti cercare di costruire qualcosa del genere

Codice:
 $q="select tab.* from (
                
                select * from tab1 
                union all
                select * from tab2 
                union all
                select * from tab3 
                
                ) tab
                
                WHERE 1=1 && tab.genere = 'elemento1' order by tab.nome";

non l'ho testata ma dovrebbe funzionare
provala prima direttamente su phpmyadmin, quando sei sicuro che i risultati sono quelli che ti aspetti cominci a costruirla con il php
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 14 Feb 2012
  • #35
ok funziona
però scrivendo

Codice:
WHERE 1=1 && tab.genere = 'elemento1'

io inserisco la query che funziona solo su quel dato elemento, rendendo inutile la selezione delle checkbox. Per intenderci, eseguendo questa query mi fa vedere tutti gli elementi1 delle tabelle. Ma selezionando elemento3, sempre elemento1 mi fa vedere...
come faccio a farlo funzionare tramite checkbox?
ciao
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 14 Feb 2012
  • #36
ciao
come faccio a farlo funzionare tramite checkbox?
Clicca per allargare...
mi sembra che circic te l'abbia gia postato (mi sembra a pg 2)
 
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 14 Feb 2012
  • #37
perdonami ma non riesco a capire...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.606
54
48
TN
  • 14 Feb 2012
  • #38
&& tab.genere = 'elemento1'
Clicca per allargare...

era un esempio di come poteva essere la query, non devi metterlo

PHP:
 $q="select tab.* from (
                
                select * from tab1 
                union all
                select * from tab2 
                union all
                select * from tab3 
                
                ) tab
                
                WHERE 1=1";

e poi vai avanti come facevi prima

ricorda di mettere tab. prima del nome del campo

es:tab.genere
 
Ultima modifica: 14 Feb 2012
D

danpippo

Utente Attivo
17 Mar 2006
31
0
0
  • 15 Feb 2012
  • #39
grazie ancora!
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

D
Jquery - modifica elemenento onlick
  • Dantevil
  • 1 Apr 2023
  • jQuery
Risposte
1
Visite
2K
jQuery 2 Apr 2023
WmbertSea
A
[PHP] Modifica caratteri di una query Oracle SQL
  • Andrea Franz
  • 26 Set 2018
  • PHP
Risposte
0
Visite
1K
PHP 26 Set 2018
Andrea Franz
A
G
Problemi con modifica dati in query di aggiornamento
  • GQ68
  • 29 Set 2014
  • MS Access
Risposte
6
Visite
2K
MS Access 30 Set 2014
marino51
F
[Offro collaborazione][Gratuito] Modifica script PHP,jQuery,GD Library
  • frenkytribe
  • 20 Nov 2013
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 20 Nov 2013
frenkytribe
F
F
Query modifica contenuto campo
  • floppyes
  • 9 Feb 2013
  • MySQL
Risposte
5
Visite
2K
MySQL 10 Feb 2013
floppyes
F
R
  • Bloccata
Cerco programmatore di jquery per piccola modifica a un framework, pagato
  • roberto2101
  • 30 Apr 2012
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
1
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 9 Ago 2012
f107
Modifica query PHP con menu a tendina
  • neo996sps
  • 13 Feb 2012
  • PHP
Risposte
1
Visite
2K
PHP 13 Feb 2012
borgo italia
[Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress
  • Lino80
  • 9 Gen 2023
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
3K
Offerte e Richieste di Lavoro e/o Collaborazione 9 Gen 2023
Lino80
  • Bloccata
Modifica codice php personalizzato
  • JeiMax
  • 11 Set 2022
  • PHP
Risposte
2
Visite
1K
PHP 12 Set 2022
Max 1
P
Pagina modifica record che non funziona
  • precogcris
  • 28 Set 2021
  • PHP
Risposte
0
Visite
1K
PHP 28 Set 2021
precogcris
P
L
  • Bloccata
Modifica file upload in ASP
  • LucaVet
  • 29 Lug 2021
  • Classic ASP
Risposte
2
Visite
2K
Classic ASP 28 Ago 2021
Paolo69
P
modifica colore A Hover link website .
  • ppobi
  • 4 Mar 2021
  • WordPress
Risposte
2
Visite
2K
WordPress 4 Mar 2021
ppobi
P
P
Modifica con PHP di un node in una sitemap xml
  • Peterrey76
  • 27 Lug 2020
  • PHP
Risposte
0
Visite
1K
PHP 27 Lug 2020
Peterrey76
P
C
Software modifica sitoweb in tempo reale
  • Cpu03
  • 30 Mag 2020
  • WordPress
Risposte
12
Visite
4K
WordPress 30 Mag 2020
Alex_70
G
Modifica immagine di sfondo attraverso un bottone
  • Gianluca66
  • 22 Mag 2020
  • PHP
Risposte
18
Visite
3K
PHP 23 Mag 2020
Max 1
L
modifica dati.
  • luigi777
  • 21 Apr 2020
  • PHP
Risposte
1
Visite
2K
PHP 22 Apr 2020
macus_adi
G
modifica corretta funzione da eregi() a preg_match()
  • giuliox13
  • 6 Apr 2020
  • PHP
Risposte
3
Visite
2K
PHP 7 Apr 2020
giuliox13
G
R
Modifica codice per l'upload di più file
  • rino2002
  • 16 Mar 2020
  • PHP
Risposte
1
Visite
1K
PHP 30 Mar 2020
Flaviors200
G
Modifica testo
  • Giackko86
  • 6 Feb 2020
  • Photoshop
Risposte
3
Visite
2K
Photoshop 25 Feb 2020
InformaticS
I
Excel: popolare una cella con la data di modifica della riga a cui appartiene
  • felino
  • 5 Feb 2020
  • Windows e Software
Risposte
3
Visite
5K
Windows e Software 5 Feb 2020
felino
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?