Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Atrus
    Registrato dal
    May 2003
    Messaggi
    211

    query mysql per pagina di ricerca

    Ciao Ragazzi,
    sono nuovo di php e mysql e sono qui per chiedervi un piccolo aiuto.

    Per il mio sito ho creato una pagina di ricerca avanzata dove, per farla breve, posso cercare prodotti eseguendo combinazioni su circa 10 opzioni (ma potrebbero diventare anche più).

    Cioè, può capitare che:
    SELECT * FROM PRODOTTI WHERE OPZ1=1
    ...ma anche:
    SELECT * FROM PRODOTTI WHERE OPZ1=1 and OPZ4=1
    ecc...

    Il mio dubbio è:
    posso creare una singola stringa sql che passi tutte le opzioni? Anche nel caso siano vuote? Oppure devo sempre controllare che la variabile contenga dati e quindi passare una stringa personalizzata? In questo modo le combinazioni non sarebbero troppe?

    Grazie
    Ora ricordo perchè ho visitato questi mondi...
    Quanto tempo ho atteso...
    Ricordo chi sono io e chi sono i miei nemici.

  2. #2
    E' molto meglio costruire un clausola WHERE apposita per ogni richiesta, in questo modo hai la massima elasticità e le migliori prestazioni.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    ciao per me la cosa migliore è costruire passo passo la stringa di ricerca, io ho fatrto un piccolo motore di ricerca, e la stringa mi viene costruita in base ai campi che vengono riempiti dall'utente!
    ti posto il codice, così puoi dargli un'occhiata, non è nulla di che, ma magari può esserti utile:



    ricerca con il criterio OR:
    codice:
    if ((($_POST[chiave]) == ("")) and (($_POST[chiave_testata]) == ("")) and (($_POST[chiave_ISSN]) == ("")) and (($_POST[chiave_soggetto]) == (""))) 
    die ("
    
    <center><font  size=\"4\" color=\"#000066\">Bisogna Inserire Almeno Un Campo Per Poter Effettuare La Ricerca </font></center>");
    $query="";
    if ($_POST['rata'] != "0")
    {
        $query .= "SELECT * FROM riviste WHERE";
        if ($_POST['chiave'] != "")
        {
            $query .= " editore LIKE '%" . $_POST['chiave'] . "%' or ";
        }
        if ($_POST['chiave_testata'] != "")
        {
            $query .= " testata LIKE '%" . $_POST['chiave_testata'] . "%' or ";
        }
        if ($_POST['chiave_ISSN'] != "")
        {
            $query .= " ISSN = '" . $_POST['chiave_ISSN'] . "' or ";
        }
        if ($_POST['chiave_soggetto'] != "")
        {
            $query .= " soggetto LIKE '%" . $_POST['chiave_soggetto'] . "%' or ";
        }
    $query.="0";
    ricerca con il criterio AND:

    codice:
    if (($_POST['rata'])!=("1")){
     $query .= "SELECT * FROM riviste WHERE";
        $i=0;
        if ($_POST['chiave'] != "")
        {
            $query .= " editore LIKE '%" . $_POST['chiave'] . "%' ";
    	$i=1;
        }
        if (($_POST['chiave_testata'] != "") and ($i==1))
        {
            $query .= " and testata LIKE '%" . $_POST['chiave_testata'] . "%'";
    	$i=2;
        }
        if (($_POST['chiave_testata'] != "") and ($i==0))
        {
            $query .= " testata LIKE '%" . $_POST['chiave_testata'] . "%'";
    	$i=3;    
        }
        if (($_POST['chiave_ISSN'] != "") and (($i==1)or($i==2)or($i==3)))
        {
            $query .= " and ISSN = '" . $_POST['chiave_ISSN'] . "' ";
    	$i=4;    
        }
        if (($_POST['chiave_ISSN'] != "") and ($i==0))
        {
            $query .= " ISSN = '" . $_POST['chiave_ISSN'] . "' ";
    	$i=5;
        }
        if (($_POST['chiave_soggetto'] != "") and (($i==1)or($i==2)or($i==3)or($i==4)or($i==5)))
        {
            $query .= " and soggetto LIKE '%" . $_POST['chiave_soggetto'] . "%'";
        }
        if (($_POST['chiave_soggetto'] != "") and ($i==0))
        {
            $query .= " soggetto LIKE '%" . $_POST['chiave_soggetto'] . "%'";
        }
    Fuck Your Mind Dance your Brain!

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.