• User

    come faccio a non far eliminare e aggiornare tutti i messaggi che scrive l'utente?perchè io vorrei che potesse agire solo su quello interessato...il codice:

    [PHP]<?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect("localhost","root","") or die;
    mysql_select_db("sito");

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>modifica/cancella annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella account</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    //seleziono gli annunci inseriti del db e li mostro
    $risultato = mysql_query("SELECT * FROM annunci_cerco WHERE autore='".$_SESSION['utente']."'");
    //mostro tutti gli annunci inseriti 
    

    while ($riga = mysql_fetch_array($risultato)) {

    echo "<br>";
    echo"<br>";

    ?>

    <table id="table1">

    <tr>
    <td><?php echo"autore"; ?></td>
    <td><?php echo "titolo" ?></td>
    <td> <?php echo "testo"; ?></td>

    </tr>

    <tr>
        
        <td id="testo"><?php echo $riga['autore'];?></td>
        <td id="testo"><?php  echo $riga['title']; ?></td>
        <td id="testo"> <?php echo $riga['body']; ?></td>
        
    </tr> 
    
    <tr>
    
        <td id="testo"><?php echo"<a href='inserisci1.php'>modifica</a>";?></td>
        <td id="testo"><?php echo"<a href='cancella1.php'>cancella</a>"?></td>
    </tr>    
    

    </table>

    <?php }
    

    //chiudo la connessione al db
    mysql_close();
    ?>
    </body>

    </html>
    [/PHP]

    [PHP]<?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect("localhost","root","") or die;
    mysql_select_db("sito");

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>cancella annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella account</a></li>";
                                                                                
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    if (isset($_SESSION['utente'])){

    ?>

    <form method="POST" action="cancellato1.php">
    <p><font face="Times new roman" color="black" size="4px">vuoi cancellare il messaggio?</p>

    Si<input type="radio" name="canc" value="si"/>
    No<input type="radio" name="canc" value="no"/>
    <br>
    <br>
    <input type="submit" value="invia" name="invia"/>

    </form>

    <?php
    }else{

    $messaggio="sessione scaduta";
    }

    mysql_close();
    ?>
    </body>
    </html>[/PHP]

    [PHP]<?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect("localhost","root","") or die;
    mysql_select_db("sito");

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>cancella annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella account</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    // recupero i dati della sessione utente in corso
    $autore=$_SESSION['utente'];

    $c="cancella";
    //l'azione cancella prevede l'opzione si/no
    $c = isset($_GET['cancella']) ? $_GET['cancella'] : "";

                if ($_POST["canc"]=="si") { // se sceglie si
                //eseguo la query per la cancellazione dell'account
                $cancellannunci="DELETE FROM annunci_cerco WHERE autore='$autore'";
        $res=mysql_query($cancellannunci) or die("fallita"); // in caso di problemi con la query
        
                echo"<font color='black' face='times new roman' size='4px'>dati cancellati";
                header("refresh:2,URL=annunci.php");
    

    }
    //altrimenti se sceglgo no i dati non vengono cancellati
    if($_POST["canc"]=="no"){
    echo"<font color='black' face='times new roman' size='4px'>i dati non sono stati cancellati";
    header("refresh:2,URL=annunci.php");

      }
    

    //chiudo la connessione con il db
    mysql_close();

    ?>

    </body>

    </html>
    [/PHP]


  • User

    Adesso il problema ce l'ho solo nella pagina di aggiornamento dei messaggi...

    Ho creato una pagina dove l'utente trova i link per cancellare e modificare, che rimandeerà ad una form per scrivere il messaggio modificato e una che dovrebbe modificare e inserire nel db la modifica, ma leggo solo la modifica di fallimento...mi aiutate???

    [PHP]
    <?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect($host,$user,$password) or die;
    mysql_select_db($db);

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>modifica/cancella annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella account</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    //seleziono gli annunci inseriti del db e li mostro
    $risultato = mysql_query("SELECT * FROM annunci_cerco WHERE autore='".$_SESSION['utente']."'");
    //mostro tutti gli annunci inseriti 
    

    while ($riga = mysql_fetch_array($risultato)) {

    echo "<br>";
    echo"<br>";

    ?>

    <table id="table1">

    <tr>
    <td><?php echo"autore"; ?></td>
    <td><?php echo "titolo" ?></td>
    <td> <?php echo "testo"; ?></td>

    </tr>

    <tr>
        
        <td id="testo"><?php echo $riga['autore'];?></td>
        <td id="testo"><?php  echo $riga['title']; ?></td>
        <td id="testo"> <?php echo $riga['body']; ?></td>
        
    </tr> 
    

    <tr>
    <?php $id= $riga['id']?>
    <td id="testo"><?php echo"<a href='modifica_annunci_1.php?annuncio=".$riga['id']."'>modifica</a>"?></td>
    <td id="testo"><?php echo"<a href='cancellato1.php?annuncio=".$riga['id']."'>cancella</a>"?></td>
    </tr>
    </table>

    <?php }
    

    //chiudo la connessione al db
    mysql_close();
    ?>
    </body>

    </html> [/PHP]
    [PHP]

    <?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect($host,$user,$password) or die;
    mysql_select_db($db);

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>modifica annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    $_GET['annuncio'];
    $id_ann=$_GET['annuncio'];

    mysql_query("SELECT * FROM annunci_cerco WHERE id=".$_GET['annuncio']);

    ?>
    <form method="POST" action="modifica_annunci_2.php">
    <p>modifica i tuoi annunci</p>

    Titolo  <input type="text" name="title" value=""/><br>
    
    Testo <textarea name="body" cols="10" rows="10"></textarea>
    
    <input type="submit" name="invia" value="inserisci"/>
    

    </form>

    <?php
    mysql_close();

    ?>

    </body>
    </html>

    [/PHP]
    [PHP]<?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect($host,$user,$password) or die;
    mysql_select_db($db);

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>modifica annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php
    $_GET['annuncio'];
    $id_ann=$_GET['annuncio'];
    $title=$_POST['title'];

    $body=$_POST['body'];

    $modificannunci="UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann";
    $res=mysql_query($modificannunci) or die("fallita");

    mysql_close();    
    

    ?>

    </body>
    </html>
    [/PHP]


  • ModSenior

    Invece di:
    [php]
    mysql_query($modificannunci) or die("fallita");
    [/php]
    Metti:
    [php]
    mysql_query($modificannunci) or die("fallita".mysql_error());
    [/php]
    Cosi da visualizzare l'errore.


  • User

    Notice: Undefined index: annuncio in C:\xampp\htdocs\prova\modifica_annunci_2.php on line 60

    Notice: Undefined index: annuncio in C:\xampp\htdocs\prova\modifica_annunci_2.php on line 61
    fallitaYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    Mi dice questo


  • ModSenior

    Non arrivano quelle variabili POST che tu utilizzi, ci sarà un altro nome impostato nel form.


  • User

    @Thedarkita said:

    Non arrivano quelle variabili POST che tu utilizzi, ci sarà un altro nome impostato nel form.

    Non riesco a modificare i dati...anche con le modifiche...ecco il codice modificato...

    [PHP]<?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect($host,$user,$password) or die;
    mysql_select_db($db);

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>modifica annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    $id_ann=$_GET['annuncio'];
    $ris=mysql_query("SELECT * FROM annunci_cerco WHERE id=".$_GET['annuncio']);

    ?>
    <form method="POST" action="modifica_annunci_2.php"><?php echo $id_ann ?>
    <p>modifica i tuoi annunci</p>

    Titolo  <input type="text" name="title" value=""/><br>
    
    Testo <textarea name="body" cols="10" rows="10"></textarea>
    
    <input type="submit" name="invia" value="inserisci"/>
    

    </form>

    <?php
    mysql_close();

    ?>

    </body>
    </html>
    [/PHP]

    [PHP]<?php
    //inizio la sessione utente
    session_start();
    //includo i parametri del db
    include("varDB.inc");
    //apro la connessione al db e lo seleziono
    $conn=mysql_connect($host,$user,$password) or die;
    mysql_select_db($db);

    //inizializzo la variabile messaggio
    $messaggio="";

    ?>

    <html> <!-- striscia in alto-->

    <head>
        <!-- css esterno -->
            <link rel="stylesheet" type="text/css" href="stile.css">
            <title>modifica annunci </title>
    </head>
    
    
        <body>
        <!-- striscia in alto -->
            <table>
                    <tr>
                        <td>
                            <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p>    
                            
                        </td>         
                    </tr>
            </table>
    

    <div id="menu">
    <ul>
    <?php
    //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"

    if(isset($_SESSION['utente'])){
    
     echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>";
                                        echo"<li><a href='login.php?azione=logout'>logout</a></li>";
                                        echo"<li><a href='cancellato.php'>cancella</a></li>";
                                        
                                        echo"<br>";
                                        echo"<br>";
                                    }else{
                                    
                                    $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta";
                                }
                                
    ?>
       </ul>
                            </div>
    

    <?php

    $id_ann=$_GET['id'];
    $title=$_POST['title'];

    $body=$_POST['body'];

    if($title=="" ||$body==""){
    echo "<font color='black' face='times new roman' size='4px'>Non hai riempito i campi";

                $q="UPDATE annunci_cerco SET title='$title', body='$body' WHERE id=$id_ann";
    

    mysql_query($q);

    echo"modifica ok";
    }else{

        echo"impossibile modificare";}
    
    
    mysql_close();    
    

    ?>

    </body>
    </html>
    [/PHP]


  • ModSenior

    Ma che senso ha fare un controllo che i campi siano vuoti e fare l'update in quel caso? Non dovresti fare il contrario?


  • User

    Hai ragione, ma ero solo per leggere se la modifica era andata a buon fine...al posto di quello ho inserito...

    [PHP]$m=mysql_query("UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann");
    if($m){

    echo"modifica ok";
    }else{

        echo"impossibile modificare";}
    

    [/PHP]

    Però le modifiche non vanno a buon fine..perchè leggo impossibile modificare...come è possibile?


  • ModSenior

    La query genera un qualche errore, aggiungi mysql_error() per mostrarlo.


  • User

    @Thedarkita said:

    La query genera un qualche errore, aggiungi mysql_error() per mostrarlo.

    Mi da questo messaggio fallitaQuery was empty


  • ModSenior

    Devi fare in questo modo:
    [php]
    $m=mysql_query("UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error());
    if($m){

    echo"modifica ok";
    }else{

        echo"impossibile modificare";} 
    

    [/php]


  • User

    ecco l'errore che mi da..

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    la seconda olta che ho provato mi dice sempre fallitaQuery was empty


  • ModSenior

    Avrai il carattere ' in una delle 3 variabili che passi alla query, devi usare addslashes.
    TI consiglio inoltre una lettura di questa guida:
    http://www.giorgiotave.it/forum/scripting-e-risorse-utili/189074-guida-sql-injection.html


  • User

    Mi puoi spiegare cosa significa?


  • ModSenior

    Dovresti leggere la guida per capire, li è tutto spiegato sui problemi che derivano dagli apici e determinate configurazioni di php.


  • User

    Adesso funziona tutto!!!mi è bastato cambiare questo della pag contenente i dati inviati dal form
    $id_ann=$_POST['id'];
    al postodi $id_ann=$_GET['id'];

    graazie dell'aiuto!!!


  • User

    volevo chiedere ancora una volta..vorrei verificare prima di una modifica e di una cancellazione l'esistenza del messaggio..come posso fare?


  • ModSenior

    Fai una query select e controlli con mysql_num_rows se c'è il record.


  • User

    Tipo una cosa del genere?

    [PHP]if($title!="" && $body !=""){
    $risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
    mysql_num_rows($risultato);

    $modifica=mysql_query("UPDATE annunci_offro SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error("query modifica fallita"));

    echo"modifica ok";
    header("refresh:2;URL=annunci_offro.php");
    }else{

        echo"impossibile modificare";
        header("refresh:2;URL=annunci_offro.php");
        } 
    

    }
    mysql_close();

    ?>
    [/PHP]

    dove prima della query update ho messo select con il num_rows


  • ModSenior

    [php]
    mysql_num_rows($risultato);
    [/php]
    Restituisce il numero di record quindi tu dovresti fare una cosa del tipo:
    [php]
    if(mysql_num_rows($risultato) == 0)
    die('ID non presente');
    [/php]