Salve a tutti, sto sbattendo la testa su di una query che possa trovare sei record e al contempo ordinarli in base ad una qualche misura di similarità. Mi spiego meglio con un esempio.
Ipotizziamo di avere
(1)una tabella con una serie di macchine con in colonna gli optional (diciamo 5 per ognuna) e rispettivo costo dell'optional:
macchina|optional1|costooptional1|optional2|costoo ptional2|optional3|costooptional3
(2) Un form con tre voci in cui l'utente può selezionare le auto aventi uno o più optional desiderati:
optional1: ______
optional2: ______
optional3: ______
Ciò che mi chiedo è come avere i risultati ordinati in base alla similarità con la query (es. prima le auto aventi tutti e tre gli optional poi quelli con due e infine quelli con solo uno).
Altri problemi, secondari derivano dal fatto che per fare la query devo scrivere OR un sacco di volte e sono sicuro esista un metodo più semplice.
Inoltre vorrei fare in modo che un eventuale utente del servizio possa, prima di avere risultati, essere portato su di una pagina dove completare la propria query (es. l'utente vuole l'optional x e y ma il sistema si rende conto che, se l'utente magari gradisse anche l'optional z al quale non ha pensato mentre inseriva la query, alcuni record avrebbero il 100% di similarità con la query). Penso che quest'ultimo punto sia in realtà molto simile alla prima domanda.
Vi posto il codice utilizzato dal form anche se mi rendo conto che è scritto veramente male (però potrebbe essere un punto di partenza).
Naturalmente non chiedo che qualcuno mi riscolva del tutto il problema ma mi piacerebbe avere qualche spunto o consiglio. Grazie in anticipo!![]()
codice:<?php $con = mysql_connect("####","######","######"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("######", $con); $sql = "SELECT * FROM automobili WHERE optional1 = '$_POST[optional1]' OR optional2 = '$_POST[optional1]' OR optional3 = '$_POST[optional1]' OR optional4 = '$_POST[optional1]' OR optional5 = '$_POST[optional1]' OR optional1 = '$_POST[optional2]' OR optional2 = '$_POST[optional2]' OR optional3 = '$_POST[optional2]' OR optional4 = '$_POST[optional2]' OR optional5 = '$_POST[optional2]' OR optional1 = '$_POST[optional3]' OR optional2 = '$_POST[optional3]' OR optional3 = '$_POST[optional3]' OR optional4 = '$_POST[optional3]' OR optional5 = '$_POST[optional3]' OR optional1 = '$_POST[optional4]' OR optional2 = '$_POST[optional4]' OR optional3 = '$_POST[optional4]' OR optional4 = '$_POST[optional4]' OR optional5 = '$_POST[optional4]' OR optional1 = '$_POST[optional5]' OR optional2 = '$_POST[optional5]' OR optional3 = '$_POST[optional5]' OR optional4 = '$_POST[optional5]' OR optional5 = '$_POST[optional5]'"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { echo $row['ID'] . " " . $row['Nome']; echo " "; } if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } mysql_close($con) ?>

Rispondi quotando
