conferma prima di cancellare con javascript e php

Stato
Chiusa ad ulteriori risposte.

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao ho questo codice vorrei fare che se uno clicca sul cancella deve fare prima un'alert che dice se sei sicuro.

Il codice è questo:
PHP:
<?php
include($_SERVER['DOCUMENT_ROOT']."/inc.php");
$sql = "DELETE FROM users WHERE id=:userID";
$stmt = $db->prepare($sql);
$stmt->bindParam(':userID', $_GET["id"], PDO::PARAM_INT);
$stmt->execute();
e viene da qui:
PHP:
echo '<p><a href="del.php?id='.$row["id"].'">del</a></p>';

come posso fare?
Grazie mille.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
anziché chiamare "del.php" puoi chiamare una funzione javascript, usando questi metodi (secondo necessità) per chiedere la conferma alla cancellazione,

- alert() displays a message to the user and waits for the user to dismiss the dialog.

- confirm() displays a message, waits for the user to click an OK or Cancel button and returns a boolean value.

- prompt() displays a message, waits for the user to enter a string, and returns that string.

- showModalDialog() displays a modal dialog box containing HTMLformatted content and allows arguments to be passed to, and a value returned from

alla conferma positiva, invii una richiesta ajax a "del.php" che cancella ….

quando lo hai sviluppato, ti ringrazio se lo posti
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Documentazione qui :https://sweetalert2.github.io/
Non è assolutamente necessario inviare dati in asincrono se devi solo ed esclusivamente confermare la scelta utente, poi anche graficamente più accattivante...
Codice:
function check_del(e){
    e.preventDefault();
Swal.fire({
  title: 'Are you sure?',
  text: "You won't be able to revert this!",
  type: 'warning',
  showCancelButton: true,
  confirmButtonColor: '#3085d6',
  cancelButtonColor: '#d33',
  confirmButtonText: 'Yes, delete it!'
}).then((result) => {
  if (result.value) {
    Swal.fire(
      'Deleted!',
      'Your file has been deleted.',
      'success'
    )
   $(e.currentTarget).submit();
  }
})
}
Se non utilizzi form, puoi agganciarlo anche al click del btn...
 

vic53

Nuovo Utente
9 Feb 2019
35
0
6
Fonte Nuova
www.euro1.it
ciao ho questo codice vorrei fare che se uno clicca sul cancella deve fare prima un'alert che dice se sei sicuro.

Il codice è questo:
PHP:
<?php
include($_SERVER['DOCUMENT_ROOT']."/inc.php");
$sql = "DELETE FROM users WHERE id=:userID";
$stmt = $db->prepare($sql);
$stmt->bindParam(':userID', $_GET["id"], PDO::PARAM_INT);
$stmt->execute();
e viene da qui:
PHP:
echo '<p><a href="del.php?id='.$row["id"].'">del</a></p>';

come posso fare?
Grazie mille.

al posto dell'anchor <a... devi chiamare una funzione javascript in cui fai uso di una confirm tipo questa
l'ancora diventa
PHP:
<?php echo "<p><a onclick='cancellariga(".$row["id"]."')>del</a></p>" ?>
mentre la funzione
Codice:
function cancella(riga) {
  var ris = window.confirm("VUOI CANCELLARE  LA RIGA "+riga+"?... OK PER CONFERMARE!");
      if  (ris)
       {
.... qui puoi fare una chiamata ajax per cacellare la riga e poi aggiornare la tabella dove non presenti piu la riga cancellata
      }
}
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ok, ma non so utilizzare ajax .. devo documentarmi e scusa del ritardo ma ho avuto problemi con il notebook.

EDIT- un'altra cosa.. per far sparire l'url del browser come devo fare.. sempre con ajax?
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
ciao ho questo codice vorrei fare che se uno clicca sul cancella deve fare prima un'alert che dice se sei sicuro.
Il caso è questo..... Bene.... @vic53 Dove trovi l'esigenza di inviare i dati con AJAX?

var ris = window.confirm("VUOI CANCELLARE LA RIGA "+riga+"?... OK PER CONFERMARE!"); if (ris) { .... qui puoi fare una chiamata ajax per cacellare la riga e poi aggiornare la tabella dove non presenti piu la riga cancellata }
Semmai, visto che stiamo in tema JS, sarebbe utile scrivere con sintassi aggiornata almeno ECMA6 e supporto di framewok per evitare spaghetti-code....
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
leggendo attentamente il post iniziale, si evince che, dalla riga

echo '<p><a href="del.php?id='.$row["id"].'">del</a></p>';

si attiva lo script del.php (in una forma molto simile ad una chiamata ajax)

per mantenere il più possibile la stessa logica, nulla di meglio che usare una funzione javascript come indicato da @vic53

le poche righe di codice non arriveranno a rappresentare un piatto di spaghetti
ed al contempo non c'è la necessità di impiegare un software di terze parti per gestire una risposta "SI / NO"

