Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Condizione dentro il SELECT

    Non so come eseguire un semplice select condizionato, qualcosa del genere.

    $sql = "
    SELECT nomeprodotto
    FROM prodotti
    WHERE costo = 122
    AND if ($_POST['garanzia'] != "") {garanzia = $_POST[garanzia]}
    ";

    nel caso il cliente selezioni la garanzia (es. 5 anni) allora devo estrarre tutti i prodotti con 5 anni di garanzia, ma se non la seleziona allora deve ignorare il parametro.

    Potrei mettere a monte l'if:

    if ($_POST['garanzia'] != "") {
    $sql = "
    SELECT nomeprodotto
    FROM prodotti
    WHERE costo = 122
    AND garanzia = $_POST[garanzia]
    ";
    }

    ma il problema si ripropone in quanto ho una ventina di parametri OPZIONALI, pertanto dovrei trovare una soluzione per qualcosa del genere:

    $sql = "
    SELECT nomeprodotto
    FROM prodotti
    WHERE costo = 122
    AND if ($_POST['garanzia'] != "") {garanzia = $_POST[garanzia]}
    AND if ($_POST['peso'] != "") {peso= $_POST[peso]}
    AND if ($_POST['colore'] != "") {colore= $_POST[colore]}
    AND if ($_POST['nazione'] != "") {nazione= $_POST[nazione]}
    etc
    ";

    Idee? Grazie!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Sai quali parametri opzionali hai nella form che utilizza l'utente, giusto?
    Allora fai così
    Codice PHP:
    $condizioni "costo='".$_POST['costo']."' AND "//non va dentro un if se sei sicura che questo c'è sempre
    if ($_POST['garanzia'] != "") {
        
    $condizioni .= " garanzia='".$_POST['garanzia']."' AND "//NB dentro gli if c'è .= non solo =
    }
    if (
    $_POST['peso'] != "") {
        
    $condizioni .= "peso='".$_POST['peso']."' AND ";
    }
    if (
    $_POST['colore'] != "") {
        
    $condizioni .= "colore='".$_POST['colore']."' AND ";
    }
    if (
    $_POST['nazione'] != "") {
        
    $condizioni .= "nazione='",$_POST['nazione']."' AND ";
    }

    $condizioni substr($condizioni0, -4); //toglie l'ultimo AND che non serve

    //a questo punto
    $sql "
    SELECT nomeprodotto
    FROM prodotti
    WHERE "
    .$condizioni

  3. #3
    Infatti funziona perfettamente!

    Non mi sarebbe mai venuto in mente di creare una variabile prima per metterla dopo il where, per fortuna c'eri tu... che dire un grosso GRAZIEEEE di cuore!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.