Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Pulsante cancella immediato

    Salve a tutti, non riesco ad eseguire una semplice operazione come quella di eliminare una voce dal database senza la necessità di caricare, quindi creare una seconda pagina.
    Questa è la riga di codice che da modificare:
    codice:
    <td><a href='delete.php?id=".$id."'><img src=\"delete.ico\"></a></td>
    Per farmi capire meglio, vi linko la pagina di prova che rimuoverò una volta risolto il problema:
    Vi allego pure il codice completo, che attualmente si avvale di una seconda pagina:
    codice:
    <html>
    <title>Ingredienti</title>
    <form name="Ingredienti" action="ingredienti.php" method="post">
    <link rel="stylesheet" href="*****.css" type="text/css">
    <body>
    <h1>Ingredienti</h1>
    <center>
    <table border="2">
    <?php
    function CheckName($checkname)
        {
        $return=true;
        $charsok = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
        for($x=0; $x<strlen($checkname); $x++)
            {
            $string=substr($checkname, $x, 1); 
            $pos_charsok=strrpos($charsok, $string);    
            if ($pos_charsok===false)
                {
                $return=false; 
                return(false);
                }
            }
        return(true);
        }        
    $nomehost="*****";  
    $database="*****";
    $nomeuser="*****";
    $password="*****";
    mysql_connect($nomehost,$nomeuser,$password);
    $replydb=mysql_select_db($database);
    if ($replydb==false)
        {
        print("<h2>Errore nella selezione del database.</h2>");
        die("<h3><a href='mailto:*****@*****.***?subject=Errore Selezione Database&body=Ho inserito i dati ma il sito mi ha restituito errore. Grazie!'><font color='springgreen'>Contattami</font></a></h3>");
        }
    $add=$_POST['add'];
    $add=strtolower($add);
    $add=ucwords($add);
    $addk=CheckName($add);
    if(($addk==true) and ($add!==""))
        {
        //Inserimento dati nel database
        $sql="INSERT INTO Ingredienti (Ingredienti) VALUES ('$add')"; 
        if (mysql_query($sql)==true)
            {
            print("<p>Ingrediente inserito correttamente</p>");
            }
        else
            {
            print("<h2>Errore durante l'inserimento nel database.</h2></br>");
            print("<h3><a href='mailto:*****@*****.***?subject=Errore Inserimento Database&body=Ho inserito i dati ma il sito mi ha restituito errore. Grazie!'><font color='spinggreen'>Contattami</font></a></h3>");
            }
        }
    else
        {
        print("<p>Inserimento ingrediente errato.</br>Controllare i caratteri.</p>");
        }
    $sql=mysql_query("SELECT * FROM Ingredienti ORDER BY Ingredienti ASC;");
    while($cicle=mysql_fetch_array($sql))
        {
        $id=$cicle['ID'];
        print("<tr>
            <td><p>".$cicle['Ingredienti']."</p></td>
            <td><a href='delete.php?id=".$id."'><img src=\"delete.ico\"></a></td>
            </tr>");
        }
    ?>
    </table>
    <h6>Inserire un nuovo ingrediente: <input type='text' name='add'><input type='submit' value='Aggiungi'></h6>
    </center>
    </body>
    </form>
    </html>
    Quando si aggiunge un ingrediente, ma va bene un qualsiasi nome, il risultato di avvenuto successo o errore appare subito.
    Quello che sto cercando di fare è una singola pagina immediata.
    Spero di essermi spiegato.
    Grazie in anticipo a tutti.

  2. #2
    Scusami ma è molto poco chiaro e non ho ben capito che vuoi ottenere.
    Web Agency Freccia Web - Diamo il massimo

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Scusa, ma dove hai preso questo codice? L'hai scritto tu?
    E' a dir poco orrendo.

    A caso ho visto questo
    Codice PHP:
    $return=true;
    ...
    if (
    $pos_charsok===false)
    {
        
    $return=false
        return(
    false);
    }
    ...
    return(
    true); 
    A che servono
    $return=true;
    $return=false;
    se poi invece ritorni direttamente il valore true o false e non la variabile $return?

    Senza contare che una funzione di servizio messa in mezzo al codice html è un obbrobrio.

    Comunque per non ricaricare la pagina o non caricarne una seconda, devi fare una chiamata asincrona (AJAX, quindi Javascript) verso uno script PHP che si occupi della cancellazione.
    Ultima modifica di Alhazred; 03-01-2016 a 13:42

  4. #4
    Quote Originariamente inviata da FrecciaWeb Visualizza il messaggio
    Scusami ma è molto poco chiaro e non ho ben capito che vuoi ottenere.
    Ok, scusa, provo a spiegarmi meglio:
    Io voglio inserire questa dicitura
    codice:
    $sql=mysql_query("SELECT * FROM Ingredienti WHERE ID=$delete;");
    nel collegamento, in modo che col click venga cancellato direttamente senza passare per la seconda pagina.
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Scusa, ma dove hai preso questo codice? L'hai scritto tu?
    E' a dir poco orrendo.

    A caso ho visto questo
    Codice PHP:
    $return=true;
    ...
    if (
    $pos_charsok===false)
    {
        
    $return=false
        return(
    false);
    }
    ...
    return(
    true); 
    A che servono
    $return=true;
    $return=false;
    se poi invece ritorni direttamente il valore true o false e non la variabile $return?

    Senza contare che una funzione di servizio messa in mezzo al codice html è un obbrobrio.

    Comunque per non ricaricare la pagina o non caricarne una seconda, devi fare una chiamata asincrona (AJAX, quindi Javascript) verso uno script PHP che si occupi della cancellazione.
    Ammetto, l'ho copiato da qualche parte in rete, era una funzione di verifica in modo che non ci fossero caratteri al di fuori delle lettere e dello spazio, l'ho fatta in velocità, funzionava, effettivamente hai ragione, vedrò di sistemarla.
    Sul discorso funzione, dov'è che dovrei metterla?

    Sui Javascript non so niente, non si riesce in un modo simile a quando inseriesco invece i valori?
    Mi faresti un esempio per cortesia?

    Ps. Quello che so è tutto autodidatta.

  5. #5
    Scusate, è che non ho più ricevuto risposte.
    Devo linkare, ovvero un'immagine in questo caso, cui va abbinato un numero, che alla pressione mi cancella il relativo ID in un database mysql.
    Quello che mi sfugge, è proprio il link <a href......></a>.
    Non riesco a mettere in quel link, senza usare seconda pagina, ma riutilizzando la stessa, questo codice:
    codice:
    $sql=mysql_query("DELETE FROM Ingredienti WHERE ID='$id");
    Grazie.

  6. #6
    Dovrei esserci riuscito, ho aggiunto un GET alla pagina in questo modo (prime 2 righe):
    codice:
    $delete=$_GET['id'];
    $sql=mysql_query("DELETE FROM Ingredienti WHERE ID='$delete'");
    $sql=mysql_query("SELECT * FROM Ingredienti ORDER BY Ingredienti ASC;");
    while($cicle=mysql_fetch_array($sql))
        {
        $id=$cicle['ID'];
        print("<tr>
            <td><p>".$cicle['Ingredienti']."</p></td>
            <td><a href='ingredienti.php?id=".$id."'><img src=\"delete.ico\"></a></td>
            </tr>");
        }
    Il problema sta forse nella verifica che tutto sia filato liscio, ora ci ragiono un po'.

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Spero che non sia per un sito professionale...
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Spero che non sia per un sito professionale...
    No, attualmente non lo è, ma in caso fosse, sbaglio in cosa?

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Nessun controllo dei dati inviati tramite $_GET. Come hai fatto potrei cancellarti tutti i record.

    Penso basterebbe mettere in id 0' or 1=1 -- per cancellare tutti i dati. Ma non sono uno specialista.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Nessun controllo dei dati inviati tramite $_GET. Come hai fatto potrei cancellarti tutti i record.

    Penso basterebbe mettere in id 0' or 1=1 -- per cancellare tutti i dati. Ma non sono uno specialista.
    Innanzitutto grazie, questa parte m'interessa moltissimo!

    Vediamo se ho capito bene:
    Chiunque può accedere alla pagina, e fin qui ok, ma gli input, sono solo 2, o da Aggiungi, ovvero quando si inserisce qualcosa, o dal pulsante delete.
    Come potrebbe un esterno accedere direttamente al database?
    Intendi direttamente dalla barra degli indirizzi?

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.