Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Query di Delete recuperando id tremite $_GET

    Un saluto a tutti,
    stavo provando ad implementare una query di delete per eliminare dei dati da una tabella.

    Il pulsante l'ho implementato in questa echo della pagina "ricerca_preventivo", la stessa pagina che mi permette di modificare e stampare correttamente i preventivi...

    codice HTML:
    <td><? echo "<a onclick=\"return confirm('Confermi l\'eliminazione del preventivo ?')\" href='index.php?page=elimina_preventivo&id=$id' target='_blank'><img src='images/trash.png' alt='Elimina'></a>"; ?></td>
    questo è il codice php che non riesco a far funzionare, in sostanza vorrei recuperare l'id tramite $_GET e cancellarlo, mostrando preventivamente un messaggio

    Codice PHP:
    <?php
    if (isset($_GET['id'])) {
    $id = (int)$_GET['id'];
    /* Elimino i dati del preventivo inserito */
    $sq1 "DELETE preventivi WHERE id = '$id'";
    $rs1 $mysqli->query($sq1);
    while (
    $row $rs1->fetch_array(MYSQLI_ASSOC)) {
    $id mysqli_real_escape_string($mysqli$row['id']);
    }
        if (!
    $rs1) {
            echo 
    "<p style='margin-top: 40px;text-align:center;'>Ho trovato un errore nell'esecuzione della <b>QUERY</b></p>";
            die(
    "Errore nella query $sq1: " mysqli_error());
        }else{
            
    $messaggio "<div class='success'>Preventivo eliminato correttamente. Attendi..</div>";
            echo 
    "<meta http-equiv='refresh' content='2;url=index.php?page=index'>";
     
      }
    ?>
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Al momento che cos'è che non funziona?
    Hai fatto qualche verifica? Hai controllato se $_GET['id'] contiene effettivamente l'id?
    Spiega un po' la situazione attuale.

    p.s. non so come è fatta la tua applicazione, ma sarebbe il caso di valutare un controllo sul fatto che chi preme quel tasto abbia realmente il permesso di cancellare il tal record, perché non ci vuole niente a cambiare il numero dell'id e cancellarne altri.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Al momento che cos'è che non funziona?
    Hai fatto qualche verifica? Hai controllato se $_GET['id'] contiene effettivamente l'id?
    Spiega un po' la situazione attuale.

    p.s. non so come è fatta la tua applicazione, ma sarebbe il caso di valutare un controllo sul fatto che chi preme quel tasto abbia realmente il permesso di cancellare il tal record, perché non ci vuole niente a cambiare il numero dell'id e cancellarne altri.

    Ciao Alhazred,
    nel ringraziarti per la risposta ti dico e ne lascio traccia per qualche amico/collega che ne dovesse aver necessità, che per il momento ho risolto in questo modo

    codice:
    <?php
    
    if (isset($_GET['id'])) {
    $id = (int)$_GET['id'];
    
    /* Elimino i dati del preventivo inserito */
    $sq1 = "DELETE FROM preventivi WHERE id = '$id'";
    $rs1 = $mysqli->query($sq1);
    
        if($rs1)
        {
            $messaggio = "<div class='danger'>Preventivo cancellato correttamente! Attendi..</div>";
            echo "<meta http-equiv='refresh' content='5;url=index.php?page=home'>";
        }else{
            echo $mysqli->error;
        }
    
    }
    ?>
    
    <? echo $messaggio; ?>
    Mi piacerebbe poter abilitare un controllo più approfondito, amo questo mondo alla follia e sto facendo notte dopo notte per studiare e cercare di carpirne i concetti fondamentali per dar seguito a progetti interessanti.
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Ti aggiungo una cosa importante, quando ricevi un input esterno è sempre meglio filtrarlo, specialmente se questo input va a finire dentro una query SQL, in questo caso sarebbe opportuno fare così per recuperare l'ID:

    Codice PHP:
    $id filter_input(INPUT_GET'id'FILTER_VALIDATE_INT); 

    che andrebbe al posto di:

    Codice PHP:
    $id = (int)$_GET['id']; 

    In questo modo PHP filtra la variabile id e verifica che sia un INT.
    Ti consiglio di leggerti la pagina del manuale per capire cosa può esserti più utile nel tuo caso:
    http://php.net/manual/en/function.filter-input.php

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Ciao M4V1,
    ho seguito alla lettera il tuo consiglio, per me molto preziosi, ed ho prima letto la funzione sul manuale e poi successivamente l'ho applicata ai vari campi input presenti nel gestionale che sto provando a sviluppare.
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

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.