Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

Form per commentare

Cerchi consigli per migliorare il tuo sito? Vuoi aprire un sito in poco tempo?
Discuti con altri webmaster, chiedi chiarimenti ed opinioni in tutta libertà.
Lo spam verrà cancellato.

Form per commentare

Messaggioda domenico127 » gio lug 20, 2006 5:49 pm

Salve. Ho una richiesta, forse, piuttosto insolita. Intanto premetto che io di php non ne capisco molto!

All'interno del mio sito vorrei scrivere degli articoli tali che possano essere commentati dagli utenti. Dovrei quindi creare un form comprendente di campo nick (non registrato, ma uno a caso), e-mail, testo e tasto "invia". Una volta cliccato su questo tasto il testo scritto dovrebbe andare a posizionarsi, come commento, sotto l'articolo.

Tutto ciò, come si potrebbe fare?
Grazie
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda dark lord » gio lug 20, 2006 8:50 pm

ho dato un occhiata in giro ma non ho trovato niente di "pronto"...bisogna che ti scrivi lo script...pero in questo penso che al massimo ti potrò dare solo qualche consiglio!
Impossible is nothing!
Informatica allo stato puro: www.thedarksystem.altervista.org
Avatar utente
dark lord
Aficionado
Aficionado
 
Messaggi: 27
Iscritto il: dom lug 02, 2006 10:05 pm

Messaggioda Rumez » gio lug 20, 2006 11:28 pm

[nota] devi farti lo script a mano anche perché non è molto difficile
[nota] ti serve un database in cui salvare i commenti

Di fatto funziona così:
[nota] i dati del form vengono salvati nel database tramite un INSERT
[nota] i dati vengono presi dal database tramite una SELECT e presentati nella pagina

vuoi un esempio fittizio semplice?
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm


Messaggioda domenico127 » gio lug 20, 2006 11:37 pm

Si grazie Rumez! Anche perché non credo di essere in grado a scrivermi il codice...
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » ven lug 21, 2006 7:53 am

un'altra domandina...gli articoli sono in un database?
perché in questo caso avranno un id tramite il quale si più associarci un commento...altrimenti se non hai un database sotto non puoi fare una cosa molto seria..
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » ven lug 21, 2006 12:07 pm

Ho un database. E gli articoli sono scritti i normali pagine xHTML
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » ven lug 21, 2006 2:02 pm

beh se gli articoli non stanno in un db allora non siamo molto avvantaggiati...comunque ecco qui qualche dritta..
Allora..tralascio la parte di inserimento articoli nel database e quella per mostrare a video la lista degli articoli.
Mi limito solo a mostrare a video l'articolo e i suoi commenti:

[nota] Premetto che mi collegherò al database tramite DSN

Crea un file config.inc.php dove ci saranno i parametri di connessione al db
Codice: Seleziona tutto
<?php
   // parametri di connessione ad database   
   $db_user = "root";   // databse username
   $db_pass = "password";   // database password
   $dsn = "nomeDSN";   // nome DSN
?>


Crei un file connessione.php che contiene le funzioni per connettersi al db e per eseguire le query
Codice: Seleziona tutto
<?php

   /* ----------------------------------------------------------- */
   /*            Funzione di connessione al database            */
   /* ----------------------------------------------------------- */
   function connettiDB()
   {
      include("config.inc.php");         // includo il file di configurazione
      error_reporting(0);               // abilito la gestione errori personalizzata
   
      $id_conn = odbc_connect($dsn, $db_user, $db_pass);   // effettuo la connessione al database
      
      if ( $id_conn == FALSE )   // gestione personalizzata dell'errore
      {
         $msg = "      <table border='0' cellpadding='2' cellspacing='0' >";
         $msg = $msg . "   <tr>";
         $msg = $msg . "      <td align='center'><strong>Connessione Fallita!</strong></td>";
         $msg = $msg . "   </tr>";
         $msg = $msg . "   <tr>";
         $msg = $msg . "      <td align='left'>Codice Errore: " . odbc_error() . "</td>";
         $msg = $msg . "   </tr>";
         $msg = $msg . "   <tr>";
         $msg = $msg . "      <td align='left'>Messaggio di Errore: " . odbc_errormsg() . "</td>";
         $msg = $msg . "   </tr>";
         $msg = $msg . "</table>";   
         
         die ($msg);      
      }
      
      return $id_conn;
   }
   
   /* ----------------------------------------------------------- */
   /*            Funzione che esegue una query               */
   /* ----------------------------------------------------------- */
   function creaRecordset( $id_conn, $query )
   {
      $result = odbc_exec( $id_conn, $query );
      
      if ( odbc_error() )      // gestione personalizzata dell'errore
      {
         $msg = "      <table border='0' cellpadding='2' cellspacing='0' >";
         $msg = $msg . "   <tr>";
         $msg = $msg . "      <td align='center'><strong>Errore!</strong></td>";
         $msg = $msg . "   </tr>";
         $msg = $msg . "   <tr>";
         $msg = $msg . "      <td align='left'>Codice Errore: " . odbc_error() . "</td>";
         $msg = $msg . "   </tr>";
         $msg = $msg . "   <tr>";
         $msg = $msg . "      <td align='left'>Messaggio di Errore: " . odbc_errormsg() . "</td>";
         $msg = $msg . "   </tr>";
         $msg = $msg . "</table>";   
         
         die ($msg);      
      }
      
      return $result;
   }
   
