Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32

Discussione: Where Multipli

  1. #1

    Where Multipli

    Ciao a tutti, poco tempo fa ho posto lo stesso problema e qualcosa ho risolto. Manca ancora qualcosa...

    Ho un form con diversi campi di ricerca (data, giocatore, squadra, goal segnati); ogni campo genera un WHERE che si andrà ad aggiungere alla query

    SELECT * FROM partite WHERE data=$dat AND giocatore=$giocaatore AND ecc. Se non viene scelto nessun parametro di ricerca restituisce tutti i risultati (e fino qui funziona). La domanda è questa: come faccio a sommare SOLO i parametri scelti in modo che i risultati vi corrispondano a tutti contemporaneamente?
    Altra domanda: come annullo i "WHERE" non scelti in modo che non interferiscano nella ricerca di risultati?
    Per gestire ogni where ricorro ad un ciclo if.
    Potrebbe essere una soluzione creare un array solo con i parametri inviati? Se sì, i campi del form li devo quindi chiamare tutti nello stesso modo?

    Grazie e Buone Feste a tutti !!!!!

  2. #2
    Per la prima domanda... non ho capito
    Per la seconda ti consiglio di creare ua funzione così:
    Codice PHP:
    function iif($condizione$allora$altrimenti 0) {
    return (
    $condizione) ? $allora $altrimenti
    E poi nella query fai:
    codice:
    query("SELECT * FROM ... " . iif($b != 0, 'WHERE b = 2'));
    Ciao
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  3. #3
    Il meccaniscmo l'ho capito, però non riesco ad impostare la funzione: mi restituisce errori di sintassi.

    Codice PHP:
    function iif(($_REQUEST['com']) != ''$where .= " AND WHERE partitelle.comp LIKE '$competizione'"$where 0) {
    return ((
    $_REQUEST['com']) != '') ? $where $where;

    Altra domanda: dal momento che ho più funzioni iif, una di seguito all'altra, una per ogni parametro di ricerca del form, devo unificarle tra loro? Con &&, o ||?

    Grazie

  4. #4
    Altra domanda: la variabile $b, che compare nella query finale, da dove sbuca?

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    avrai sicuramente un form dove si inserisce la parola chiave, e le condizioni supplementari

    appena ti arriva il form verifichi se c'è la parola chiave e poi

    Codice PHP:

    $query
    ="SELECT * FROM tabella";

    $ext=array();
    if (isset(
    $_POST['dove1'] && !empty($_POST['dove1'])) $ext[]=" campo LIKE '%$parola%'";
    if (isset(
    $_POST['dove2'] && !empty($_POST['dove2'])) $ext[]=" campo LIKE '%$parola%'";
    if (isset(
    $_POST['dove3'] && !empty($_POST['dove3'])) $ext[]=" campo LIKE '%$parola%'";
    if (isset(
    $_POST['dove4'] && !empty($_POST['dove4'])) $ext[]=" campo LIKE '%$parola%'";

    if (!empty(
    $ext)) $query.=" WHERE ".implode(" AND ",$ext); 
    se non è proprio la tua situazione, spero tu abbia recepito il concetto
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Ci siamo, la funzione è questa ma c'è un errore. Devo cercare i risultati SOLO per i parametri che sono inviati, per gli altri devo trovare il modo di annullarli. Ecco la stampa della query:

    Codice PHP:
    SELECT id,data,comp,playa,teama,goala,vpna,playb,teamb,goalb,vpnb FROM partitelle WHERE iddate LIKE '%option%' AND data LIKE '%option%' AND comp LIKE '%option%' AND playa && playb LIKE '%option%' AND idteama && idteamb LIKE '%option%' AND goala && goalb LIKE '%option%' AND vpna && vpnb LIKE '%option%'
    Warningmysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Internet\Easyphp\www\lugoroosters\pag_risult.php on line 33
    Non ci sono risultati per i parametri scelti
    !! 
    se non viene selezionato alcun parametro, il risultato è "tutti i risultati"

    Per spiegarmi meglio: i parmetri sono come dei filtri che si sovrappongono e restituiscono solo i risultati che rispondono ad ogni parametro scelto/inviato.

  7. #7
    dimenticavo: il form e la conseguente pagina dei risultati, sono visibili qui: http://utenti.lycos.it/lugoroosters/index.htm entrando nel sito scegliete "archivio partite" dal menù di sinistra.

  8. #8
    Ho corretto l'errore ma continua a ricercare anche i parametri che non invio e quindi non trova niente. Ad ogni campo del Form ho dato come valore "nullo" una lettera diversa. Nella query ho inserito un if nel quale si spiega che se
    primo campo = a,
    secondo campo =b,
    ecc...
    vuol dire che tutti i campi sono inviati vuoti perciò la richiesta è SELECT * FROM tabella.
    Se invece il campo invia un POST, deve cercare
    il POST1 nella colonna1,
    il POST2 nella colonna2,
    ecc...

    i risultati trovati devono rispettare tutti i POST inviati

  9. #9
    sono riuscito ad escludere dalla ricerca i $POST che vengono inviati vuoti. Se vengono inviati tutti vuoti ricerca tutti i risultati

    Codice PHP:
    SELECT id,data,comp,playa,teama,goala,vpna,playb,teamb,goalb,vpnb FROM partitelle WHERE id>0
    Warning
    mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\ ..... pag.php on line 44
    Non ci sono risultati per i parametri scelti
    !! 
    se scelgo uno o più parametri mi cerca i risultati così:
    Codice PHP:
    SELECT id,data,comp,playa,teama,goala,vpna,playb,teamb,goalb,vpnb FROM partitelle WHERE iddate == '1' AND idteama && idteamb == '27'
    Warningmysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\ ..... pag.php on line 44
    Non ci sono risultati per i parametri scelti
    !! 
    Mi stampa le query corrette ma i risultati no!!

  10. #10
    adesso mi stampa giusta solo la prima pagina e nelle altre passa la query in modo sbagliato!!!



    non ci capisco più una mazza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.