esatto quindi basta mettere l'or al posto di AND
esatto quindi basta mettere l'or al posto di AND
la tua query non verrebbe mai soddisfatta, in quanto nomecampo dovrebbe essere uguale ad un valore e contemporaneamente anche ad un altro.Originariamente inviato da gizax
non capisco...
select * from TABELLA where nomecampo='$campo1' and nomecampo='$campo2' and nomecampo='$campo3' etc etc soddisfa pienamente i requisiti della richiesta. Viene visualizzato il risultato se almeno una di queste condizioni è vera..
![]()
io l'avevo intesa come VaLvOnAuTa; che la ricerca venisse fatta in più campi, non in uno soltanto. se invece la ricerca viene fatta in un solo campo ci vuole per forza l'OR, l'AND rende automaticamente impossibile estrarre anche un solo record che soddisfi la condizione, a meno che non ci metti le %; ma anche in questo caso è un pò complicato che soddisfi tutte le condizioni insieme, ma dipende comunque anche da come è stato strutturato il suo db.
![]()
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone
Si infatti bisogna conoscere la struttura del DB, e vedere su quanti campi viene effettuata la ricerca..
E cmq l'AND può essere inserita ma ci vuole un LIKE %valore%..
"La teoria è quando si sa tutto e niente funziona. La pratica è quando
tutto funziona e nessuno sa il perché. In questo caso, abbiamo messo
insieme la teoria e la pratica: non c'è niente che funziona... e nessuno sa
il perché!" (Albert Einstein)
ma non aveva detto che non voleva tutta una serie di if? :master:Originariamente inviato da Inoki
Se campo1 è = "" in questo script ci sarebbe un errore..io correggerrei con:
...
anche per me sarebbe più corretto strutturare lo script come suggerito da voi, ma la richiesta mi sembrava diversa...
![]()
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone
Io lo modificherei ancora:[supersaibal]Originariamente inviato da Inoki
Se campo1 è = "" in questo script ci sarebbe un errore..io correggerrei con:
[/supersaibal]Codice PHP:$where="";
if ($_POST['campo1'] != "") {
$where .= "campo1='".$_POST['campo1']."'";
}
if ($_POST['campo2'] != "") {
$where .= ($where == "") ? "campo2='".$_POST['campo2']."'" : " AND campo2='".$_POST['campo2']."'";
}
if ($_POST['campo3'] != "") {
$where .= ($where == "") ? "campo3='".$_POST['campo3']."'" : " AND campo3='".$_POST['campo3']."'";
}
mysql_query("SELECT * FROM tabella WHERE ".$where);
In questo modo se l'utente non riempie nessun campo ma invia lo stesso il form non si otterrà un errore di sintassi nella queryCodice PHP:$where="";
if ($_POST['campo1'] != "") {
$where .= "campo1='".$_POST['campo1']."'";
}
if ($_POST['campo2'] != "") {
$where .= ($where == "") ? "campo2='".$_POST['campo2']."'" : " AND campo2='".$_POST['campo2']."'";
}
if ($_POST['campo3'] != "") {
$where .= ($where == "") ? "campo3='".$_POST['campo3']."'" : " AND campo3='".$_POST['campo3']."'";
}
if ($where != "") {
mysql_query("SELECT * FROM tabella WHERE ".$where);
}
![]()
esatto ha detto proprio che voleva risolverlo tramite mysql e non tramite 600 mila if![]()
![]()
![]()
![]()
Bhe la sequenza di if, a mio modestissimo parere, è pressochè necessario...Originariamente inviato da 13manuel84
ma non aveva detto che non voleva tutta una serie di if? :master:
anche per me sarebbe più corretto strutturare lo script come suggerito da voi, ma la richiesta mi sembrava diversa...
![]()
Anche perchè ti permette di creare le query ad hoc e ottimizzarle a seconda della richiesta dell'utente...
Ma perchè non vuoi mettere le if? :master:
"La teoria è quando si sa tutto e niente funziona. La pratica è quando
tutto funziona e nessuno sa il perché. In questo caso, abbiamo messo
insieme la teoria e la pratica: non c'è niente che funziona... e nessuno sa
il perché!" (Albert Einstein)
ma sei campi sono 5...Originariamente inviato da gizax
esatto ha detto proprio che voleva risolverlo tramite mysql e non tramite 600 mila if![]()
![]()
![]()
![]()
![]()
"La teoria è quando si sa tutto e niente funziona. La pratica è quando
tutto funziona e nessuno sa il perché. In questo caso, abbiamo messo
insieme la teoria e la pratica: non c'è niente che funziona... e nessuno sa
il perché!" (Albert Einstein)
Sì ma la tua query non avrebbe mai resituito qualcosa.Originariamente inviato da gizax
esatto ha detto proprio che voleva risolverlo tramite mysql e non tramite 600 mila if![]()
![]()
![]()
![]()
Purtroppo la serie di if è l'unico modo sicuro.
Io in una query di update sono arrivato ad averne più di 20. Non sarà canonico nè elegante nè velocissimo ma è funzionale![]()
sto provando la soluzione di valvonauta con le opportune modifiche !!
tra una decina di minuti vi dico il risultato !!
Per il momento grazie infinitamente a tutti per l'aiuto !!
Nulla è impossibile. Il difficile è trovare la soluzione che renda l'impossibile possibile...
http://www.eternaldream.it