Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[ASP]Comando CREATE TABLE

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[ASP]Comando CREATE TABLE

Postdi robegol » 04/01/07 20:14

Ciao a tutti, vorrei creare una nuova tabella all'interno del database dell'azienda in cui lavoro utilizzando il comando CREATE TABLE. Per farlo ho provato a creare una pagina asp contenente tale comando, sul modello di un'altra pagina asp preesistente, che serve ad inviare al database aziendale i dati inseriti attraverso un form, ma il mio tentativo non ha funzionato.
Questa è la pagina a cui mi sono "ispirato":

<%
strCon1 = "driver=MySQL ODBC 3.51 Driver;uid=xxx;pwd=yyy;database=zzzz"
Set Con1 = Server.CreateObject("ADODB.Connection")
Con1.Open strCon1

[campo1]=Replace(Request.Form("[campo1 rinominato]"),"'","''",1)
[campo2]=Replace(Request.Form("[campo2 rinominato]"),"'","''",1)
...
sqlstring = "INSERT INTO [nome tabella]... "values ('"& [campo1 rinominato]

&"', '"& [campo2 rinominato] &"',...
Con1.Execute sqlString
Con1.Close
response.Redirect("nomepagina.asp")%>


Ho eliminato le righe di Replace e sostituito la sqlstring, creando la nuova
pagina asp "pagina_crea_tabella.asp" seguente:

<%
strCon1 = "driver=MySQL ODBC 3.51 Driver;uid=xxx;pwd=yyy;database=zzz"
Set Con1 = Server.CreateObject("ADODB.Connection")
Con1.Open strCon1

sqlString = "CREATE TABLE nometabella
( id_campo1 INT(4) AUTO_INCREMENT PRIMARY KEY,
campo2 CHAR(150),
campo3 CHAR(150),
campo4 CHAR(150),
campo5 TEXT,
campo6 DATE,
campo7 DECIMAL(6,2),
campo8 CHAR(150))"
Con1.Execute sqlString
Con1.Close
response.Redirect("nomepagina.asp")
%>


Ho inserito questa pagina nel server web aziendale, nella stessa cartella in cui si trova la pagina cui mi sono ispirato. Inoltre, per attivare la pagina_crea_tabella.asp, ho creato una nuova pagina asp ("pagina_form.asp") contenente un form la cui ACTION è proprio "pagina_crea_tabella.asp". Eccone il codice:

<form method=post name="nome_form" action="pagina_crea_tabella.asp">
<input type="submit" name="Submit2" value="Crea"
</form>


Ho inserito anch'essa nella medesima cartella del server web aziendale, dopodiché mi sono collegato ad essa tramite browser ed ho premuto il bottone submit, ma invece di essere riportato alla pagina "nomepagina.asp" (segno dell'avvenuta creazione della tabella), mi è stata visualizzata la classica pagina "The page cannot be found". Qualcuno gentilmente può spiegarmi perché il mio metodo non funziona? Grazie
robegol
Utente Junior
 
Post: 25
Iscritto il: 23/11/06 21:35

Sponsor
 

Postdi archimede » 05/01/07 12:39

nomepagina.asp esiste? La tabella l'ha creata?

Alessandro
archimede
Moderatore
 
Post: 2753
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Triumph Of Steel » 05/01/07 12:53

Su internet explorer, vai su

Strumenti => Opzioni Internet => Avanzate.

togli la spunta alla voce che ha a che fare con i "frendly" HTTP errors
(non so come sia in italiano)

in questo modo vedi esattamente che errore c'è!
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi robegol » 05/01/07 13:09

x Alessandro:
La pagina "nomepagina.asp" esiste e si trova nella stessa cartella in cui si trovano "pagina_crea_tabella" e "pagina_form". Infatti se digito "www[...]nomepagina.asp" nella barra del browser me la visualizza correttamente. Immagino che la tabella non l'abbia creata, altrimenti mi reindirizzerebbe su "nomepagina.asp". Ho provato ad accedere da remoto al database tramite Mysql-Front per controllare se la nuova tabella compare nel database, ma non ci riesco: evidentemente il database non consente l'accesso da remoto.

x Triumph Of Steel:
L'errore che mi visualizza dopo aver cliccato sul bottone Crea è il seguente:

HTTP 500 - Errore interno del server
Internet Explorer
robegol
Utente Junior
 
Post: 25
Iscritto il: 23/11/06 21:35

Postdi Triumph Of Steel » 05/01/07 19:12

ma il sito è autorizzato ad eseguire script?
dovresti vederlo su IIS..
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi robegol » 05/01/07 19:55

Triumph Of Steel ha scritto:ma il sito è autorizzato ad eseguire script?
dovresti vederlo su IIS..


Non ne ho idea... per favore, potresti spiegarmi come si fa a vederlo?
robegol
Utente Junior
 
Post: 25
Iscritto il: 23/11/06 21:35

Postdi Triumph Of Steel » 06/01/07 09:01

apri IIS, fai tasto destro sul sito => proprietà..
da qualche parte (mi pare HOME DIRECTORY) ci dovrebbe essere una voce che ha a che fare con Esecuzione Scripts (se non ricordo male)
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi robegol » 06/01/07 10:46

Triumph Of Steel ha scritto:apri IIS, fai tasto destro sul sito => proprietà..
da qualche parte (mi pare HOME DIRECTORY) ci dovrebbe essere una voce che ha a che fare con Esecuzione Scripts (se non ricordo male)


Innanzitutto grazie per tutti i consigli che mi state dando. Perdona la mia ignoranza: non so cosa sia IIS. E' un programma che va installato sul server web del sito? Te lo chiedo perché in quel caso non mi è possibile utilizzarlo, in quanto non posso lavorare direttamente sul server, ma posso collegarmi al sito soltanto dal pc remoto.
robegol
Utente Junior
 
