- Home
- Categorie
- Coding e Sistemistica
- PHP
- sql- variabile per scegliere la tabella
-
sql- variabile per scegliere la tabella
Ciao a tutti,
ho un database che contiene una serie di tabelle, io voglio effettuare la ricerca in una di queste tabelle, quindi nel form ho messo un campo per scegliere da quale tabella estrare i risultati, e nell'sql questo :
SELECT * FROM 'tabella' WHERE categoria = 'contratto' ORDER BY ID DESC.
Pero cosi non funziona, se nvece metto direttamente una tabella , cioè direttamente il nome e non una variabile passata dalla pagina di ricerca, lo script funziona, in cosa sbaglio nell'sql?
Spero di essere riuscito a spiegarmi.
Grazie
-
Ciao kaisersose,
supponendo che il campo si chiami nome_tabella e che il form sia inviato mediante POST, dovresti scrivere:$sql = "SELECT * FROM ".$_POST['nome_tabella']." WHERE categoria = 'contratto' ORDER BY ID DESC";
Facci sapere se così funziona...
-
E quello che ho fatto io ma la pagina rimane bianca.
E un sito che sto rifacendo, basato sui comportamenti server di dreamweaver, che tra l'altro non ho fatto io, e sto cercando di seguire la struttura senza dover modificare tutto il codice,ho inserito la quesry sia manuale che col query builder e niente non va, se invece metto invece dela variabile il nome della tabella funziona, possibile che non si puo estrarre il nome di una tabella? seno al liimite provo a riscrivere tuta la pagina che forse faccio prima.
comunque posto il codice creato da dreamweaver:<?php if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } mysql_select_db($database_nome, $nomeconnessione); $query_Recordset1 = "SELECT * FROM .$_POST['tabella']. WHERE categoria = .$_POST['contratto']. ORDER BY ID DESC"; $Recordset1 = mysql_query($query_Recordset1, $nomeconnessione) or die(mysql_error()); $row_Recordset1 = mysql_fetch_assoc($Recordset1); $totalRows_Recordset1 = mysql_num_rows($Recordset1); ?>
piu il codice per richiamare la pagina di connessione.
dici che conviene rifare tutta la pagina?
-
Prova a modificare:
$query_Recordset1 = "SELECT * FROM .$_POST['tabella']. WHERE categoria = .$_POST['contratto']. ORDER BY ID DESC";
in
$query_Recordset1 = "SELECT * FROM ".$_POST['tabella']." WHERE categoria = ".$_POST['contratto']." ORDER BY ID DESC";