Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115

    Guestbook 'Particolare'

    Salve a tutti, volevo creare un guestbook particolare. Ciò che volevo realizzare è semplice:

    - In una pagina X un utente può inserire in un form il proprio nome, e basta, solo un nome, ed inviarlo;
    - Il nome scritto dall'utente viene visualizzato in un altra pagina Y, differente dalla X;

    Ora ho trovato questo soergente, di un normale guestbook, che ha come campi: Nome e Testo (che sarebbe un commento). E direttamente sotto a questi campi apparirà il messaggio che si invia. Cosa totalmente differente da quella che vorrei realizzare io, ma dato che non so scrivere sorgenti, anche così banali, da 0, ho dovuto usare una base:

    [PHP]<?php

    // © 2011 http://bwoord.com
    //variabili
    $db_host = "localhost";
    $db_user = "nome_utente";
    $db_pass = "password";
    $db_name = "nome_del_database";

    //apro la connessione
    $conn = mysql_connect($db_host,$db_user,$db_pass);
    //seleziono il database e tabella
    $select = mysql_select_db($db_name,$conn);

    if(!isset($_POST['submit'])){
    echo '<form action="#" method="post">
    <table border="0" cellpadding="1"><td><table border="0""><tr><div style="background: #dadada url(http://bwoord.com/sites/all/themes/s...s/menu-bgg.png) repeat-x; border:1px dotted blue; padding:4px; "> <font color="003366">Nome:</font></div></tr><tr></td></table><div style="background: #dadada url(http://bwoord.com/sites/all/themes/s...s/menu-bgg.png) repeat-x; border:1px dotted blue; padding:0px; "><center><input type="text" name="nome" /></center></div></tr></table>
    <table border="0" cellpadding="1" width="407"><td><div style="width:100%; background: #dadada url(http://bwoord.com/sites/all/themes/s...s/menu-bgg.png) repeat-x; border:1px dotted blue; padding:4px; "> <font color="003366">Testo:</font></div></td></table> <table border="0"><tr><td> <div style="background: #dadada url(http://bwoord.com/sites/all/themes/s...s/menu-bgg.png) repeat-x; border:1px dotted blue; padding:0px; "><textarea name="testo" cols="48" rows="5"></textarea></div></tr><tr></td><td> <div align="right"><input type="submit" name="submit" value="Invia il messaggio" /></div></td></tr></table> </form> ';

    $fatto = mysql_query("SELECT * FROM commenti");
    $num_of_rows=mysql_num_rows($fatto);
    if ($num_of_rows > 0) {
    echo '
    <big>Commenti:</big>
    <table border="0" cellpadding="1"><td><font color="green">'.$num_of_rows.'</font> commenti</td></table>
    ';

    while ($row = mysql_fetch_assoc($fatto)){
    $row[testo] = str_replace("<", "&lt;", $row[testo]);
    echo '<table border="0" width="420"><td>
    <div style="background: #dadada url(http://bwoord.com/sites/all/themes/s...s/menu-bgg.png) repeat-x; border:1px dotted blue; padding:5px; "> <font color="003366">'.$row[nome].'</font></div> <div id="linki" style="background-color:#F3F7FE; border:1px dotted blue; padding:5px; "><font color="003366">'.$row[testo].'</font></div>
    </td></table> ';
    }
    }else{
    echo "Nessun commento";
    }

    }else{
    $nome = mysql_real_escape_string($_POST['nome']);
    $testo = mysql_real_escape_string($_POST['testo']);

    if(!$nome){
    if(!$testo){
    Echo '<font color="red">Devi inserire il nome e il testo!</font> | Riprova';
    }else{
    echo '<font color="red">Devi inserire il nome!</font> | Riprova';
    }
    }elseif(!$testo){
    Echo '<font color="red">Devi inserire il testo! </font> | Riprova';
    }else{

    $insert = "INSERT INTO commenti(nome,testo) VALUES ('$nome','$testo')";
    $result = mysql_query($insert,$conn);
    if ($result){
    echo '<font color="green"><u>messaggio inviato</u> | aggiorna</font>';
    }else{
    echo "Errore nell'invio della query";
    }
    }
    mysql_close($conn);
    }

    ?>

    Ciò che bisogna fare sarebbe: Eliminare l'inserimento del 'Testo' e fare in modo che la visualizzazione dei nomi inseriti si trovi in una pagina differente da quella in cui si inseriscono i suddetti. Ora ho provato a fare così.. ma niente proprio:

    visualizzazione.php
    Codice PHP:
    <?php $fatto mysql_query("SELECT nome FROM commenti");
    $num_of_rows=mysql_num_rows($fatto); 
    if (
    $num_of_rows 0) { 
    echo 
    '
    <big>
    Nome:</big>
    <table border="0" cellpadding="1"><td>[size="1"]<font color="green">'
    .$num_of_rows.'</font> commenti[/size]</td></table>
    '

    }
    ?>
    inserimento.php
    Codice PHP:
    <?php 

    // © 2011 [url]http://bwoord.com[/url]
    //variabili 
    $db_host "localhost";
    $db_user "nome_utente";
    $db_pass "password";
    $db_name "nome_del_database";

    //apro la connessione
    $conn mysql_connect($db_host,$db_user,$db_pass);
    //seleziono il database e tabella
    $select mysql_select_db($db_name,$conn);

    if(!isset(
    $_POST['submit'])){ 
    echo 
    '<form action="#" method="post">
    <table border="0" cellpadding="1"><td><table border="0""><tr><div style="background: #dadada url([url]http://bwoord.com/sites/all/themes/smokers/images/menu-bgg.png[/url]) repeat-x; border:1px dotted blue; padding:4px; "> [b]<font color="003366">Nome:</font>[/b]</div></tr><tr></td></table><div style="background: #dadada url([url]http://bwoord.com/sites/all/themes/smokers/images/menu-bgg.png[/url]) repeat-x; border:1px dotted blue; padding:0px; "><center><input type="text" name="nome" /></center></div></tr></table>
     <table border="0" cellpadding="1" width="407"><td><div style="width:100%; background: #dadada url([url]http://bwoord.com/sites/all/themes/smokers/images/menu-bgg.png[/url]) repeat-x; border:1px dotted blue; padding:4px; "> [b]<font color="003366">Testo:</font>[/b]</div></td></table> <table border="0"><tr><td> <div style="background: #dadada url([url]http://bwoord.com/sites/all/themes/smokers/images/menu-bgg.png[/url]) repeat-x; border:1px dotted blue; padding:0px; "><textarea name="testo" cols="48" rows="5"></textarea></div></tr><tr></td><td> <div align="right"><input type="submit" name="submit" value="Invia il messaggio" /></div></td></tr></table> </form> '
    ;




    $row[testo] = str_replace("<""&lt;"$row[testo]);
    echo 
    '<table border="0" width="420"><td>
    <div style="background: #dadada url([url]http://bwoord.com/sites/all/themes/smokers/images/menu-bgg.png[/url]) repeat-x; border:1px dotted blue; padding:5px; "> [b]<font color="003366">'
    .$row[nome].'</font>[/b]</div> <div id="linki" style="background-color:#F3F7FE; border:1px dotted blue; padding:5px; "><font color="003366">'.$row[testo].'</font></div>
     </td></table> '

     

    }else{
    $nome mysql_real_escape_string($_POST['nome']);
    $testo mysql_real_escape_string($_POST['testo']);

    if(!
    $nome){
    if(!
    $testo){
    Echo 
    '<font color="red">Devi inserire il nome e il testo!</font> | [url=""]Riprova[/url]';
    }else{
    echo 
    '<font color="red">Devi inserire il nome!</font> | [url=""]Riprova[/url]';
    }
    }elseif(!
    $testo){
    Echo 
    '<font color="red">Devi inserire il testo! </font> | [url=""]Riprova[/url]';
    }else{

    $insert "INSERT INTO commenti(nome,testo) VALUES ('$nome','$testo')";
    $result mysql_query($insert,$conn);
    if (
    $result){
    echo 
    '<font color="green"><u>messaggio inviato</u> | [url=""]aggiorna[/url]</font>';
    }else{
    echo 
    "Errore nell'invio della query";
    }
    }
    mysql_close($conn);


    ?>
    Mi dareste una mano a realizzare ciò che chiedo, o meglio, mi fareste capire dove sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    La questione di visualizzare ciò che si immette nella stessa pagina in cui si immette o in una pagina a parte non sono cose completamente differenti.

    Mentre è completamente differente lo script del tuo post con quello che vuoi fare, o almeno che hai descritto nei 2 punti.

    Ricapitolando per fare quello che chiedi bastano due pagine, una html per inserire i dati e una php per riceverli e visualizzarli.

    sender.html

    Codice PHP:
    <html>
        .
        .
        .
        <
    body>
            <
    form action='receiver.php' method='post'>
                
    nome: <input type='text' name='nome' />

                <
    input type='submit' />
            </
    form>
        </
    body>    
    </
    html
    receiver.php
    Codice PHP:
    if(isset($_POST['nome']){
        echo 
    "ciao ".$_POST['nome'];

    Quindi nella pagina html nel form indichi:
    - nell'attributo action la pagina a cui inviare i dati
    - nell'attributo method invece puoi scegliere tra 2 metodi di invio post o get, get vale di default se decidessi di utilizzare tale metodo potresti anche omettere l'attributo method.

    Nella pagina php invece:
    -ti limiti a controllare se ti è stato inviato il dato atteso
    -lo puoi recuperare dall'array $_POST[indice] al posto dell'indice devi mettere l'attributo name del campo input che hai inviato, nel nostro caso il campo input aveva name = 'nome'. Se avessi inviato con get avresti trovato lo stesso valore in $_GET['nome']
    -con echo lo dai in output

    Questo meccanismo è alla base del funzionamento di ogni sito, sebbene esistono diversi modi con i quali si possono passare dati tra le pagine questo è il metodo di base con cui si possono rendere interattivi i siti, quindi cerca di capirlo bene.

    Nello script da te postato viene anche gestita la trascrizione su database dei dati immessi, questo è necessario per salvare l'input dell'utente, visto che con il metodo da me descritto finora non viene memorizzato nulla da nessuna parte.

    Se invece volessi mettere tutto quanto nella stessa pagina dovresti allestire una pagina php nel seguente modo:

    Codice PHP:
    <html>
        .
        .
        .
        <body>
            <form method='post'>
                nome: <input type='text' name='nome' />

                <input type='submit' />
            </form>
            <?php
                 
    if(isset($_POST['nome']){
                      echo 
    "ciao ".$_POST['nome'];
                 }
            
    ?>
        </body>    
    </html>
    Come era immaginabile basta unire i due file, l'unico cambiamento degno di nota sta nell'attributo action, infatti per inviare un form alla pagina stessa in cui è contenuto basta omettere tale attributo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    aSenza parole.. ti ringrazio all'infinito!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Mi da errore sulla linea '8' nonostante abbia mantenuto il nome di nome 'nome' (xD)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    che errore?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Parse error: syntax error, unexpected '{' in receiver.php on line 8

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    c'è una parentesi tonda non chiusa nell'if

    Codice PHP:
    if(isset($_POST['nome'])){
        echo 
    "ciao ".$_POST['nome'];


  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Perfetto.. però i nomi non si memorizzano, io vorrei rimanessero tutti.. per fare quyesto ho bisogno del database?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    se non sai assolutamente nulla di database non puoi pretendere che qualcuno in un post ti spieghi tutto...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    115
    Non chiedo assolutamente questo. La mia domanda era un'altra, mi scuso per essere stato frainteso.
    Per far si che un nome una volta scritto rimanga memorizzato nella pagina, ho bisogno di un database?

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.