[PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause'

username90

Nuovo Utente
27 Ott 2016
29
0
1
30
Buongiorno a tutti ragazzi, sto creando un form per la ricerca multipla di una ricetta e ho scritto due file: "op3.php" e "qrymultipla.php". Due file perchè il primo a un certo punto invoca "qrymultipla.php". L'errore che mi compare, ovvero Unknown column 'undefined' in 'where clause', sta nel file qrymultipla.php di cui ora vi posto il mio codice. Potete darmi una mano a capire dove sbaglio? mastico da poco il php non sono ancora una smanettona. Grazie

PHP:
<?php
include "myclassSQL.php";

//Crea istanza classe myclassSQL
$db=New myclassSQL();
//Stabilisce connessione con il server
$db->Connect();

/*
 * Variabili in input
 * tip: Tipologia
 * ing: Ingredienti
 * t1,t2: Tempo minimo, tempo massimo
 * dif: Difficolta(1..5)
 * op1,op2,op3: Operators (OR AND)
 */

/*
 * Costruzione condizione
 */

$tip=$_POST['tip'];
$ing=$_POST['ing'];
$dif=$_POST['dif'];
$t1=$_POST['t1'];
$t2=$_POST['t2'];
$op1=$_POST['op1'];
$op2=$_POST['op2'];
$op3=$_POST['op3'];

if(isset($_POST['totale'])) {
    $tot=$_POST['totale'];   
} else $tot="no";

$condizione = "WHERE ";
$condizione .= "R.tipologia=".$tip." ";
$condizione .= $op1;
$condizione .= " (".$ing." IN (SELECT ingrediente FROM composizione WHERE ricetta=R.id_ricetta)) ";
$condizione .= $op2;
$condizione .= " R.cottura BETWEEN ".$t1." AND ".$t2." ";
$condizione .= $op3;
$condizione .= " R.difficolta=".$dif." ";

$query = "SELECT R.id_ricetta as ID,
                 R.nome as Nome,
                   R.porzioni as Porzioni,
                 R.cottura as 'Tempo cottura',
                   DATE_FORMAT(P.data,'%d-%m-%Y') as Data,
                 R.note as Note,
                   R.calorie as Calorie
                 FROM pubblica P
            LEFT JOIN ricetta R ON R.id_ricetta=P.ricetta 
            ";
$query .= $condizione;   

echo $db->TableFromDB($query,($tot=="si")?6:Null,Null,0);

$db->close();
$db=Null;
?>
Il messaggio di errore è il seguente:
Errore: Unknown column 'undefined' in 'where clause',
SELECT R.id_ricetta as ID, R.nome as Nome, R.porzioni as Porzioni, R.cottura as 'Tempo cottura', DATE_FORMAT(P.data,'%d-%m-%Y') as Data, R.note as Note, R.calorie as Calorie FROM pubblica P LEFT JOIN ricetta R ON R.id_ricetta=P.ricetta WHERE R.tipologia=undefined OR (0 IN (SELECT ingrediente FROM composizione WHERE ricetta=R.id_ricetta)) OR R.cottura BETWEEN 0 AND 1000 OR R.difficolta=2
 

marino51

Utente Attivo
28 Feb 2013
2.912
162
63
Lombardia
leggi la query che ti viene esposta con l'errore,
PHP:
SELECT
R.id_ricetta as ID,
R.nome as Nome,
R.porzioni as Porzioni,
R.cottura as 'Tempo cottura',
DATE_FORMAT(P.data,'%d-%m-%Y') as Data,
R.note as Note,
R.calorie as Calorie
FROM pubblica P
LEFT JOIN ricetta R
ON R.id_ricetta=P.ricetta
WHERE R.tipologia=undefined
OR (0 IN (SELECT ingrediente FROM composizione WHERE ricetta=R.id_ricetta))
OR R.cottura BETWEEN 0 AND 1000
OR R.difficolta=2
tipologia è probabilmente un dato alfanumerico, quindi il suo valore deve essere rinchiuso tra apici
PHP:
WHERE R.tipologia='undefined'

ovvero

$condizione .= "R.tipologia='".$tip."' ";
 

username90

Nuovo Utente
27 Ott 2016
29
0
1
30
grazie mille, era quello che mi hai detto tu l'errore. cavolo non ci avevo fatto caso. grazie.