Cancellazione record

frenkytribe

Utente Attivo
17 Gen 2013
87
0
0
Ciao a tutti, il problema è molto facile da spiegare.
In una pagina, dove stampo i commenti relativi ad essa, ho creato lo script per la cancellazione di quei commenti, dove il bottone "Elimina" appare soltanto alla persona che l'ha scritto e all'admin, alla pressione di quel bottone, purtroppo, vengono cancellati tutti i commenti che seguono quello che avrei voluto cancellare... Ovviamente di dovrebbe cancellare solo quello dove clicco Elimina..

Ecco il codice:

PHP:
<?
if(isset($_SESSION[valid_user]))
    echo " ";//script per inserire commenti
else
    echo '<br><div align="center" class="error"><img border="0" src="./image/report.png"> Per commentare devi effettuare il login.</div><br>';


$q_dati="SELECT * FROM commenti WHERE id_gui='$id' ORDER BY data DESC";
$dati=mysql_query($q_dati);
$n_dati=mysql_num_rows($dati);
if($n_dati<1){
    echo '<div class="info"><img border="0" src="image/info.png"> Nessun commento presente in questa guida.</div>';
}else{
    $i=0;
    while ($i<$n_dati){
        $noid=mysql_result($dati,$i,"id");
        $id_ut=mysql_result($dati,$i,"id_ut");
        $data=mysql_result($dati,$i,"data");
        $data    = strtotime($data);
        $il    = date('d/m/Y',$data);
        $alle= date('H:i',$data);
        $comm=mysql_result($dati,$i,"testo");
        $trovanome="SELECT username,avatar FROM utente WHERE id='$id_ut'";
        $nominativo=mysql_query($trovanome) or die ("Query fallita");
        $avatar=mysql_result($nominativo,0,"avatar");
        $di=mysql_result($nominativo,0,"username");
        $numcom=$n_dati-$i;
        ?>
<table border="0" width="750" align="center" style="border-bottom: 2px solid #c0c0c0; background-color: #f8fdfe;">
    <tr>
        <td rowspan="3" width="100" align="center">
            <img src="./<? echo $avatar; ?>" height="60">
            <br>
            <? echo $di; ?>
        </td>
    </tr>
    <tr>
        <td align="left">
            <font color="#c1c1c1" size="2">Commentato il: <i><? echo $il; ?></i> alle <i> <? echo $alle; ?></i>.</font>
        </td>
        <td align="right" >
            <?
            if($di==$_SESSION[valid_user] || $_SESSION[valid_user]=='admin'){
                    $delcomm="delcomm".$i; 
?>
                        <form method="post" action="?page=guide&act=wiev&id=<? echo $id; ?>">
                            <input type="submit" name="<? echo $delcomm; ?>" value="Elimina">
                            &nbsp;<font color="#c1c1c1" size="1"><i>#<? echo $numcom; ?></i></font>
                        </form>
<?
                }else{
            ?>
            <font color="#c1c1c1" size="1"><i>#<? echo $numcom; ?></i></font>
            <?
            }
            ?>
        </td>
    </tr>
    <tr>
        <td colspan="2" style="padding-left: 10px; border-left: 1px solid #e9e9e9; color: #636363;">
            <font size="2">
            <? echo nl2br(stripslashes(pulisci($comm))); ?>
            </font>
        </td>
    </tr>
</table>
<br>
<?
    if(($_POST[$delcomm])=="Elimina"){
                $del="DELETE FROM commenti WHERE id=$noid";
                mysql_query($del);
                header("refresh:0;");
            }


    $i++;
    }
}


?>
 
Scusate il doppio post ma non c'è il tasto Edit.
Mi sono accorto che, se loggo con accoun X e nella mia pagina ci sono solo commenti di X e ne cancello uno, tutto va a buon fine, se invece nella pagina ci sono commenti di altri utenti e cancello il mio, allora si cancellano anche i commenti degli altri...
 
Ho trovato la soluzione, lo script con la query veniva eseguito in ciclo per ogni record stampato. Ho risolto spostando lo script dentro l'IF che fa apparire Elimina.
 

Discussioni simili