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
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
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