• Super User

    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
    🙂


  • User Attivo

    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...
    :ciauz:


  • Super User

    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?


  • User Attivo

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