• User Attivo

    Inserire link che cancella un dato

    Ciao a tutti.

    Ho questo script che mi prende la data del giorno e tutti i dati secondo quella data e me li stampa
    [php]$giorno = getdate();
    $giornog = $giorno['year'] . "-" . $giorno['mon'] . "-" . $giorno['mday'];

    //query di insert
    $insertSQL = sprintf("INSERT INTO company_news (data, luogo, notizia) VALUES (%s, %s, %s)",
    GetSQLValueString($HTTP_POST_VARS['data'], "text"),
    GetSQLValueString($HTTP_POST_VARS['luogo'], "text"),
    GetSQLValueString($HTTP_POST_VARS['notizia'], "text"));

    $Result1 = $company->Execute($insertSQL) or die($company->ErrorMsg());

    //begin recordset
    $query_video_hits = "SELECT * FROM company_news WHERE data='" . $giornog ."' ";
    $company_news = $company->SelectLimit($query_video_hits) or die($company->ErrorMsg());
    $totalRows_video_hits = $company_news->RecordCount();
    //end recordset

    $query_delete = "DELETE * FROM company_news WHERE id_news = $id_news";
    $company_news = $company->SelectLimit($query_video_hits) or die($company->ErrorMsg());

    while (!$company_news->EOF) {

    echo ("id_news". $company_news->Fields('id_news') ."<br>data". $company_news->Fields('data') ."<br>luogo". $company_news->Fields('luogo') ."<br>notizia". $company_news->Fields('notizia')."<br><a href="$query_delete">cancella</a><br><br>"
    );

    $company_news->MoveNext();
    }[/php]Io vorrei aggiungere un pulsante cancella che mi cancella la riga selezionata dal database.... come posso fare ?


  • Consiglio Direttivo

    Ciao pettedemon. 🙂

    Puoi mettere un form a fine di ogni riga dove come hidden data ti riporti l'id del record. Con la pagina che punterai dal form, anche la stessa pagina, procedi con un semplicissimo:

    DELETE FROM tabella WHERE id='$id'
    

    😉


  • User Attivo

    Ciao!
    Allora io sto facendo cosi:

    [php]echo ("<br>data : ". $company_news->Fields('data') ."<br>luogo : ". $company_news->Fields('luogo') ."<br>notizia : ". $company_news->Fields('notizia')."<br><br>

    <form id=\"form1\" name=\"form1\" method=\"post\" action=\"delete.php\">
    

    <input type="hidden" name="djname" id="djname" value="". $company_news->Fields('id_news') ."">
    <label>
    <input type="submit" name="cancella" id="cancella" value="cancella" />
    </label>
    </form>

    ");[/php]
    Poi ho fatto la pagina delete.php

    [php]$query_video_hits = "DELETE * FROM company_news WHERE id_news='" .$id_news ."' ";
    $company_news = $company->SelectLimit($query_video_hits) or die($company->ErrorMsg());
    $totalRows_video_hits = $company_news->RecordCount();

    $company_news->Close();
    $company->Close();[/php]E mi da errore

    Notice: Undefined variable: id_news in /htdocs/xxxxxxxxxxx/insert/delete.php on line 11
    ERROR: syntax error at or near "*" LINE 1: DELETE * FROM company_news WHERE id_news='' ^
    

    Suggerimenti ?


  • User

    Hai chiamato la varibail del form con djname non con id_news quindi il codice dovrebbe essere così:

    [php]$id_news=(int)$_POST['djname'];
    $query_video_hits = "DELETE * FROM company_news WHERE id_news='" .$id_news."' ";
    $company_news = $company->SelectLimit($query_video_hits) or die($company->ErrorMsg());
    $totalRows_video_hits = $company_news->RecordCount(); [/php]


  • User Attivo

    Secondo me, in questo caso, è meglio usare un link passando l'id della news, che riprende la stessa pagina.
    Non so se è chiaro


  • User

    Sicuramente è meglio come proponi te, ma intanto è importante che capisca come far funzionare il tutto poi magari lo migliora con calma.


  • User Attivo

    La query per la cancellazione dei dati è completamente sbagliata.
    Fai così nel ciclo come noterai ho inserito l'id della news nel link dove tu avevi inserito la variabile per cancellare la news.
    Questo link restituisce a se stesso, tramite GET, l'id della news.

    while (!$company_news->EOF) {

    echo ("id_news". $company_news->Fields('id_news') ."<br>data". $company_news->Fields('data') ."<br>luogo". $company_news->Fields('luogo') ."<br>notizia". $company_news->Fields('notizia')."<br><a href='" . $_SERVER['PHP_SELF'] . "?delete=" . $company_news->Fields('id_news') . "'>cancella</a><br><br>"
    );

    Adesso manca qualcosa la quale dovrebbe cancellare la news scelta. Allora in alto alla pagina metteremo il controllo.
    Es.:
    <?php
    if (is_numeric($_GET['delete']))
    {
    $query_delete = "DELETE * FROM company_news WHERE id_news='" . $_GET['delete'] . "'";
    $company_news = $company->SelectLimit($query_video_hits) or die($company->ErrorMsg());

    }

    ?>

    Dovrebbe funzionare
    Fammi sapere a presto


  • User

    Ma ti riferisici a quella che ho scritto io? Non mi sembra sbagliata, poi magari non mi accorgo di qualcosa.