Visualizzazione risultati 1 fino 16 di 16

Discussione: passare dal guestbook al sistema di commenti

  1. #1
    Guest

    Post passare dal guestbook al sistema di commenti

    Ciao a tutti.
    Seguendole guide online di php sono riuscito a creare usa specie di guestbook.
    Ecco il codice che ho creato http://bwoord.com/script/guestbook
    In questo caso se inserisco questo codice in più pagine, mi dà sempre gli stessi commenti.
    Come faccio a far in modo che non mi ripeti sempre gli stessi commenti ma mi dia solo i commnenti che sono stati inseriti in quella pagina?
    in pratica voglio creare un sistema di commenti
    Ultima modifica di bboys : 25-05-2011 alle ore 12.57.41

  2. #2
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    dato che questo comment system è basato sul database,una tabella , ovunque lo inserisci nelle pagine vedrai sempre tutti i messaggi....

    una soluzione è che modifichi la tabella aggiungendo un campo in cui registri la pagina di provenienza del messaggio...in questo modo poi richiami tutti i messaggi inerenti a quella pagina...

    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    dato che questo comment system è basato sul database,una tabella , ovunque lo inserisci nelle pagine vedrai sempre tutti i messaggi....

    una soluzione è che modifichi la tabella aggiungendo un campo in cui registri la pagina di provenienza del messaggio...in questo modo poi richiami tutti i messaggi inerenti a quella pagina...

    grazie FUNziona!!
    ho ucreato uno spazio nella tabella "url" come mi hai detto e ho aggiunto questo


    Codice HTML:
    $url = $_SERVER['REQUEST_URI'];
    
    $connect = mysql_query("SELECT * FROM commenti WHERE url = '$url'");
    while ($row = mysql_fetch_array($connect)){
        echo $row[1]. '<br>'.$row[2];
    }
    EDIT:

    un'altra domanda.
    Io ho creato un pannello di controllo per eliminare i commenti.
    Accanto ad ogni commento ho aggiunto il bottone "elimina", però come faccio a far funzionare questo bottone? non so come impostare il codice per eliminare il commento accanto
    Ultima modifica di alemoppo : 25-05-2011 alle ore 13.07.32 Motivo: niente up!

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,762

    Predefinito

    Quando clicchi sul bottone "elimina" devi far in modo di eseguire la query con DELETE.
    Quindi, ad esempio, il bottone lo fai come: href='elimina.php?id=k' (dove k è l'id del commento da eliminare).

    Quindi, nella pagina elimina, prima controlli se quell'utente può eliminare il messaggio; in caso affermativo lo elimini (eseguendo, appunto, la DELETE ... WHERE ID='.$_GET['id].'...)

    Ciao!

  5. #5
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    io userei mysql_real_escape_string() manuale:http://php.net/manual/en/function.my...ape-string.php
    in fase di registrazione del campo url....

    poi prima di eseguire mysql_fetch_array(), io eseguirei mysql_num_rows() per ottenere il numero di righe nel risultato....,es:

    Codice PHP:
    $url = mysql_real_escape_string($_SERVER['REQUEST_URI']);

    $connect = mysql_query("SELECT * FROM commenti WHERE url = '$url'");

    $num_of_rows=mysql_num_rows($connect);

    if (
    $num_of_rows > 0) {

    while (
    $row = mysql_fetch_array($connect)){
    echo
    $row[1]. '<br>'.$row[2];
    }

    }
    else echo
    "<br>Non sono stati trovati commenti in questa pagina!";
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Quando clicchi sul bottone "elimina" devi far in modo di eseguire la query con DELETE.
    Quindi, ad esempio, il bottone lo fai come: href='elimina.php?id=k' (dove k è l'id del commento da eliminare).

    Quindi, nella pagina elimina, prima controlli se quell'utente può eliminare il messaggio; in caso affermativo lo elimini (eseguendo, appunto, la DELETE ... WHERE ID='.$_GET['id].'...)

    Ciao!
    Ma come fa a sapere il bottone (che è uno, ha sempre la stessa funzione e si ripete per ogni commento postato) l'id del commento accanto?

    PS se ho capito bene



    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    io userei mysql_real_escape_string() manuale:http://php.net/manual/en/function.my...ape-string.php
    in fase di registrazione del campo url....

    poi prima di eseguire mysql_fetch_array(), io eseguirei mysql_num_rows() per ottenere il numero di righe nel risultato....,es:

    Codice PHP:
    $url = mysql_real_escape_string($_SERVER['REQUEST_URI']);

    $connect = mysql_query("SELECT * FROM commenti WHERE url = '$url'");

    $num_of_rows=mysql_num_rows($connect);

    if (
    $num_of_rows > 0) {

    while (
    $row = mysql_fetch_array($connect)){
    echo
    $row[1]. '<br>'.$row[2];
    }

    }
    else echo
    "<br>Non sono stati trovati commenti in questa pagina!";
    Non ho capito bene cosa si fa con questo. Comunque ho inserito il codice ... e poi? per eliminare?
    Ultima modifica di bboys : 25-05-2011 alle ore 18.35.20

  7. #7
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    mysql_num_rows() ti permette di sapere quanti commenti ci sono per pagina, se il suo valore è pari a zero non ci sono commenti in quella pagina....

    mysql_real_escape_string() serve come sicurezza dei dati sql....

    l'es. di alemoppo è fatto sul query string via $_GET, praticamente per ogni commento visualizzato fai visualizzare (dove vuoi per es, alla fine o all'inizio del commento) un link per cancellare lo stesso impostando una variabile per es. id che corrisponderà all' id del commento della tabella.....ogni link avrà un id per ogni commento....quando clicchi sul link ricarichi la stessa pagina con l'id del commento, quindi prelevi l'id con $_GET['id'] ed esegui la query con DELETE...WHERE id='$_GET['id']'


    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    mysql_num_rows() ti permette di sapere quanti commenti ci sono per pagina, se il suo valore è pari a zero non ci sono commenti in quella pagina....

    mysql_real_escape_string() serve come sicurezza dei dati sql....

    l'es. di alemoppo è fatto sul query string via $_GET, praticamente per ogni commento visualizzato fai visualizzare (dove vuoi per es, alla fine o all'inizio del commento) un link per cancellare lo stesso impostando una variabile per es. id che corrisponderà all' id del commento della tabella.....ogni link avrà un id per ogni commento....quando clicchi sul link ricarichi la stessa pagina con l'id del commento, quindi prelevi l'id con $_GET['id'] ed esegui la query con DELETE...WHERE id='$_GET['id']'


    Ok. perfetto
    Ma il discorso per eliminare i commenti?
    Ultima modifica di bboys : 26-05-2011 alle ore 14.29.21

  9. #9
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    te lo abbiamo spiegato.....non è niente di complesso...

    se puoi, posta il codice che usi per visualizzare i commenti nella tua area admin....o fino dove sei arrivato....

    ciao
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  10. #10
    Guest

    Predefinito

    ecco l'area admin...:

    Codice HTML:
    <?php
    
    session_start();
    if(session_is_registered(Logged)){
    echo "Benvenuto Uttente!.<br> | <a href='logout.php'>Esci</a>";
    
    //pagina di configurazione
    include 'config.php'; 
    
    //pagina di connessione
    include 'connect.php';
    
    //seleziono il database e tabella
    $select = mysql_select_db($db_name,$conn);
    
    
    if(!isset($_POST['submit'])){
    echo '<br> <big>Commenti:</big><br><br>';
    
    //seleziono tutti commenti
    $query = mysql_query("SELECT * FROM commenti");
    while ($row = mysql_fetch_array($query)){
         $row[testo] = str_replace("<", "&lt;", $row[testo]);
    
    // lista Commenti 
    echo .$row[2].'<br>' .$row[3].'<br>'.$deletet.'<br><br>'; 
    
    }
    
    
    }else{
    
    $nome = mysql_real_escape_string($_POST['nome']);
    $testo = mysql_real_escape_string($_POST['testo']);
    
    
    $insert = "INSERT INTO commenti(url,nome,testo) VALUES ('$url','$nome','$testo')";
    $result = mysql_query($insert,$conn);
    if ($result){
      echo '<u>messaggio inviato</u> | <a href="">aggiorna</a>;
    }else{
      echo "Errore nell'invio della query";
    }
    mysql_close($conn);
    }
    
    }else{
    echo "<center>Acesso negato! <br><a href='login.php'>Login</a>";
    
    }
    
    include 'config.php';
    include 'connect.php';
    
       
       
    ?>

  11. #11
    Guest

    Predefinito

    Una cosa, session_is_registered è deprecato, usa $_SESSION..

    Codice PHP:
    if(isset($_SESSION['Logged'])) {
    blablabla
    }

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da suppliers Visualizza messaggio
    Una cosa, session_is_registered è deprecato, usa $_SESSION..

    Codice PHP:
    if(isset($_SESSION['Logged'])) {
    blablabla
    }
    così però non mi dà l'accesso
    Ultima modifica di bboys : 27-05-2011 alle ore 16.31.02

  13. #13
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    nel codice ci sono diversi errori...

    per visualizzare tutti gli errori, all'inizio del codice php, prova ad inserire --> error_reporting(E_ALL);

    le variabili del form input devono essere prima controllate e validate ....

    nel file login devi usare $_SESSION['qui la tua variabile']....

    Ho rifatto un po' il codice, guarda se funziona....

    in ogni caso questo codice è di esempio, in quanto il nome dovrebbe essere il nome_utente salvato come sessione e modificare la query di ricerca con il nome.....

    Codice PHP:
    <?php

    session_start
    ();
    //prima definire le variabili in uso:
    $nome=$testo=$url=$error=null;

    if(isset(
    $_SESSION['Logged']) AND !empty($_SESSION['Logged'])){
    echo
    "Benvenuto Uttente!.<br> | <a href='logout.php'>Esci</a>";

    //pagina di configurazione
    include 'config.php';

    //pagina di connessione
    include 'connect.php';

    //seleziono il database e tabella
    $select = mysql_select_db($db_name,$conn);


    if(isset(
    $_POST['submit'])){

    if (isset(
    $_POST['nome']) AND !empty($_POST['nome'])) $nome = mysql_real_escape_string($_POST['nome']);
    else
    $error="<br>Il Nome è obbligatorio!";

    if (isset(
    $_POST['testo']) AND !empty($_POST['testo'])) $testo = mysql_real_escape_string($_POST['testo']);
    else
    $error.="<br>Il Testo è obbligatorio!";

    $url=mysql_real_escape_string($_SERVER['REQUEST_URI']);

    //qui controlliamo anche url che non sia nullo:
    if (empty($url)) $error.="<br>Errore grave: l'url non esiste!";

    if (!
    $error) {
    $insert = "INSERT INTO commenti(url,nome,testo) VALUES ('$url','$nome','$testo')";
    $result = mysql_query($insert,$conn);

    if (
    $result){
    echo
    '<br><u>Messaggio inviato</u> | <a href="">aggiorna</a>';
    }else{
    echo
    "<br>Errore invio query";
    }

    }else echo
    "<font color='red' size='3'>".$error."</font>";

    }

    if (isset(
    $_GET['scelta']) AND isset($_GET['id'])){
    if (
    $_GET['scelta']=='cancella'){
    $id=intval($_GET['id']);//restituisce sempre il valore intero

    if ($id>0 AND is_numeric($id)) {

    $id=mysql_real_escape_string($id);
    $delete = "DELETE FROM commenti WHERE id = '$id'";
    $result = mysql_query($delete,$conn);

    if (
    $result){
    echo
    '<br><u>Commento camcellato!</u> | <a href="">aggiorna</a>';
    }else{
    echo
    "<br>Errore invio query";
    }

    }
    //end $id
    else echo "<br>Errore : non è possibile cancellare il commento!";
    }
    //end cancella
    }//end isset



    echo '<br><big>Commenti:</big><br><br>';

    //seleziono tutti commenti
    ?>

    <TABLE cellpadding='3' cellspacing='1' border='0' align='center'>

    <?
    $query
    = mysql_query("SELECT * FROM commenti");

    $num_of_rows=mysql_num_rows($query);

    if (
    $num_of_rows > 0) {
    ?>
    <TR>
    <TH>Numero</TH>
    <TH>Autore</TH>
    <TH>Testo</TH>
    <TH>Url</TH>
    <TH>Delete</TH>
    </TR>
    <?

    while ($ref = mysql_fetch_array($query)) {

    $id = $ref['id'];
    $autore = $ref['nome'];
    $commento = str_replace("<", "&lt;", $ref['testo']);
    $url = $ref['url'];

    ?>
    <TR>
    <TD><?=$id?></TD>
    <TD><?=$autore?></TD>
    <TD><?=$commento?></TD>
    <TD><?=$url?></TD>
    <TD><a href='<?=$PHP_SELF?>?scelta=cancella&id=<?=$id?>'>Cancella</a></TD>
    </TR>
    <?
    }//end while
    }
    else{
    echo
    "<TR><TH><br>Non ci sono Commenti!</TH></TR>";
    }

    ?>
    </TABLE>
    <?

    }else{
    echo
    "<br><center>Acesso negato! <br><a href='login.php'>Login</a>";

    }

    ?>
    Ultima modifica di EuroSalute : 28-05-2011 alle ore 13.23.04 Motivo: più info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  14. #14
    Guest

    Predefinito

    Funziona tutto tranne questo

    Codice HTML:
    if(isset($_SESSION['Logged']) AND !empty($_SESSION['Logged'])){
    Non mi da nessun errore solo che non mi fa entrare.
    Ho messo come prima:

    Codice HTML:
    if(session_is_registered(Logged)){
    Comunque quello che sto cercando do capire non e questo, ma quello che ho scritto prima. Come eliminare i messaggi

  15. #15
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per il problema di $_SESSION[] , te lo spiegato prima, allora inserisci qui il codice del file login.php....

    per il problema che non riesci a capire come cancellare i messaggi, ho fatto l'es nello script supponendo che la tabella commenti ha un campo id auto_increment....ed è PRIMARY
    non so cosa non riesci a capire?

    Codice PHP:
    if (isset($_GET['scelta']) AND isset($_GET['id'])){
    if (
    $_GET['scelta']=='cancella'){
    $id=intval($_GET['id']);//restituisce sempre il valore intero

    if ($id>0 AND is_numeric($id)) {

    $id=mysql_real_escape_string($id);
    $delete = "DELETE FROM commenti WHERE id = '$id'";
    $result = mysql_query($delete,$conn);

    if (
    $result){
    echo
    '<br><u>Commento camcellato!</u> | <a href="">aggiorna</a>';
    }else{
    echo
    "<br>Errore invio query";
    }

    }
    //end $id
    else echo "<br>Errore : non è possibile cancellare il commento!";
    }
    //end cancella
    }//end isset
    Ultima modifica di EuroSalute : 29-05-2011 alle ore 11.30.24 Motivo: più info...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    per il problema di $_SESSION[] , te lo spiegato prima, allora inserisci qui il codice del file login.php....

    per il problema che non riesci a capire come cancellare i messaggi, ho fatto l'es nello script supponendo che la tabella commenti ha un campo id auto_increment....ed è PRIMARY
    non so cosa non riesci a capire?

    Codice PHP:
    if (isset($_GET['scelta']) AND isset($_GET['id'])){
    if (
    $_GET['scelta']=='cancella'){
    $id=intval($_GET['id']);//restituisce sempre il valore intero

    if ($id>0 AND is_numeric($id)) {

    $id=mysql_real_escape_string($id);
    $delete = "DELETE FROM commenti WHERE id = '$id'";
    $result = mysql_query($delete,$conn);

    if (
    $result){
    echo
    '<br><u>Commento camcellato!</u> | <a href="">aggiorna</a>';
    }else{
    echo
    "<br>Errore invio query";
    }

    }
    //end $id
    else echo "<br>Errore : non è possibile cancellare il commento!";
    }
    //end cancella
    }//end isset
    Pegfetto.
    Adesso ho capito grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •