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

    Creare un alert JAVASCRIPT per cancellare un record da database

    Ciao a tutti, vi pongo una domanda stupida. Premetto che sto studiando il PHP e di Javascript non so una mazza.

    Mi serve solo una funzioncina JS che una volta che clicco su un pulsante generato da una <input> mi appaia un messaggio che mi dica. Sei sicuro? Con i pulsanti OK e ANNULLA.

    Fin qui penso di riuscire anche da solo, ma la cosa interessante è questa. Se dopo clicco su OK mi deve cancellare un record da un database mysql e rimandarmi alla pagina dove c'e il tag <input>, se invece clicco su ANNULLA deve rimandarmi semplicemente alla pagina dove c'era il tag <input>.

    Credo che sia banale per un medio programmatore javascript.

    Potete aiutarmi???

    Thanks
    **Non voltarti due volte, la strada è avanti**

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    se fosse un link
    Cancella?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Mi spiego meglio questa è la form che mi interessa.



    Immaginiamo che questo codice sia su form.php:


    codice:
    <form action="projectmanager.php" method="post"> 
    
    <fieldset><legend>Modulo cancellazione progetto</legend>  
    
    //CONTENUTO DELLA FORM   
    
    </fieldset>   
    
    
    <input onclick="sicuro()" type="submit" name="action3" value="Cancella_Progetto"></br>   
    
    </form>


    Quando clicco su Cancella_Progetto voglio che mi appaia l'alert sopracitato, infatti ho inserito onclick="sicuro()" dove sicuro() è la funzione che voglio fare. Una volta fatto l'alert js se clicco su OK mi deve andare su projectmanager.php e cancellarmi il record dal DB, se clicco su ANNULLA non deve fare niente e rimandarmi semplicemente su form.php.

    potete aiutarmi meglio ora? come ho detto di js so veramente poco per non dire niente..
    scusate se ci metto un po a capire!!!

    GRAZIE A TUTTI!!!
    **Non voltarti due volte, la strada è avanti**

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Originariamente inviato da Androsx5
    codice:
    <input onclick="sicuro()" type="submit" name="action3" value="Cancella_Progetto">
    Attenzione che così facendo andiamo comunque incontro alla sottomissione del FORM; se poi l' utente avesse JavaScript disabilitato sul Browser (coi Netscape/FireFox è possibile come opzione) non gli comparirebbe nemmeno l' alert (il confirm) mentre il type="submit" rimane funzionante ignorando l' onclick="sicuro()"

    &#200; possibile affidare alla JS function sicuro() anche la sottomissione di un form, con la funzione nativa submit() ed è la strada che prenderei, facendo così il form.php (ma che può anche essere form.html ):
    codice:
    <html>
    <head>
    <script type="text/javascript"> 
    
    function sicuro(){ 
    
        var risposta = confirm('Sei sicuro di voler cancellare il progetto?');
    
        if(risposta == true){
            document.forms["delproj"].submit();
        } 
    } 
    
    </script> 
             
    </head> 
    <body> 
    <form name="delproj" action="projectmanager.php" method="post"> 
    
    <fieldset><legend>Modulo cancellazione progetto</legend>  
    
    //CONTENUTO DELLA FORM   
    
    </fieldset>
    
    
    <input onclick="sicuro()" type="button" value="Cancella_Progetto">   
    
    </form>
    
    </body> 
    </html>
    Il pulsante "Cancella_Progetto" diventa un comune type="button"
    Non è ancora completo, ma intanto vedi come funziona il confirm() : risposta == true significa che è stato premuto OK; se è stato premuto Annulla non si da' esecuzione alla istruzione compresa tra le graffe { } in quanto restituisce risposta == false e semplicemente, non accade nulla.

    Originariamente inviato da Androsx5
    se clicco su ANNULLA non deve fare niente e rimandarmi semplicemente su form.php
    Come detto, non avviene un reindirizzamento ma rimani su form.php coi campi come erano stati compilati.
    Volendo, si può fare anche diversamente.

    Ho assegnato un NAME al FORM perché JS lo possa individuare con document.forms["delproj"] altrimenti potremmo usare document.forms[0] che "conta" i forms presenti nel documento e punta al primo (si conta da zero 0 1 2 3 ... come con gli Array).

    Se abbiamo premuto OK, il reindirizzamento a projectmanager.php avviene, però dobbiamo ancora farle arrivare una variabile che testimoni la scelta; la cancellazione dei dati dal DB dovrà infatti avvenire su projectmanager.php o su una pagine intermedia dando esecuzione ad una query via PHP mysql_query()

  5. #5
    OK Enzaccio proverò la tua soluzione Lunedì mattina e ti farò sapere.

    Grazie per ora.
    **Non voltarti due volte, la strada è avanti**

  6. #6
    Enzaccio la tua soluzione è ottimale, mi potresti dire come posso far capire a projectmanager.php la scelta fatta dalla funzione sicuro() di js???

    Quando clicco su OK come avevi già detto mi va su projectmanager.php però non accade nulla, ovvero non cancella nulla. Non lo fa perchè la guardia dell'if non è soddisfatta!!!


    Prima di usare javascript avevo dentro projectmanager.php una cosa del tipo...

    Codice PHP:
    <?
    if (isset($_POST['action3']) and $_POST['action3'] == 'Cancella_Progetto'){

    // codice cancellazione record database


    }
    ?>
    Cosa mi manca qui dentro??
    **Non voltarti due volte, la strada è avanti**

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Ok, vedo che per la parte PHP che da' esecuzione alla query di update, già ci sei.

    Aggiungerei nel form un type="hidden" che come input, anch' esso può portare un value; gli do' il name che di proposito avevo già tolto al button :

    <input name="action3" type="hidden" value="x">

    e nella funzione aggiungi questa istruzione, ovviamente prima del .submit()

    document.forms["delproj"].elements["action3"].value = "Cancella_Progetto";
    document.forms["delproj"].submit();



    Altra soluzione, rimani a considerare il value del button cui ridai name="action3" (ovviamente che non ce ne siano due), ma con value="Cancella Progetto" senza l' underscore è una elegante soluzione, da provare anche questa: l' underscore compare una frazione di tempo prima del submit() e soddisfa la condizione che hai nell' if php.


    Do' per assunto che ci sia una sorta di password-protection, altrimenti chiunque può cancellarti i progetti; non è necessario aprire sessioni, lo sarebbe semmai se adottassimo il trasferimento in method="get" di una variabile di conferma come prospettato nel post di fcaldera che pure ho preso in considerazione.


  8. #8
    Ricapitolando un attimo:

    -Il tag di input originale è questo, ed è in form.php:

    <input onclick="sicuro()" type="button" name="action3" value="Cancella_Progetto">

    -la funzione js sicuro() che sta dentro form.php alla fine è:

    codice:
    function sicuro() {  	
    var risposta = confirm('Sei sicuro di voler cancellare il progetto?');      
    
    if(risposta == true) {     	
    
    document.forms["delproj"].elements["action3"].value = "Cancella_Progetto";         
    
    document.forms["delproj"].submit();     
    
    }    
    
    }
    -la guardia dell'if php del projectmanager.php è:

    Codice PHP:
    <? if (isset($_POST['action3']) and $_POST['action3'] == 'Cancella_Progetto') { 

     
    // codice cancellazione record database   



    ?>

    resterei per provare la prima soluzione che mi hai detto.

    Come vedi ho aggiunto la riga che dicevi alla funzione js sicuro() però non ho ben capito a cosa mi serve il tag input con l'attributo hidden. Tanto dalla form passo a projectmanager.php con il metodo post quindi rimane tutto invisibile all'utente a differenza della get.

    Quando clicco su Cancella_Progetto con questi 3 pezzi di codice sopracitati mi va su projectmanager.php ma non succede niente (non si cancella nulla nel db).

    Quella riga che mi hai fatto aggiungere serve per assegnare all'attributo value Cancella_Progetto?? Puoi dirmi dove sbaglio?? sicuramente sarà una cavolata, ma una cavolata che fa la differenza!!

    I progetti stanno sul database e le password sono criptate con MD5. Questo form non è visibile a tutti ma solo ad un amministratore che ha questi poteri (ho gestito dei permessi da php per fare ciò).

    THANKS
    **Non voltarti due volte, la strada è avanti**

  9. #9
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Codice PHP:
    <?php

    echo $_POST['action3'] . "
    "
    ;

    if (isset(
    $_POST['action3']) and $_POST['action3'] == 'Cancella_Progetto') {

    echo 
    $_POST['action3'] . "
    "
    ;

    // codice cancellazione record database   

    };

    ?>
    Provando a stampare la variabile con echo $_POST['action3']; che cosa ti restituisce? Si stamperà una seconda volta se l' if è soddisfatto.

    Ho anche aggiunto il semicolon sulla parentesi di chiusura.

  10. #10
    Ho capito dov'è il problema!!!

    Questo è il tag di input che mi avevi suggerito te dentro form.php chiamiamolo 1:

    1 = <input onclick="sicuro()" type="button" name="action3" value="Cancella_Progetto">

    Questo invece è quello che avevo prima io sempre dentro form.php chiamiamolo 2:

    2 = <input onclick="sicuro()" type="submit" name="action3" value="Cancella_Progetto">

    Questa è la funzione sicuro() presente sempre in form.php:

    codice:
    function sicuro() {  	
    
    var risposta = confirm('Sei sicuro di voler cancellare il progetto?');      
    
    if(risposta == true)  {     	
    document.forms["delproj"].elements["action3"].value = "Cancella_Progetto";         
    
    document.forms["delproj"].submit();     
    
    }
    Con questi frammenti di codice presenti:

    se utilizzo 1 ovvero cambio il type in button quando mi appare il confirm js se clicco ANNULLA non succede niente proprio come deve fare, se clicco OK mi va a projectmanager.php ma non entra dentro l'if perchè non soddisfa la guardia.

    se utilizzo 2 cambio ovvero il type in submit quando mi appare il confirm js se clicco OK va su projectmanager.php entra dentro l'if (quindi la guardia è soddisfatta) e mi cancella effettivamente il record dal database proprio come deve fare, se clicco su ANNULLA a differenza del caso 1 mi ritorna sempre su projectmanager.php e mi cancella il record del progetto ugualmente, quindi la guardia dell'if è soddisfatta anche in questo caso (COSA CHE NON DEVE ASSOLUTAMENTE FARE).

    E' come se quel type del tag input facesse la differenza in qualche maniera..me lo sai dire perchè???

    Cmq vada a finire grazie per il tempo che mi stai dedicando Enzaccio, HTML.it è un sito eccezionale si imparano un sacco di cose ed ha un forum pieno di persone preparate e disponibili!!!! THAAAANKSSS!!!!
    **Non voltarti due volte, la strada è avanti**

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.