Post: 25
Iscritto il: 23/11/06 21:35

Postdi Triumph Of Steel » 06/01/07 21:42

IIS è il webserver.. :D

per fare una prova, fai così:

crea una pagina con dentro questo codice:

Codice: Seleziona tutto
<%
Response.Write "Hello"
%>

salva il file come
Codice: Seleziona tutto
test.asp

caricalo sul server, e aprilo con il browser


se vedi scritto
Hello

allora hai l'ASP funzionante, altrimenti se vedi la stessa cosa che hai scritto nel file test.asp, oppure un errore, non hai l'asp funzionante, e allora devi chiedere a chi ti ha dato lo spazio web.
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi robegol » 06/01/07 23:40

Funziona: ho creato la pagina test.asp, l'ho caricata sul server e l'ho visualizzata correttamente con il browser.
Ho provato a verificare se la tabella è stata creata caricando sul server una pagina asp di interrogazione su quella tabella (con comandi del tipo SELECT from), ma la risposta è di nuovo una pagina con la scritta:

HTTP 500 - Errore interno del server
Internet Explorer

Quindi mi sembra evidente che la tabella non è stata creata. Mi chiedo come mai, nonostante io abbia accesso al server ASP, non mi sia possibile utilizzarlo per creare una nuova tabella attraverso una pagina asp contenente il comando CREATE TABLE.
Ho provato a connettermi al server Mysql del sito in questione con Mysql-Front, utilizzando l'uid e la pwd che sono scritte nelle stringhe Mysql delle pagine asp del sito, ma non riesco ad entrare. Tra l'altro, non sono nemmeno sicuro del fatto che il server Mysql a cui si appoggia il sito risieda all'interno del server web del medesimo. Purtroppo nelle stringhe di cui sopra non c'è alcun riferimento ad un host o ad un indirizzo IP - ci sono solo userid e password, come riportati nei codici dei miei post precedenti in questo thread - per cui come host ho indicato quello del sito (http://www.nomesito.it). Ho letto che in molti casi la connessione da pc remoto al server Mysql di un sito è disabilitata: mi chiedo se questo possa essere il motivo per cui non mi è possibile creare una nuova tabella. Per favore potete illuminarmi al riguardo?
robegol
Utente Junior
 
Post: 25
Iscritto il: 23/11/06 21:35

Postdi Triumph Of Steel » 07/01/07 11:41

eh ma allora il primo problema riesede proprio li.. sul fatto del DB.
Lui nemmeno si connette... dovresti chiedere i dati precisi, ed eventualmente le stringhe di connessione esatte, a chi ti offre lo spazio web ..
ma il provider è lo tesso che ti da il DB? è questo che non ho capito...
o hai preso il DB da un altro sito?
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi robegol » 07/01/07 18:06

Triumph Of Steel ha scritto:eh ma allora il primo problema riesede proprio li.. sul fatto del DB.
Lui nemmeno si connette... dovresti chiedere i dati precisi, ed eventualmente le stringhe di connessione esatte, a chi ti offre lo spazio web ..
ma il provider è lo tesso che ti da il DB? è questo che non ho capito...
o hai preso il DB da un altro sito?


Non so se il provider sia lo stesso, perché nelle stringhe sql contenute nelle pagine asp del sito non vi è alcun riferimento ad un host specifico.
Le stringhe per la connessione al server sql sono del tipo:

strCon1 = "driver=MySQL ODBC 3.51 Driver;uid=xxx;pwd=yyy;database=zzzz"
Set Con1 = Server.CreateObject("ADODB.Connection")
Con1.Open strCon1

mentre le stringhe per selezionare dati dal db sono del tipo:

<% sqlpippo = "SELECT * FROM nomedatabase where campo1='"& request("cat") &"' order by campo2"
SET rspippo = Con1.Execute (sqlpippo)

Però queste stringhe funzionano: il browser restituisce correttamente i dati richiesti al server mysql. Mi chiedo dove il server asp trovi l'indirizzo del server mysql a cui connettersi per recuperare i dati, visto che non c'è scritto nulla al riguardo. Eppoi mi chiedo se sia possibile che io possa modificare il db inserendo nuovi dati (cosa che effettivamente riesco a fare senza problemi, utilizzando i form di inserimento dati), ma allo stesso non possa creare delle nuove tabelle. Se non posso connettermi al server mysql dal mio pc remoto, allora in teoria non dovrei neanche essere in grado di inserire nuovi dati. Le due cose non ti sembrano in contraddizione?
robegol
Utente Junior
 
Post: 25
Iscritto il: 23/11/06 21:35

Postdi Triumph Of Steel » 07/01/07 22:05

allora...
l'host non c'è forse perchè è di default il "localhost".
Il DB mysql potrebbe essere impostato per NON accettare connessioni dall'esterno.
quindi i tuoi file ASP che sono sul server, si connettono ad un mysql che sta sulla stessa macchina.

Il fatto del "CREATE TABLE" potrebbe essere un semplice errore di codice a questo punto. Dovresti collegarti al tuo DB tramite interfaccia web (tipo phMyAdmin, il provider dovrebbe dartelo), e fare una creazione di tabella da li. phpMyAdmin scrive sempre la query eseguita, quindi non fai altro che copiartela e cambiarla per le tue esigenze. Per fare un create table da codice potrebbe essere necessario usare gli "apici".

esempio
Codice: Seleziona tutto
CREATE TABLE `thor` (
`id` INT NOT NULL AUTO_INCREMENT ,
`testo` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00


Torna a Programmazione


Topic correlati a "[ASP]Comando CREATE TABLE":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti