Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Roma
    Messaggi
    81

    DELETE in PHP con easyphp

    Salve non riesco a far uzionare questo script per il DELETE, ma mi da errore di INDEX, non so perche'
    Codice PHP:
    <html>      <head>      <title>Delete a Record from MySQL Database</title>   </head>      <body><?php         if(isset($_POST['delete'])) {            $dbhost 'localhost';            $dbuser 'root';            $dbpass '';            $dbname ='my_db';            $conn mysql_connect('localhost''root''''my_db');                        if(! $conn ) {               die('Could not connect: ' mysql_error());            }                            $id $_POST['id'];                        $sql "DELETE FROM MyGuests WHERE id =' $id'" ;            mysql_select_db('my_db');            $retval mysql_query$sql$conn );                        if(! $retval ) {               die('Could not delete data: ' mysql_error());            }                        echo "Deleted data successfully\n";                        mysql_close($conn);         }else {            ?>            <form method = "post" action = "<?php $_PHP_SELF ?>">                  <table width = "400" border = "0" cellspacing = "1"                      cellpadding = "2">                                          <tr>                        <td width = "100">ID</td>                        <td><input name = "emp_id" type = "text"                            id = "emp_id"></td>                     </tr>                                          <tr>                        <td width = "100"> </td>                        <td> </td>                     </tr>                                          <tr>                        <td width = "100"> </td>                        <td>                           <input name = "delete" type = "submit"                               id = "delete" value = "Delete">                        </td>                     </tr>                                       </table>               </form>            <?php         }      ?>         </body></html>

  2. #2
    è sempre bene controllare il codice dopo il post e nel caso indentare il codice perchè sennò non ti considera nessuno usa le funzioni mysqli o ancora meglio PDO perchè le mysql sono dedprecate e non più funzionanti dalla versione 7 di PHP. Errore index e poi? Dovrebbe darti il nome della variabile non settata. Fai un po' di debug, guarda se le variabili arrivano tutte.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Roma
    Messaggi
    81
    SCUSATE HO AVUTO PROBLEMI CON LA FORMATTAZIONE DEL TESTO
    Codice PHP:

    <form action="iidelete.php" method="POST">ID TO DELETE:&nbsp;<input type="text" name="id" required><br><br><input type="submit" name="delete" value="clear data"></form><?if(isset($_POST['submit'])){$host='localhost';$user='root';$pass='';$dbname='my_db';$id=$_POST['id'];$conn=mysqli_connect('localhost','root','','my_db');$query="DELETE FROM 'MyGuests' WHERE 'id' = $id";$result=mysqli_query($conn$query);//if($result=='$id')//($_POST['id'])//($result=="id")//{//echo 'Data deleted';//}else{//echo 'Data not deleted';}
    //}mysqli_close($conn);?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sembra che tu ancora li abbia i problemi di formattazione.
    Usa l'anteprima per vedere come verrà postato il messaggio.

    Inoltre, come ti ha detto camionistaxcaso, dovrebbe anche dirti il nome dell'index che da problemi, qual è?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    codice:
    <html>    <head>
            <title>Delete a Record from MySQL Database</title>
        </head>
        <body>
            <?php   
            if(isset($_POST['delete'])) {            
                $dbhost = 'localhost';
                $dbuser = 'root';
                $dbpass = '';
                $dbname ='my_db';
                $conn = mysql_connect('localhost', 'root', '', 'my_db');
                if(! $conn ) { die('Could not connect: ' . mysql_error()); }                            
                $id = $_POST['id'];                        
                $sql = "DELETE FROM MyGuests WHERE id ='$id'" ;            
                mysql_select_db('my_db');            
                $retval = mysql_query( $sql, $conn );                        
                if(! $retval ) { die('Could not delete data: ' . mysql_error()); } 
                echo "Deleted data successfully\n"; 
                mysql_close($conn); }else {
            ?>
            <form method = "post" action="<?php $_PHP_SELF ?>">
                <table width = "400" border = "0" cellspacing = "1" cellpadding = "2">
                    <tr>
                        <td width = "100">ID</td>
                        <td>
                            <input name = "emp_id" type = "text" id = "emp_id">
                            </td>
                        </tr>
                        <tr>
                            <td width = "100"></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td width = "100"></td>
                            <td>
                                <input name = "delete" type = "submit" id = "delete" value = "Delete">
                                </td>
                            </tr>
                        </table>
                    </form>
                    <?php } ?>
                </body>
            </html>

    L'ho formattato io in automatico, non è perfetto ma è leggibile.

    L'errore secondo me sta in:
    codice:
    $sql = "DELETE FROM MyGuests WHERE id ='$id'" ;
    che dovrebbe essere:
    codice:
    $sql = "DELETE FROM MyGuests WHERE id ='.$id.'" ;

    Prova a vedere se così funziona.

    In ogni caso ti consiglio di iniziare ad usare PDO per l'accesso al database, usare i prepared statement e bindParam per la sicurezza e fltrare gli input con filter_input, questo codice è fatto malino, non so se sei alle prime armi ma è sempre meglio iniziare con il piede giusto

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Nel primo codice (che ti ha formattato M4V1), l'errore è che nel form chiami il campo emp_id.
    Codice PHP:
      <input name "emp_id" type "text" id "emp_id"
    Nel codice invece solo id:
    Codice PHP:
    $id $_POST['id']; // deve essere $_POST['emp_id'] 
    Stai attento, nel secondo script che hai postato (quello con mysqli), a quali apici usi:

    Codice PHP:
      $query="DELETE FROM 'MyGuests' WHERE 'id' = $id
    Per i nomi di tabelle/campi devi usare quelli "invertiti" (o backtick). Con quelli normali verrebbero interpretati come stringhe

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Roma
    Messaggi
    81
    cosi funziona, ma non riesco a farlo interagire con html
    ovviamente l'host e localhost, root e my_db;
    Codice PHP:
    <?php
    $servername 
    "localhost";
    $username "username";
    $password "password";
    $dbname "myDB";

    // Create connection
    $conn = new mysqli($servername$username$password$dbname);
    // Check connection
    if ($conn->connect_error) {
        die(
    "Connection failed: " $conn->connect_error);


    // sql to delete a record
    $sql "DELETE FROM MyGuests WHERE id=3";

    if (
    $conn->query($sql) === TRUE) {
        echo 
    "Record deleted successfully";
    } else {
        echo 
    "Error deleting record: " $conn->error;
    }

    $conn->close();
    ?>
    Ultima modifica di php76; 02-09-2016 a 12:40

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Roma
    Messaggi
    81
    devo riuscire ad eliminare il record cosi non ho altre soluzioni
    Codice PHP:
    <form>id delete:<input type="delete" ><input type="submit"></form><?php//if(isset($POST('submit')){$hostname = 'localhost';$username = 'root';$password = '';$dbname= 'my_db';$id =$_REQUEST['id'];
    $conn mysqli_connect('localhost','root','','my_db');if (!$con){die('Could not connect: ' mysqli_error());}
    mysqli_select_db("database"$con);
    // sending querymysqli_query("DELETE FROM MyGuests WHERE id = '$id'");or die(mysqli_error());      ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    codice:
    <html>        
    <head>
            <title>Delete a Record from MySQL Database</title>
        </head>
    <body>
    <?php   
    if(isset($_POST['delete'])) {      
        try {
            $db = new PDO(
            'mysql:host=127.0.0.1;dbname=my_db;port=3306;charset=utf8',
            'root',
            ''
            );
        } catch (PDOException $e) {
            echo "Connessione al database fallita";
            exit;
        }
        
        // Se gli id sono lunghi FILTER_SANITIZE_NUMBER_INT potrebbe non andare bene
        $delete_id = filter_input(INPUT_POST, 'delete', FILTER_SANITIZE_NUMBER_INT); 
        
        try {
            $query = $db->prepare("DELETE FROM MyGuests WHERE id = :id");    
            $query->bindParam(':id', $delete_id, PDO::PARAM_INT);
            $result = $query->execute();
            if(!$result){
                echo 'Errore durante l\'eliminazione';
            } else {
                echo 'Elemento correttamente eliminato';
            }
        } catch (PDOException $e){
            echo $e->getMessage();
            exit;
        }
    } else {
    ?>
    <form method="post" action="<?php $_PHP_SELF ?>" >
       <input type="text" name="delete">
       <input type="submit" value="Submit">
    </form>
    <?php } ?>
    </body>
    </html>
    Così dovrebbe funzionare anche se non l'ho provato.
    Questo è fatto usando pdo e qualche accorgimento in più che può esserti utile.

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.