Visualizzazione dei risultati da 1 a 8 su 8

Discussione: mysql quey DELETE

  1. #1

    mysql quey DELETE

    Salve gente,
    ho una pagina php dove gli utenti scrivono e visualizzano i commenti, ho creato un if dove se sei il proprietario del commento o sei l'admin hai un bottone Elimina.

    Il problema è che quando premo il bottone o basta un refresh della pagina mi si cancellano tutti i commenti e non solo quello che mi interessa cancellare.

    questo è il codice:
    Codice PHP:
    <?php
    $sendcomm
    =$_POST['sendcomm'];
    $query="SELECT * FROM commenti WHERE id_gui='$id' ORDER BY data";
    $risultato=mysql_query($query) or die ("Query fallita");


        
        
    $ncom=mysql_numrows($risultato);
        if (
    $ncom==0){ echo "Non ci sono commenti per questa guida.
    "
    ;}else{
    $i=0;
    while (
    $i<$ncom){    
        
    $noid=mysql_result($risultato,$i,"id") or die ("Non ci sono commenti per questa guida.");
        
    $id_ut=mysql_result($risultato,$i,"id_ut");
        
    $data=mysql_result($risultato,$i,"data");
        
    $comm=mysql_result($risultato,$i,"testo");
    $trovanome="SELECT username FROM utente WHERE id='$id_ut'";
        
    $nominativo=mysql_query($trovanome) or die ("Query fallita");
        
    $di=mysql_result($nominativo,0,"username");
        
    $numcom=$i+1;
        
    ?>
        <div align="left" style="padding:3px; font-size:12px; background-color: #fbfbfb; border-bottom:10px solid #fff;border-top:1px solid #e9e9e9;border-left:1px solid #e9e9e9;border-right:1px solid #e9e9e9;">
        <?
        
    echo "<font size=1>Di $di - Il $data</font><div style='float:right;'><font color='#c1c1c1' size='1'>#$numcom</font></div><hr>";
        if((
    $di==$_SESSION[valid_user])||(($_SESSION[valid_user])=='admin')){ ?>
        <div style=float:right;>
            <form method=post action="?page=guide&act=wiev&id=<? echo $id?>"><input type="submit" name="delcomm" value="Elimina"></form></div> 
        <?
        
        
    }
        echo 
    "[i]";
        echo 
    nl2br(urlreplace(stripslashes(pulisci($comm))));
        echo 
    "[/i]";
        
    ?>
        </div>
        
        <?
        
    if(($_POST['delcomm'])=="Elimina"){
        
    $del="DELETE FROM commenti WHERE id=$noid";
        
    mysql_query($del);
    }
        
    $i++;
        }}




      if (isset(
    $_SESSION['valid_user']))
      { echo 
    "
    "
    ;
          
    $q_theuser="SELECT id FROM utente WHERE username='$_SESSION[valid_user]'";
          
    $theuser=mysql_query($q_theuser) or die ("Query fallita");
          
    $theuserid=mysql_result($theuser,0,"id");
          
    $cod="gpt";
          
    $txtcomm=addslashes(pulisci($_POST[txtcomm]));
      if((
    $sendcomm=="Commenta")){
      if(!((
    $txtcomm=="")||($txtcomm=="Scrivi..."))){
      
    $q_newcomm="INSERT INTO commenti (id,id_ut,id_gui,data,testo) VALUES ('','$theuserid','$id','$dt','$txtcomm')";
      
    mysql_query($q_newcomm);
      
    header("refresh:0;");
      }}

      
    ?>
      <div align="left">
      <form action="?page=guide&act=wiev&id=<?echo $id;?>" method="post">
          <table border="0">
              <tr>
                  <td align="right">Commento</td>
                  <td align="left"><textarea name="txtcomm" cols="50" rows="5">Scrivi...</textarea></td>
              </tr>
              <tr>
                  <td align="right"></td>
                  <td align="left">
                      
                  </td>
              </tr>
              <tr>
                  <td align="center" colspan="2"><input type="submit" value="Commenta" name="sendcomm"></td>
              </tr>
          </table>
      </form>
      </div>
      

      <?
    }else
        echo 
    "
    Per inserire un commento devi effettuare l'accesso.
    [url="
    ?page=login&act=login>Accedi</a>"]Registrati[/url]";

    ?>
    Sono sicuro che il problema sta in
    Codice PHP:
    if(($_POST['delcomm'])=="Elimina"){
        
    $del="DELETE FROM commenti WHERE id=$noid";
        
    mysql_query($del);

    Ma non riesco a risolverlo..
    Potete aiutarmi?
    Grazie, Francesco.

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    I commenti che cancelli pare che siano della
    codice:
    SELECT * FROM commenti WHERE id_gui='$id' ORDER BY data
    quindi cancelli tutti quelli che hanno id_gui = $id, E' corretto?
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    esatto mi cancella questi, mentre io voglio cancellare soltanto il commento interessato.

  4. #4
    quando stampo i commenti prendo anche l'id del commento che sarebbe $noid

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    In verita nn si capisce molto quello che vuoi fare, cancelli i commenti in fase di stampa dopo averlo stampato (?).
    Vorresti fare prima un lista dei commenti e poi ad ogni commento, se 6 un utente abilitato, avere un bottone per cancellarlo?
    Ho usi ajax ed alla pressione di ogni bottone associato il commento te lo cancella, oppure dovresti fare in modo che nel tuo POST['delcomm'] ci sia un solo id.
    Per gli Spartani e Sparta usa spartan Il mio github

  6. #6
    Ho risolto in una maniera forse un po strana, ma funzionante =)

    in pratica assegno una name diverso per ogni bottone...

    Codice PHP:
    $delcomm="delcomm".$i; ?>
        <div style=float:right;>
            <form method=post action="?page=guide&act=wiev&id=<? echo $id?>"><input type="submit" name="<? echo $delcomm?>" value="Elimina"></form></div> 
        <?
        
        
    }
        echo 
    "[i]";
        echo 
    nl2br(urlreplace(stripslashes(pulisci($comm))));
        echo 
    "[/i]";
        
    ?>
        </div>
        
        <?
        
    if(($_POST[$delcomm])=="Elimina"){
        
    $del="DELETE FROM commenti WHERE id=$noid";
        
    mysql_query($del);
        
    header("refresh:0;");
    }

  7. #7
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Qualcosa di simile potrebbe aiutarti
    codice:
    <form name='form1' method='post' action='/index.php'>
    	<input type='checkbox' name='delcomm0' value='1' />
    	<input type='checkbox' name='delcomm1' value='2' />
    	<input type='checkbox' name='delcomm2' value='3' />
    	<input type='text' name='testo' value='testo' />
    	<input type='submit' value='vai' />
    </form>
    Avrai tanti delcomm[*] quanti checks sono settati, ne prendi il valore e lo cancelli
    Per gli Spartani e Sparta usa spartan Il mio github

  8. #8
    No, lo script fa in modo che appare il bottone Elimina sul commento solo se sei la persona che l'ha scritto o sei l'admin.... Comunque alla pressione del tasto Elimina ti cancella solo il commento che vuoi eliminare... A me li cancellava tutti. ma adesso ho risolto... Grazie lo stesso..

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.