Benvenuto Visitatore ( Log In | Registrati )
![]() ![]() |
17 Nov 2004, 14:53
Messaggio
#1
|
|
|
Cominciamo da buon non programmatori (come sono io!
Diciamo che ci serve un catalogo che presenti tutti i nostri prodotti, ogni prodotto deve avere una scheda propria specifica che contiene varie informazioni specifiche e che, cosa meno ovvia, ci serve un backend, cioe' una pagina web dove inserire le informazioni dei nostri oggetti. Diciamo quindi che ci sono sostanzialmente tre casi d'uso: - catalogo - scheda singola - inserimento prodotto Non andiamo nello specifico con l'analisi/progettazione: questo e' un tutorial base; successivamente potremo aggiungere tutto quello che ci serve. Altro aspetto che dobbiamo definire prima e' la progettazione del database. Dalla lettura dei casi d'uso (e che lettura, direi! Diciamo che il nostro catalogo riguarda "oggetti" generici, quindi la descrizione di questi oggetti puo' essere effettuata attraverso le seguenti caratteristiche: - nome - descrizione - figura - note (ce le metto sempre che non si sa mai) ovviamente ogni oggetto deve avere un codice identificativo univoco che chiameremo id (come tradizione vuole). Attarverso lo strumento che preferiamo (ottimo e' phpMyAdmin) creiamo quindi un database per questo nostro tutorial e lo chiamiamo "tutorial_catalogo". All'interno creiamo una tabella che chiameremo "oggetto", caratterizzata da 5 campi: id : INTERO (sara' un numero), AUTO INCREMENT (significa che il server si occupa di assegnare agli oggetti inseriti un valore crescente senza che dobbiamo pensarci noi) e' ovviamente la chiave primaria della tabella. nome: VARCHAR di lunghezza 64 (scelta arbitraria mia, mi sembra sufficiente) non NULL (cioe' deve essere imputato non puo' essere vuoto) descrizione: TEXT con valore di default a NULL (significa che a catalogo possiamo avere oggetti non descritti) figura: VARCHAR 128 e' il nome del file che rappresenta l'oggetto, e' NULLabile in quanto un oggetto potrebbe non avere fotografie associate. note: TEXT NULLabile. Questo e' il primo passo, il prossimo sara' cominciare a scrivere codice PHP. Domande, problemi, chiarimenti? Ciao, Roberto -------------------- |
|
|
|
|
|
|
|
17 Nov 2004, 15:24
Messaggio
#2
|
|
|
Innanzitutto grazie per aver accolto così presto la mia richiesta
-------------------- |
|
|
|
|
17 Nov 2004, 16:52
Messaggio
#3
|
|
|
Et Voilà , mi permetto di intervenire, postandovi il codice SQL per generare la tabella così ben descritta da Azael...
CODICE CREATE TABLE oggetto ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT , nome VARCHAR(64) NOT NULL , descrizione TEXT DEFAULT NULL , figura VARCHAR(128) DEFAULT NULL , note TEXT DEFAULT NULL, PRIMARY KEY (id) ); Il codice l'ho provato e funziona bene, se vi da errori di sintassi SQL -------------------- Emanuele
In nome del Senato Galattico della Repubblica, vi dichiaro in arresto, Cancelliere! (Mace Windu, Maestro Jedi) Supporta Tevac |
|
|
|
|
17 Nov 2004, 19:37
Messaggio
#4
|
|
|
CITAZIONE(azael) nome: VARCHAR di lunghezza 64 (scelta arbitraria mia, mi sembra sufficiente) non NULL (cioe' deve essere imputato non puo' essere vuoto) Se lo imposto not NULL ho un errore: #1067 - Invalid default value for 'nome' Devo impostarlo NULL. Per il resto tutto chiaro -------------------- |
|
|
|
|
17 Nov 2004, 19:50
Messaggio
#5
|
|
|
CITAZIONE(Lord_Lele) Et Voilà , mi permetto di intervenire, postandovi il codice SQL per generare la tabella Cioè? E' possibile creare la tabella tramite terminal di Mac OS X senza phpMyAdmin? Scusate la domanda se è troppo banale -------------------- |
|
|
|
|
17 Nov 2004, 20:19
Messaggio
#6
|
|
|
CITAZIONE(dergolem) Cioè? E' possibile creare la tabella tramite terminal di Mac OS X senza phpMyAdmin? Scusate la domanda se è troppo banale Ma ceeeeerto! MySQL nasce come strumento a linea di comando (o meglio, la sua parte client). Qualcuno però, lamentandosi del fatto che la linea di comando non gli piaceva, ha sviluppato interfacce grafiche, a terminale evoluto, ed anche php. PhpMyAdmin è una di queste, ed è veramente comoda. Ma sono sicuro che ce ne sono altre... -------------------- |
|
|
|
|
18 Nov 2004, 00:52
Messaggio
#7
|
|
|
Allora, facciamo un po' di chiarezza.
L'SQL e' un linguaggio che serve per dialogare con un server SQL (MySQL, Oracle... tutti insomma). Come tale basta che venga "dato in pasto" al server perche' questo ritorni dei risultati. Ma come si puo' interagire con un server SQL? In mille modi diversi, ma diciamo che i tre principali sono: - linea di comando della shell - consolle - interfacce grafiche Il primo e' sostanzialmente il terminale: scrivi una query e la giri al comando opportuno; io quanod facevo elaborazioni pesanti di dati avevo uno script che mi creava in automatico dinamicamente le query necessarie, le metteva in un file, poi leggeva il file e, una riga/query alla volta le sparava a mysql. La consolle e' sempre a riga di comando ma si usa "dall'interno". Per attivarla basta andare al terminale e scrivere: CODICE /usr/local/mysql/bin/mysql o solo mysql se il path comprende la strada per arrivare a MySQL (per la cronaca per uscire basta scrivere quit). Il terzo metodo e' il piu' semplice perche' prevede di usare interfacce grafiche che semplificano la vita, ma non crediate, molte funzioni derivano alla fine dalle implementazioni dei comandi a linea... Se prendiamo in considerazione phpMyAdmin (in assoluto l'interfaccia piu' diffusa) si puo' notare che cmq e' possibile anche scrivere ed immettere query attraverso questo strumento: 1. apriamo phpMyAdmin 2. selezionamo il database che ci interessa 3. scegliamo la linguetta "SQL" 4. scriviamo la query e diamo invio Per creare la tabella che ha riportato Lele (grazie mille dell'aiuto, ogni tuo intervento e' come sempre gradito!!! ATTENZIONE: il copia ed incolla e' utilissimo, ma porta spesso a casini inenarrabili per via di caratteri invisibili rompiscatole, quindi il consiglio e': ricopiate (ed intanto cercate di capire cosa state copiando! Forza e coraggio... Ciao, Roberto P.S.: ringrazio anche Livio per il suo intervento e ne approfitto per fargli i complimenti (che non ero mai riuscito a fare) per il suo progetto MaCocoa (che seguo senza riuscire a trovare il tempo per mettere poi nulla in pratica -------------------- |
|
|
|
|
18 Nov 2004, 08:06
Messaggio
#8
|
|
|
BENE!!
Forza Azael e Lord, ci sono anch'io. Se passate dalle mie parti pizza e birra a volontà -------------------- "Meglio stare zitti dando l'impressione di essere stupidi, che parlare togliendo ogni dubbio" (Confucio)
|
|
|
|
|
18 Nov 2004, 08:43
Messaggio
#9
|
|
|
CITAZIONE(azael) 3. scegliamo la linguetta "SQL" 4. scriviamo la query e diamo invio 5. NON FUNZIONA !!! eheheheh... Questo perchè la casella per inserire la query SQL è una textarea e l'invio va a capo di una riga... Piccola banalità assolutamente triviale... l'ho scritta perchè mi è appena successa !!! -------------------- Emanuele
In nome del Senato Galattico della Repubblica, vi dichiaro in arresto, Cancelliere! (Mace Windu, Maestro Jedi) Supporta Tevac |
|
|
|
|
18 Nov 2004, 10:05
Messaggio
#10
|
|
|
Ops, scusate!!!
Le query andrebbero scritte su una riga sola (mentre quando le scrivete all'interno delle virgolette in php potete anche andare a capo). Ciao, Roberto -------------------- |
|
|
|
|
18 Nov 2004, 11:39
Messaggio
#11
|
|
|
ma non andiamo + avanti con il Tutorial?
-------------------- "Meglio stare zitti dando l'impressione di essere stupidi, che parlare togliendo ogni dubbio" (Confucio)
|
|
|
|
|
18 Nov 2004, 11:47
Messaggio
#12
|
|
|
No. Basta.
Sono piuttosto impegnato in questi giorni e riesco a partecipare solo nei piccoli ritagli di tempo... quando posso, metto su qualcosa. -------------------- Emanuele
In nome del Senato Galattico della Repubblica, vi dichiaro in arresto, Cancelliere! (Mace Windu, Maestro Jedi) Supporta Tevac |
|
|
|
|
18 Nov 2004, 12:13
Messaggio
#13
|
|
|
Ok, ok, quanta impazienza!!!
Allora, partiamo definendo meglio i casi d'uso: in effetti possiamo pensare, razionalizzando, che l'inserimento e la visualizzazione di una scheda non sono che due operazioni afferenti allo stesso caso d'uso generale, quello di gestione (in generale) dell'oggetto. Diciamo quindi che il nostro sistema potrebbe basarsi su due variabili generali: - dove: rappresenta in quale sezione del nostro programma siamo (gestione catalogo, gestione oggetto, ecc...) - cosa: definisce l'azione che stiamo andando a fare sull'oggetto Quindi riassumento abbiamo una situazione del genere: DOVE COSA catalogo visualizzazione oggetto visualizzazione oggetto inserimento Quindi il nostro software dovra' essere in grado di gestire queste variabili. Il dove lo chiameremo where, il cosa lo chiameremo action. La pagina php chiamata sara' sempre la stessa e sara' lei a richiamare la sezione di codice che ci serve; il come verra' operata questa "selezione" ci interessa poco ora e lo decideremo successivamente. Cominciamo con la parte piu' noiosa: l'inserimento di nuovi oggetti. Buttiamo giu' il codice che visualizza il form di inserimento dell'oggetto: HTML <html> <head> </head> <body> <form action="index.php?where=object&action=insert" method="post"> <div class="form"> Nome: <input type="text" name="nome" /><br /> Descrizione: <textarea wrap="virtual" rows="5" cols="40" name="note" ></textarea><br /> Figura: <input type="text" name="figura" /><br /> Note: <textarea wrap="virtual" rows="5" cols="40" name="note" ></textarea><br /> <input type="submit" value="Inserisci" /><br /> </div> </form> </body> </html> Uno spirito attento potrebbe pero' notare che le parti: HTML <html> <head> </head> <body> e HTML </body> </html> sono comune a tutte le pagine che andremo a realizzare... Possiamo quindi scrivere due funzioncine che fanno questo lavoro e che richiamero ogni volta: CODICE function makeHead() { ?> <html> <head> </head> <body> <? } function makeTail() { ?> </body> </html> <? } Sembra una stupidata ma ci permette di scoprire due cose sul php: - come si creano le funzioni: basta scrivere function e farlo seguire dal nome che si vuole dare alla funzione stessa; il nome deve essere seguito da parentesi all'interno delle quali vanno specificati gli eventuali parametri che la funzione accetta in entrata (per ora soprassediamo su questo aspetto). La funzione e' poi delimitata dalle parentesi graffe. - se si deve "stampare a video" grosse quantita' di codice html sempre uguale, il modo migliore e piu' veloce e' quello di chiudere i tag PHP! Cosa significa? Semplice: il browser chiede ad Apache una certa pagina, Apache la prende e, prima di inviarla, la passa al parser php; questo cosa fa? Esegue il codice (che banalita' o detto??? Il codice della nostra pagina php quindi sara': CODICE <?php makeHead(); ?> <form action="index.php?where=object&action=insert" method="post"> <div class="form"> Nome: <input type="text" name="nome" /><br /> Descrizione: <textarea wrap="virtual" rows="5" cols="40" name="note" ></textarea><br /> Figura: <input type="text" name="figura" /><br /> Note: <textarea wrap="virtual" rows="5" cols="40" name="note" ></textarea><br /> <input type="submit" value="Inserisci" /><br /> </div> </form> <? makeTail(); function makeHead() { ?> <html> <head> </head> <body> <? } function makeTail() { ?> </body> </html> <? } ?> Ora, la cosa e' parecchio confusa nella vostra testa, lo sento... quindi sotto con le domande! Ciao, Roberto -------------------- |
|
|
|
|
18 Nov 2004, 13:21
Messaggio
#14
|
|
|
Tornando a bomba (e a stomaco pieno).
Provate a scrivere quello che ho messo nell'ultima parte dle post i un file chiamato index.php Mettete il file della cartella /Library/WebApplication/Documents (vado a memoria, correggetemi se sbaglio) quindi da browser aprite l'indirizzo: http://127.0.0.1/index.php Dovreste vedere il form di inserimento dei dati. Guardate il codice html creato per capire al meglio come funzionano le funzioni e le loro chiamate. Quando ci siamo fatemi sapere che procediamo al prossimo passo. Ciao, Roberto -------------------- |
|
|
|
|
18 Nov 2004, 13:37
Messaggio
#15
|
|
|
beh, la prima cosa che mi viene da chiederti e di capire meglio questo
CITAZIONE <form action="index.php?where=object&action=insert" method="post">
-------------------- "Meglio stare zitti dando l'impressione di essere stupidi, che parlare togliendo ogni dubbio" (Confucio)
|
|
|
|
|
18 Nov 2004, 13:54
Messaggio
#16
|
|
|
La Form (perchè mi dicono che sia femminile) invierà i dati, in modalità POST, alla pagina index.php.
Inoltre, sempre alla pagina index.php, saranno passati in modalità GET i parametri where ed action. Poi vedremo come si recuperano questi dati, per ora sappi che vengono inviati alla pagina in questione. Piccola Nota: la cartella è /Library/WebServer/Documents -------------------- Emanuele
In nome del Senato Galattico della Repubblica, vi dichiaro in arresto, Cancelliere! (Mace Windu, Maestro Jedi) Supporta Tevac |
|
|
|
|
18 Nov 2004, 14:23
Messaggio
#17
|
|