Débutant javascript: fonction confirm

Fermé
anisse4 Messages postés 209 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 juin 2009 - 17 juin 2008 à 18:21
anisse4 Messages postés 209 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 juin 2009 - 18 juin 2008 à 09:59
Salut à tous!

J'ai un bouton de confirmation pour supprimer un compte . J'ai fais une fonction onclick pour effacer le compte lorsque je clique sur mon button de confirmation. Mais le soucis c'est que dés que je consulte la page et même lorsque je n'appuie pas sur le bouton il execute le code sql et le compte est donc supprimé... ou est ma faute svp?? merki pour vos futurs aide!

<SCRIPT language="JavaScript">
		function confirmation() {
			var reponse = confirm("Etes-vous sur de vouloir effacer votre compte?!?")
			if(reponse){
			  document.location='index2.html'
			
			  <?
			  mysql_connect('localhost','root','');
			  mysql_select_db('test');
			  mysql_query("delete from utilisateur where nom='$pseudo' ");
			  mysql_close();	
			  ?>
			  alert("votre compte a été supprimé!!!!");
			}

			else{
		            alert("votre compte n'est pas supprimé")
			}
		}
		</script>

Et plus bas dans mon code html voici la définition de mon bouton
<input type="button" onClick="confirmation()" value="supprimer">

1 réponse

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
17 juin 2008 à 18:48
Bonjour.

Le problème vient certainement de ce que tu mélanges du JS avec du PHP.

Quand tu appelles ta page (c'est une page php, je suppose), l'interpréteur affiche le code html <SCRIPT>...
Puis il tombe sur le <?, qui lui dit "C'est du php, il faut l'interpréter".
=> Il interpréte le code
			  <?
			  mysql_connect('localhost','root','');
			  mysql_select_db('test');
			  mysql_query("delete from utilisateur where nom='$pseudo' ");
			  mysql_close();	
			  ?>

Et du coup il supprime le compte !

Tu ne peux pas passer de requête SQL (exécutée côté serveur)) à partir de JS (qui s'exécute côté client)
Pour ce que tu comptes faire, tu devrais peut-être te tourner vers l'AJAX : tu appelles dans ton JS une page PHP qui exécute la requête.
Sinon, il faut que ton JS envoie sur une page php qui contient le code de ta requête :
<SCRIPT language="JavaScript">
		function confirmation(pseudo) {
			var reponse = confirm("Etes-vous sur de vouloir effacer votre compte?!?")
			if(reponse){
// On renvoie vers la page suppression.php en passant en paramètre le pseudo
			  document.location='suppression.php?pseudo='+$pseudo
/*
Ton alert ne s'exécutera pas, vu que tu demandes d'aller sur une autre page...
A la place, si tu le veux vraiment, mets le dans ta page suppression.php
			  alert("votre compte a été supprimé!!!!");
*/			}

			else{
		            alert("votre compte n'est pas supprimé")
			}
		}
		</script>

Et dans ta page suppression.php, tu récupères le pseudo passé en paramètre, tu passes la requête de suppression et tu reviens sur la page que tu veux.

En passant :
Attention à bien sécuriser ton truc, parce que là tu permets à n'importe qui de supprimer n'importe quel compte (enfin, ça dépend du reste du code...)
0
anisse4 Messages postés 209 Date d'inscription jeudi 2 novembre 2006 Statut Membre Dernière intervention 19 juin 2009 21
18 juin 2008 à 09:59
Oki thx pour ta réponse macgawel. En effet je n'avais plus à l'esprit que php est un langage coté serveur et JS coté client.
J'ai appliqué tes modifications et ça marche nickel! Je n'ai juste pas récupéré $pseudo dans l'URL car je l'a définit comme variable superglobal avec $_SESSION .

merci ++
0