PDA

View Full Version : [Shell]Gestione database e pagina HTML


tookie
22-06-2009, 15:01
ciao a tutti,
sto costruendo un CGI che mi crea dinamicamente una pagina web gestita dinamicamente con un shell script bash. La pagina HTML serve per immettere, rimuovere, visualizzare delle righe richieste presenti nel database, e a runtime queste modifiche vengono portate anche nella pagina HTML.
Il problema è che nonostante i comandi sono ,almeno in parte giusti, eseguendoli dalla pagina web questa non me li esegue.
Per esempio ho questa funzione che deve salvare nel database un testo inserito nel corpo della textarea:

....
<textarea name="Inserimento" cols='50' rows='10'></textarea><br>
<input type="button" value="Aggiungi" onclick=\"addPost(text)\"/>
....
addPost(text){

echo "$(date +%s) "-" $text" >> /.../cgi-bin/database
//questo comando lanciato da terminale funziona correttamente
//ma lanciato come funzione dalla pagina html non va
}

nell'argomento della funzione ho messo text, come in javascript, perchè non so che argomento devo passargli per dirgli di prendere il corpo della textarea che verrà riempita a runtime dall'utente.
Se qualcuno potesse aiutarmi ne sarei felice:rolleyes:

ho provato anche a saltare la funzione in questo modo

<textarea cols='50' rows='10'></textarea><br>
<input type="button" value="Aggiungi" onclick=\"echo "$(date +%s) "-" $text" >> /var/www/postit/cgi-bin/database
\"/>

che anche se text è sbagliato mi dovrebbe salvare almeno il numero progressivo come fa da terminale

cionci
22-06-2009, 15:36
Come pensi che sia possibile che ti possa eseguire una procedura bash direttamente dal codice HTML ?
Devi gestire il passaggio di parametri tramite l'interfaccia CGI, con il metodo GET o con il metodo POST. Devi sicuramente passare da una form.
La form avrà come action l'url dello script bash e passerà i parametri allo script bash al momento in cui schiaccerai il bottone di submit.
http://www.icosaedro.it/apache/cgi-bash.html

tookie
22-06-2009, 17:07
e se invece dovessi modificare una select html aggiungendo e rimuovendo option, come mi consigli di fare?anche questo è possibile farlo attraverso get e/o post?

cionci
22-06-2009, 17:11
e se invece dovessi modificare una select html aggiungendo e rimuovendo option, come mi consigli di fare?anche questo è possibile farlo attraverso get e/o post?
Quello lo puoi fare tramite JavaScript oppure tramite get o post generando nuovamente la pagina.

tookie
22-06-2009, 17:46
mettendo che con javascript non lo posso fare, con get e post come faccio a dirgli quanti campi option deve aggiungere e ,ad esempio, data la riga 5 nel db che quella debba andare al 5° posto?

cionci
22-06-2009, 18:02
mettendo che con javascript non lo posso fare, con get e post come faccio a dirgli quanti campi option deve aggiungere e ,ad esempio, data la riga 5 nel db che quella debba andare al 5° posto?
Sei te che devi dare in output il codice HTML per generare la pagina, sarai quindi tu a decidere la posizione in cui mettere le varie option.

tookie
22-06-2009, 21:58
da quel che ho capito avvio la pagina, scrivo qualcosa nella textarea, tramite la form passa il contenuto della textarea a uno script esterno che salva tutto nel database, e fin qua ci siamo.

Il passo successivo sarebbe di prendere la QUERY_STRING, chiaramente formattarla nel modo corretto, far aggiungere una option inizialmente vuota e riempirla col contenuto della stringa. Quindi qualcosa del tipo:


...
query=$(printf "$QUERY_STRING" | head -n1 | cut -d "=" -f2 )
...
echo "<html>....
...
...
</html>"

quindi ricreo tutta la pagina aggiungendo una option contenente $query, o è possibile solamente aggiungere la option?e se si come?

cionci
23-06-2009, 08:46
o è possibile solamente aggiungere la option?e se si come?
Senza usare JavaScript e Ajax puoi solo ricreare tutta la pagina ;)

tookie
23-06-2009, 09:47
e non ce nessun altro modo per farlo dinamicamente senza che mi debba scrivere tutte le possibili combinazioni delle pagine?:muro:

cionci
23-06-2009, 10:04
e non ce nessun altro modo per farlo dinamicamente senza che mi debba scrivere tutte le possibili combinazioni delle pagine?:muro:
No, lo puoi fare solo generando il relativo codice JavaScript che implementa questa cosa.
Non capisco perché tu ti debba scrivere tutte le possibili pagina. Mi immagino che tu le possa generare dinamicamente in base alla query string.

tookie
23-06-2009, 10:23
si so che con javascript mi complico molto di meno la vita, e l'ho anche già fatto, il problema è dato dal fatto che questo è un esercizio didattico che mi chiede che sia fatto tutto con linguaggio shell...

cionci
23-06-2009, 10:27
si so che con javascript mi complico molto di meno la vita, e l'ho anche già fatto, il problema è dato dal fatto che questo è un esercizio didattico che mi chiede che sia fatto tutto con linguaggio shell...
E allora non so cosa altro dirti :D
Il fatto che comunque tu usi JavaScript non implica direttamente il non usare la Shell. Generi comunque una pagina web e JavaScript fa parte delle pagine web. Anzi, è molto interessante il fatto di generare codice JavaScript dinamico, che magari cambia quando la pagina viene ricaricata.