Query dinamica

  • Creatore Discussione Creatore Discussione tyde
  • Data di inizio Data di inizio

tyde

Nuovo Utente
4 Apr 2007
5
0
0
PHP/MySql

Ciao, volevo sapere se è possibile (e se si come) creare una query SQL dall'utente.

Mi spiego meglio. Vorrei che un utente possa scegliere di
visualizzare solo alcuni campi di una tabella, quindi decida quali campi
la query (SELECT) debba andare a pescare.

E' possibile?
Grazie in anticipo per l'aiuto.
 
puoi utilizzare un menu a tendina con le rispettive tabelle, una volta cliccata la tabella fai partire la query
 
grazie a tutti...

...diciamo che in un certo modo ho risolto.
in pratica, ho fatto in modo da creare dinamicamente la query attraverso un form. sintetizzando arrivo ad avere la seguente situazione:

"$query" è una strionga in cui vengono memorizzate le colonne scelte dall'utente (nel formato campo 1, campo2 etc...)

"$tab" ovviamente e la tabella scelta sempre dall'utente

"$id" è un indice...

quindi ottengo una cosa del genere:

$q = "SELECT $query FROM $tab WHERE id = '$id'";
$check = mysql_query($q) or die("Query fallita");
while ($row = mysql_fetch_array($check)) {
?>

e costruisco la tabella con i risultati
<table>
<td></td>.....
....</table>
<?
}
?>

Ora, il problema è che la query non funziona.
Se la scrivo io a mano, sostituendo i valori delle variabili con i nomi delle colonne, tutto ok ma se scrivo al loro posto la variabile $query...non ne vuole sapere.

Ho fatto diversi tentativi e l'unico problema lo da solo $query, $tab e $id sono Ok.

Qualcuno ci ha capito qualosa?:dipser: :crying:
 
dunque...

...ci avevo già provato. alcuni problemi sono stati risolti e un'altro si presenta a dir poco fastidioso.
La situazione adesso è che la query funziona benissimo. La cosa strana però è che quando imposto la condizione (WHERE $id LIKE $mioID) se $mioID è un numero funziona se invece si tratta di una caratteri no. Ho anche provato a usare "=" anziché "LIKE" ma non ne vuol sapere.
Devo venirne assolutamente a capo, visto che si tratta dell'ultimo scoglio!
 
provato...

...ma niente. Però ho capito che il problema non sta nella stringa in se ma nel modo di passarla. Cioè, se invio la query come ho fatto finora lo script mi restituisce query fallita ma se scrivo io stesso la query all'interno dello script funzionna.
Cerco di spiegarmi meglio:

In pratica se io invio:
$querystring="SELECT $query FROM $tab WHERE id LIKE $myid";

alla pagina che lo processa attraverso:

$q = $HTTP_POST_VARS[querystring];

$check = mysql_query($q) or die("Query fallita");
while ($row = mysql_fetch_array($check)) {
?>
<table> ect...

Non ne vuole sapere ma se scivo io stesso come segue nello script:

$q = SELECT $query FROM $tab WHERE id LIKE 'mio_id";

$check = mysql_query($q) or die("Query fallita");
while ($row = mysql_fetch_array($check)) {
?>
<table> ect...

Allora tutto OK. Quindi credo che mi sfugga qualcosa sul modo di passargli la variabile $myid...


:confused: :eek:
 
ci avevo provato però...

...adesso mi sono accorto che l'errore è causato dal fatto che se metto gli apici la stringa che viene passata si trasforma da:
$q = "SELECT id, g1, g2 FROM GEN WHERE id LIKE 'sc01'";
a questa:
$q = "SELECTid, g1, g2 FROM GEN WHERE id LIKE \'sc01\' ";
 

Discussioni simili