ciascun programmatore decide come meglio risolvere il suo compito, con il codice che ritiene più attinente
e deve poterlo esprimere anche nel forum senza censure
 

vic53

Nuovo Utente
9 Feb 2019
35
0
6
Fonte Nuova
www.euro1.it
leggendo attentamente il post iniziale, si evince che, dalla riga

echo '<p><a href="del.php?id='.$row["id"].'">del</a></p>';

si attiva lo script del.php (in una forma molto simile ad una chiamata ajax)

per mantenere il più possibile la stessa logica, nulla di meglio che usare una funzione javascript come indicato da @vic53

le poche righe di codice non arriveranno a rappresentare un piatto di spaghetti
ed al contempo non c'è la necessità di impiegare un software di terze parti per gestire una risposta "SI / NO"

ciascun programmatore decide come meglio risolvere il suo compito, con il codice che ritiene più attinente
e deve poterlo esprimere anche nel forum senza censure
Grazie Marino51
hai capito la logica della discussione benissimo...
Non è come pensiamo noi di fare il programma ma come pensa il programmatore e noi possiamo solo dare un consiglio non che si fa cosi o colà perchè c'è sempre un lato oscuro che non consideriamo abbastanza nella programmazione e che ci fa fare sempre un bug inaspettato...
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
echo '<p><a href="del.php?id='.$row["id"].'">del</a></p>';
Questa è una forma simile ad una chiamata AJAX???
Un controllo lato client (bool) scatena una chiamata ajax???
Qui non si tratta di programmi /programmatori si parla di buon senso...

Perchè non farlo con un messaggio COAP.... o MQTT con WS!
Si va nel ridicolo meglio fermarsi...
Rimango dell'idea che tutto sarebbe bello e fattibile ma non trovo ancora una correlazione chiara e distinta che faccia pensare all'utilizzo di AJAX!
 

vic53

Nuovo Utente
9 Feb 2019
35
0
6
Fonte Nuova
www.euro1.it
Questa è una forma simile ad una chiamata AJAX???
Un controllo lato client (bool) scatena una chiamata ajax???
Qui non si tratta di programmi /programmatori si parla di buon senso...

Perchè non farlo con un messaggio COAP.... o MQTT con WS!
Si va nel ridicolo meglio fermarsi...
Rimango dell'idea che tutto sarebbe bello e fattibile ma non trovo ancora una correlazione chiara e distinta che faccia pensare all'utilizzo di AJAX!

Beninteso non voglio fare piu commenti ma
quella non è simile a una chiamata ajax bensi chiama una pagina sul server e apre la nuova pagina HREF per intendersi...
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
leggendo attentamente il post iniziale, si evince che, dalla riga

Ad una semplice richiesta di "Conferma cancellazione" viene consigliato di utilizzare AJAX?
quella non è simile a una chiamata ajax bensi chiama una pagina sul server e apre la nuova pagina HREF per intendersi...
Avrei capito questa affermazione si avesse usato i "data-" HTML5 no href...
Cioè per intenderci, state sparando ad una formica con un cannone... Tutto qui...

Codice:
<a class="cliccami" href="cancella.php?id=1">
   Delete1
</a>
<a class="cliccami" href="cancella.php?id=2">
    Delete2
</a>
<script>
     
var $elem=document.getElementsByClassName('cliccami');
document.addEventListener('click',($elem)=>{
    $elem.preventDefault();
    if(confirm('SICURO')){
         
       document.location.href=$elem.srcElement.href;
    }
});

</script>
Pagina cancella.php
PHP:
// TUTTO IL CODICE CHE SI VUOLE ESEGUIRE E ALLA FINE
include($_SERVER['DOCUMENT_ROOT']."/inc.php");
$sql = "DELETE FROM users WHERE id=:userID";
$stmt = $db->prepare($sql);
$stmt->bindParam(':userID', $_GET["id"], PDO::PARAM_INT);
$stmt->execute();

//TORNO SULLA PAGINA
header('location:'.$_SERVER['HTTP_REFERER']);
Cosa comporta:
Non dover gestire eventuali errori in js
Non attendere risposta dell'effettiva cancellazione dell'elemento
Non dove aggiornare in modo asincrono la view sulla quale sto lavorando in quanto appena rientra la view si aggiorna
Non deve effettuare il destroy di nulla (in caso stia utilizzando lib di terze parti)
_____________________________________________________________________
Avrei utilizzato AJAX se avesse impostato la domanda in modo diverso!
Codice:
<!-- dove ref è il riferimento per eliminare map è il campo sul quale lavorare e set è l'action da eseguire -->
<a data-ref='1' data-map='id' data-set='delete'>1</a>
//call è la collection
/**
* Metodo per eseguire azioni non definite gestite dal server
*/
check_actions_item:function(e){
     var self=this;
     var current=$(e.currentTarget);
    self.call.postSimpledata('azioni.php',{ref:current.data('ref'),map:current.data('map'),set_type:current.data('set')}).then(function(data){
     console.log(data);
    //ipotizzando di avere il codice di risposta
    if(data.code===200){
       //aggiorno la visualizzazione dei dati in quanto 1 elemento è stato cancellato!
       self.$el.update_view(data.object_return);
   }
});
}
Con queste 3 righette è possibile effettuare le CRUD senza replicare nulla e senza arrivare alla scrittura spaghetti-code...


Punti di vista...
_____________________________________________________________________
Tornando alla richiesta, la soluzione posta sopra funziona con un banalissimo "header('location"...."
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ebbene si … ci vuole coraggio
self.call.postSimpledata('azioni.php',{ref:c ………
non é ajax, é crud o cotto, ma va bene lo stesso

fine della partecipazione …. a questa discus
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Non è ajax?
Codice:
var TestCollections=Backbone.Collection.extend({
    initialize: function(page) {

    },
    postSimpledata:function(url,data){
        return Request_AJ(url,'POST',data);
    }
});
var Test=Backbone.View.extend({
    el:'#content',
    call:new TestCollections,
......
});
var Request_AJ=function(link,type_request,parameter){
    return $.ajax({
        url: link,
        type: type_request,
        data: {
            request:parameter
        },
        error: function (e) {
            console.log("errore chiamata", e);
        }
    }).then(function(dataJSON) {
        return StoreLenght(dataJSON);
    });
};
Quindi Request_AJ sono patate.... scusa non lo sapevo! Credevo fosse AJAX visto che l'ho scritto....!
La discussione diventa imbarazzante....
Chiudo senza repliche....
 
Stato
Chiusa ad ulteriori risposte.
Discussioni simili
Autore Titolo Forum Risposte Data
gandalf1959 Chiedere conferma all'utente prima di eseguire una funzione PHP 5
L jquery UI dialog form. Conferma prima di invio jQuery 2
T Conferma reload pagina Javascript 4
M Come nascondere la finestra di dialogo di conferma? HTML e CSS 1
W Email conferma inserimento Classic ASP 0
L Mailchimp - pagina di conferma Email Marketing 6
A [PHP] form messaggio di conferma PHP 2
Roulder [PHP] Stampa file di testo Automatico senza conferma PHP 1
S Email di conferma dopo un form PHP 4
M Temporizzare il link di conferma attivazione profilo PHP 9
F Tast di conferma chiusura App Sviluppo app per Android 1
V Richiesta conferma utente - php PHP 9
D Form Registrazione con conferma via email - problema PHP 10
L [php/js] Conferma Azione PHP 2
E messaggio di conferma dopo inserimento/modifica/cancellazione righe db PHP 10
N Inviare mail di conferma al cliente PHP 0
novello88 Problema finestra di conferma (che non appare) Javascript 1
N Cancellazione Immagine Utente e Echo conferma cancellazione PHP 2
felino Contact Form 7: messaggio di conferma sotto il modulo? WordPress 1
H Email di conferma e prendere il nome. PHP 1
Mamu Conferma e-mail senza mysql PHP 6
J Box conferma dopo invio dati PHP 0
A Finestra di conferma Javascript 2
A function conferma Javascript 6
P Problema script conferma cancellazione Javascript 2
P problema conferma check e andare avanti nelle pagine PHP 33
Emix Suggerimento e aiuto su email di conferma account PHP 9
S Registrazione con conferma email. PHP 9
S Form PHP: Messaggio di conferma che compare al caricamento della pagina PHP 11
D chiedere conferma su controllo archivi PHP 1
Y Conferma registrazione (era: link con ?codice=codice) PHP 3
A Email di conferma per attivazione utente PHP 3
D Problema pagina di conferma PHP 4
P disabilitare messaggio richiesta conferma sovrascrittura con CUTE FTP Windows e Software 0
cosov Messaggio conferma per cancellazione record Javascript 1
P Finestra di conferma Classic ASP 1
R Conferma di eliminzaione in Jscript Classic ASP 5
J Moduli: messaggi di conferma e/o errore HTML e CSS 1
P Pagina di conferma.asp Classic ASP 0
P Pagina di conferma Classic ASP 2
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
S come vedere anteprime delle foto prima di mandarli al server Javascript 1
L Bing prima pagina prima riga; Google mi ignora SEO e Posizionamento 0
MeWeb Marketing Ciao, per la prima volta dentro ad un forum Presentati al Forum 1
J [Javascript] Inserire un caricamento con animazione prima dell'esecuzione di un'azione Javascript 1
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
D [Javascript] Validare dati in un form prima di spedirlo Javascript 1
Shyson [PHP] Cookie si cancella prima PHP 7
A GoDaddy mi addebita il rinnovo 2 mesi prima Discussioni Varie 2
D prima prova con ASP... dove sbaglio? Classic ASP 13

Discussioni simili