?>


Crei una pagina articoli.php che conterrà l'articolo, i comemnti e il form per inserire i commenti
Codice: Seleziona tutto
<?php
   // ========================================================================
   // Inclusione dei parametri di connessione
   // ========================================================================
   include("connessione.php");
   
   // ========================================================================
   // Connessione al database
   // ========================================================================   
   $conn_id = connettiDB();   
   
   // ========================================================================
   // Eseguo la query che mi mostra a video l'articolo
   // ========================================================================
   $SQL = "SELECT * FROM articoli WHERE id_articolo = 1";
   $resultSet = creaRecordset( $conn_id, $SQL );
   
   // ========================================================================
   // Creo l'HTML per l'output
   // ========================================================================
   $table = "<table cellpadding='0' cellspacing='0'>";
         
   // ========================================================================
   // Risultati della select effettuata
   // ========================================================================
   while( $row = odbc_fetch_array($resultSet) )
   {
      $table = $table . "<tr>"
                  . "<td>". $row[titolo] . "</td>"
                  . "</tr>"
                  . "<tr>"
                  . "<td>". $row[testo] . "</td>"
                  . "</tr>";
      $id_articolo = $row[id_articolo];
   }
   $table = $table . "</table>";
   
   // ========================================================================
   // Stampo il risultato
   // ========================================================================
   echo $table;
   
   // ========================================================================
   // Eseguo la query che mi mostra a video i commenti per questo articolo
   // ========================================================================
   $SQL_COMMENTI = "SELECT * FROM commenti WHERE id_articolo=" . $id_articolo;
   $resultSetCommenti = creaRecordset( $conn_id, $SQL_COMMENTI );
   
   // ========================================================================
   // Creo l'HTML per l'output
   // ========================================================================
   $table2 = "<hr /><table cellpadding='0' cellspacing='0'>";
      // ========================================================================
   // Risultati della select effettuata
   // ========================================================================
   while( $row2 = odbc_fetch_array($resultSetCommenti) )
   {
      $table2 = $table2 . "<tr>"
                    . "<td>". $row2[autore] . "</td>"
                    . "</tr>"
                    . "<tr>"
                    . "<td>". $row2[mail] . "</td>"
                    . "</tr>"
                    . "<tr>"
                    . "<td>". $row2[testo_commento] . "<hr /></td>"
                    . "</tr>";
   }
   $table2 = $table2 . "</table>";
   
   echo $table2;
?>
<form action="inserisci_commento.php" method="post" name="commenti">
   <hr />
   <strong>Inserisic un Commento:&nbsp;</strong>
   <br />
   Autore:&nbsp;<input type="text" name="autore" />
   <br />
   E-Mail:&nbsp;<input type="text" name="mail" />
   <br />
   Commento:&nbsp;<textarea name="commento"></textarea>
   <br />
   <input type="hidden" name="id_articolo" value="<? echo $id_articolo; ?>" />
   <input type="submit" value="Invia Commento" />
</form>

<?
   // chiudo la connessione al dbs
   odbc_close ( $conn_id );
?>


Crei una pagina inserisci_commento.php utilizzata per inserire i commenti
Codice: Seleziona tutto
<?php
   // ========================================================================
   // Inclusione dei parametri di connessione
   // ========================================================================
   include("connessione.php");
   
   // ========================================================================
   // Ottngo i Valori inseriti nel form dei commenti
   // ========================================================================
   $autore         = $_POST["autore"];
   $mail         = $_POST["mail"];
   $commento       = $_POST["commento"];
   $id_articolo    = $_POST["id_articolo"];
   
   // ========================================================================
   
   // Connessione al database
   // ========================================================================   
   $conn_id = connettiDB();   
   
   // ========================================================================
   // SQL per l'inserimento del commento
   // ========================================================================
   // inserisco nella tabella commenti anche l'id_articolo dell'articolo
   // che voglio commentare in modo da associare il commento all'articolo
   // in questione
   // ========================================================================
   $SQL = "INSERT INTO "
       . "commenti (autore, mail, testo_commento, id_articolo) "
       . "VALUES ( "
       . "'" . $autore . "', "
       . "'" . $mail . "', "
       . "'" . $commento . "', "
       . "" . $id_articolo . " )";
      
   // ========================================================================
   // Eseguo la query
   // ========================================================================
   $resultSet = creaRecordset( $conn_id, $SQL );
   
   echo "Commento Inserito con Successo!";
   // chiudo la connessione al dbs
   odbc_close ( $conn_id );   
