Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [sql+php] creare tabella db da form

    ciao, devo far in modo di creare in modo veloce delle tabelle da inserire nel database. nel modulo ke uso x creare la tabella, faccio scegliere all'utente il nome ke gli vuole assegnare. tuttavia c'è il rischio ke esista già una tabella con quel nome, creata da qlc altro. cm faccio a verificare se esiste già una tabella con il medesimo nome e ad avvisare l'utente con un allert di scegliere un altro nome? :master:

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Recuperi dal form il nome che l'utente ha scelto.
    A questo punto fai una semplice query nel tuo db.

    select campo_nomi_tabelle from tua_tabella where campo_nomi_tabelle = valore_inserito.

    Nel caso in la funzione mysql_num_rows() restituisca un valore > 0 significa che è già presente e visualizzi l'alert.

    In caso contrario il nome scelto non è ancora stato scelto e quindi procedi con la query di inserimento.

    P.S.Non mi è molto chiaro questo form in cui un utente può inserire tabelle nel db a suo piacimento.

  3. #3
    P.S.Non mi è molto chiaro questo form in cui un utente può inserire tabelle nel db a suo piacimento.
    non è ke tutti gli utenti possono. è riservato allo staff ke gestirà il sito.
    ti posto il codice ke forse è pò + kiaro quel ke vorrei fare:
    codice:
    <form name="form" id="form" method="post" action="<? echo"$PHP_SELF?tab=nuova+tabella"; ?>">Crea un  archivio per gli articoli.
    
    nome dell'archivio <input name="nome_archivio" type="text" id="nome_archivio" />    
    
    
          <input type="submit" name="Submit" value="crea archivio" /></form>
    
    <?
    if($tab==!"")
    {
    if (trim($nome_archivio) == "")
    { 
    echo"Inserisci un nome per il database.";
    }
    else
    {
    echo"L'archivio con nome $archivio è stato correttamente creato. Ora si può procedere ad inserire gli articoli. Per procedere con l'inserimento di un nuovo articolo in $archivio usa il menù utente.";
    mysql_select_db($database_connessione, $connessione);
    $query = "CREATE TABLE $tabella (
      id int(5) NOT NULL auto_increment,
      titolo varchar(100) NOT NULL default '',
      anteprima varchar(255) NOT NULL default '',
      testo text NOT NULL,
      inizio int(10) NOT NULL default '0',
      fine varchar(10) NOT NULL default '',
      foto varchar(255) NOT NULL default '',
      autore_id int(5) NOT NULL default '0',
      controllo set('si','no') NOT NULL default 'no',
      PRIMARY KEY  (id_evento)
    ) TYPE=MyISAM;";
    $result = mysql_query($query, $connessione);
     } }
     ?>
    io vorrei xò, ke prima di creare la tabella mi controllasse ke non esista già sul db una tabella con lo stesso nome.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    Codice PHP:
    <?php
    // Se il form non è stato ancora postato lo visualizzo
    if (!isset($_POST["Invia"]))
    {
    ?>
    <form name="form" id="form" method="post" action="<?php $_SERVER['PHP_SELF'] ?>">Crea un archivio per gli articoli.


    nome dell'archivio
    <input name="nome_archivio" type="text" id="nome_archivio" />



    <input type="submit" name="Invia" value="crea archivio"/>
    </form>
    Codice PHP:
    <?php
    }
    else
    {
    $tabella $_POST['nome_archivio'];
    $conn mysql_connect("localhost","root");
    mysql_select_db("archivio");

    $query mysql_query("show tables from archivio like '$tabella' ");
    // Con questa query verifico se esiste già nel db una tabella con il nome che vorrebbe inserire l'utente
    $num mysql_num_rows($query);
        if (
    $num 0)
            {
                
    // Se il numero è maggiore di 0 significa che il nome non è disponibile
                
    echo "Esiste già una tabella con questo nome 
    "
    ;
                echo 
    "<a href = javascript:history.back()>Inserisci un nome diverso</a>";
            }
        else
            {
                
    // Altrimenti. Eseguo la query di creazione tabella
                
    $query2 mysql_query("CREATE TABLE $tabella (
                 id int(5) NOT NULL auto_increment,
                titolo varchar(100) NOT NULL default '',
                anteprima varchar(255) NOT NULL default '',
                testo text NOT NULL,
                  inizio int(10) NOT NULL default '0',
                  fine varchar(10) NOT NULL default '',
                  foto varchar(255) NOT NULL default '',
                  autore_id int(5) NOT NULL default '0',
                  controllo set('si','no') NOT NULL default 'no',
                  PRIMARY KEY  (id)
                ) TYPE=MyISAM;"
    ) or die ("Impossibile creare la tabella " .mysql_error() );
                if (
    $query2)
                    {
                    
    // Visualizzo il messaggio che la query è andata a buon fine
                    
    echo "La tabella $tabella è stata creata 
    "
    ;
                    echo 
    "<a href = \"$_SERVER[PHP_SELF]\">Torna alla pagina di inserimento</a>";
                    }
            }
    }
    ?>
    </body>
    </html>

    Ciao. Il codice che ti ho postato risolve il problema che ponevi.
    Non sono un esperto di progettazione di db ma a quanto ho capito con questo sistema ti crei tot tabelle con nomi differenti ma che hanno tutte la stessa struttura. Non mi sembra un buon metodo. Forse dovresti ripensare la logica del tuo db.

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.