?>


L'ho scritto in velocità per cui potrebbe manacare qualcosa o non essere ottimizzato..comunque funziona.E' un esempio
molto semplice ma comunque può darti qualche spunto.
Il problema più grande sarà sicuramente nella connessione al database perché non so come l'hai gestita
(a dire la verità non so nemmeno se nel tuo sito hai usato un database).
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » lun lug 24, 2006 11:28 pm

Ciao Rumez! Grazie mille per la pazienza! In php però ragiono come un mulo! :-D

Nel file articoli.php potresti indicarmi dove devo inserire l'articolo, in quale punto preciso, così inizio a testare? Grazie mille ancora.
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » mar lug 25, 2006 9:00 am

l'articolo non devi inserirlo a mano..in html altrimenti non funziona nulla! Come faccio in quel caso ad associare i commenti all'articolo in questione?

La cosa funziona così:

[nota] Gli articoli devo risiedere in un databse (access,MySQL...poco importa)
Il database lo strutturiamo in questo modo:

Tabella Articoli
--------------------------------
| id_articolo | titolo | testo |
--------------------------------

Tabella Commenti
------------------------------------------------------------------------
| id_commento | id_articolo | testo_commento | autore | mail |
------------------------------------------------------------------------

Come potrai notare la tabella Commenti contiene un campo id_articolo..è lo stesso campo della tabella Articoli e questo fa si che il commento/i inseriti siano associati univocamente ad un articolo particolare

Esempio:

Tabella Articoli
--------------------------------
| id_articolo | titolo | testo |
--------------------------------
| 15 | prova|prova |
--------------------------------

Tabella Commenti
------------------------------------------------------------------------
| id_commento | id_articolo | testo_commento | autore | mail |
------------------------------------------------------------------------
| 1 | 15 | bello | pippo | a@a |
------------------------------------------------------------------------

In questo caso il commento di id 1 è associato all'articolo di id 15...

detto questo ti allego i file che ho preparato..sono molto semplici e commentati...
[nota] una pagina che permette di inserire un articolo nel database aggiungi_articolo.php
[nota] una pagina che processa l'inserimento dell'articolo inserisci_articolo.php
[nota] una pagina che stampa a video l'elenco di tutti gli articolo elenco_articoli.php
[nota] una pagina che visualizza in dettaglio un articolo ( + elenco commenti + form inserimento commenti) articoli.php
[nota] una pagina che processa l'inserimento dei commenti inserisci_commento.php

L'unica cosa che ti resta da fare è crearti il database partendo dalla struttura che ti ho spiegato sopra...
Più di così non posso fare..praticamente ti ho dato tutto lo script...se hai bisogno per qualche dritta chiedi pure...
ciao
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » mar lug 25, 2006 6:17 pm

Dunque se ho ben capito, devo configurare il file config.inc.php in modo che si connetta al database. Poi mi collego al file aggiungi_articoli.php e dal form inserisco un articolo, giusto?
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » mar lug 25, 2006 6:54 pm

si esattamente...
poi ovviamente è il caso che ci metti un po' di grafica...io ti ho dato solo la struttura
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » mar lug 25, 2006 11:52 pm

Si certo quello della grafica è un problema secondario, in quanto adesso l'importante epr me è capire come funzioni.


Affinchè il tutto funzioni però prima devo aver creato delle tabelle nel database, vero? Dato che non so "strutturare" un database, conosci una buona guida?
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » mer lug 26, 2006 8:46 am

intanto ti conviene scegliere il databse..uno vale l'altro tanto la connessione avviene tramite ODBC.
Comunque ti consiglio MySQL
[nota] http://dev.mysql.com/downloads/mysql/5.0.html
Esiste anche il suo tool grafico per creare le tabelle MySQL Administrator
[nota] http://dev.mysql.com/downloads/administrator/1.1.html
Questi due sono entrambi opensource...

Se invece hai un po' di soldi da spendere...ti consiglio come Tool Grafico di amministrazione questo programma qui...è una bomba
[nota] http://www.sqlmanager.net/en/products/mysql/manager
Puoi comunque provarlo per 30 giorni.

Per quanto riguarda la struttura delle tabelle in questione fai così:
Tabella articoli
[nota] id_articolo -> integer autoincrementante
[nota] titolo -> varchar 250
[nota] testo -> longtext

Tabella Commenti
[nota] id_commento -> intger autoincrementante
[nota] id_articolo -> intger
[nota] testo commento -> longtext
[nota] autore -> varchar 250
[nota] mail -> varchar 250

guide su MySQL ne trovi a bizzeffe in internet..
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » mer lug 26, 2006 2:38 pm

No, ma questo l'ho capito e il database ce l'ho da quando ho acquistato lo spazio web. Quello che volevo sapere è, come si creano le tabelle in database?
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » mer lug 26, 2006 2:45 pm

se il database è di tipo MySQL fai così:
ti installi il MySQL Administrator...visto che è gratuito..poi ti connetti al database che risiede nei server che ospitano il tuo spazio web.
Per poter lavorare su un database è necessario connettersi a qust'ultimo..
Nell'interfaccia di connessione dovrai inserire l'host (indirizzo del server), il nome utente del db e la password di amministrazione del db..
Una volta connesso al database pui creare le tabelle e le colonne con semplici comandi del tipo File -> Nuovo... -> Tabella
ecc..
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » mer lug 26, 2006 7:39 pm

Ciao Rumez. Si il mio database è di tipo MySql, il problema è che mysql administrator non si connette al database, a quanto pare non mi accetta il server che è sql.nomesito.org
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » gio lug 27, 2006 8:07 am

hai per caso un firewall che ti blocca la porta 3306 che in pratica è quella utilizzata da MySQL?
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » gio lug 27, 2006 11:45 am

Il mio firewall è ZA. Quando MySql Ad. cerca di accedere ad Internet attrverso quella porta, il firewall mi avvisa, ma imposto subito il permesso per proseguire, quindi non credo sia dovuto al firewall
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Messaggioda Rumez » gio lug 27, 2006 1:35 pm

prova a mandare una mail ai gestori del tuo hosting..magari hai qualche parametro sbagliato
Avatar utente
Rumez
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 1783
Iscritto il: mar mag 13, 2003 2:08 pm

Messaggioda domenico127 » gio lug 27, 2006 11:11 pm

Rieccomi. Ciao Rumez. Ho fatto qualche ricerca all'interno del sito del mio hosting. Ho trovato due cose importanti e che riporto di seguito:

1.
Codice: Seleziona tutto
Ecco uno script di esmepio per l'accesso da PHP ad un database MySQL; i commenti spiegano le singole operazioni:



<?php
// * mysql_connect necessita di servername, user e password
// * come argomenti. mysql_selectdb utilizza il nome del database.
// * Vengono utilizzate insieme per aprire una connesisone al database.
mysql_connect($SERVER,$USER,$PASSWORD);
mysql_selectdb($DATABASE);

// Esecuzione query
// * mysql_query prende come argomento la query che
// * volete eseguire sul database. Il risultato viene
// * assegnato ad una variable, che puo' essere utilizzata
// * in seguito per recuperare i risultati
$QUERY = mysql_query("SELECT * from test");

// Numero di righe ottenute
// * Eseguendo mysql_num_rows per la query in oggetto
// * sapremo quante righe essa ha ritornato
$NUMROWS = mysql_num_rows($QUERY);

// Visualizza risultati
if ($NUMROWS) {
$I = 0;
while ($I < $NUMROWS) {
// Recupero valori
// * mysql_result ritorna il valore di una specifico campo
// * di una specifica riga. Gli argomenti sono tre:
// * la query, la riga ed il nome del campo
$FIELD1 = mysql_result($QUERY,$I,"field1");
$FIELD2 = mysql_result($QUERY,$I,"field2");
$FIELD3 = mysql_result($QUERY,$I,"field3");
echo "field1 = $FIELD1, field2 = $FIELD2, field3 = $FIELD3 \n";
$I++;
}
}

?>




2.
Codice: Seleziona tutto
Per questioni di sicurezza non è possibile accedere al server MySQL tramite client esterni, ma solo attraverso script installati nello spazio web, oppure phpMyAdmin presente nel cpanel del sito. In alternativa è possibile utilizzare dei client MySQL esterni che permettono il collegamento via tunnelling, come la versione gratuita/freeware/lite di Ems MySQL Manager.


Mi affido alla tua gentilezza e pazienza!
Avatar utente
domenico127
Bronze Member
Bronze Member
 
Messaggi: 611
Iscritto il: sab lug 23, 2005 3:10 pm

Prossimo

Torna a Sviluppo Web

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising