PHP/Javascript - Pop-up de confirmation

Nico34
Invité n'ayant pas de compte PHPfrance

13 déc. 2006, 01:27

Bonjour,

Je cherche a faire apparaitre un popup pour confirmer la suppression depuis un tableau, d'une donnée de ma base de données, en fonction de son identifiant dans la table (page dynamique pour supprimer...)

J'arrive a faire apparaitre le pop-up, mais quelque soit le champ sur lequel je clique ca me supprime toujours le champ du tableau dont l'identifiant est le plus haut.

Voila le code pour que vous compreniez mieux :
<?php
include 'config.php';
$result = mysql_query("SELECT * FROM bondecommande ORDER BY numbon");
while ($row = mysql_fetch_array($result))
      { echo '<tr height="25"><td width="30"><a href="bondet.php5?numbon='.$row['numbon'].'">'.$row['numbon'].'</a></td>
<td width="80">'.$row['nomdemandeur'].'</td><td width="80">'.$row['urgence'].'</td>
<td width="80">'.$row['nomfournisseur'].'</td><td width="80">'.$row['reference'].'</td>
<td width="20"><a href="formulaire_updbon.php5?numbon='.$row['numbon'].'">Modif</a></td>';
?>
<script language="JavaScript">
function check()
{ if (confirm('Etes vous sur(e) de vouloir supprimer cette donnée ?'))
     { window.location=<?php echo'"delbon.php5?numbon='.$row['numbon'].'"'; ?>
}
else
{ window.location="listebons.php5"
}
}
</script>
<?php echo'<td width="20"><a href="" onclick="check()">X</a></td>'; } ?>
J'ai essayé je sais pas combien de combinaison, pour le placement du script etc... Je me doute bien qu'il doit y avoir un probleme avec la boucle while que le script javascript doit pas reconnaitre ou un truc du style, en tout cas je bloque dessus depuis 2 heures....

Voila si vous pouvez m'aider, merci d'avance

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

13 déc. 2006, 01:50

Modération :
Nico34, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Eléphant du PHP | 135 Messages

13 déc. 2006, 09:33

Bonjour Nico34,

Il y a déjà la fonction "confirm()" prévue pour ce que tu veux faire :)


Code : Tout sélectionner

<a href="tonUrl" onclick="return confirm('es-tu sûr?');">Supprimer</a>
Lorsque l'utilisateur va cliquer sur le lien, la fonction confirm('es-tu sûr?') sera appelée.

Elle ouvrira une boite demandant confirmation à l'utilisateur.

Si il clique sur OK, la fonction renvoie true et le navigateur continue vers l'url demandé.

Si il clique sur Annuler, la fonction renvoie false et le navigateur ne suis pas le lien.

Bonne amusement ;)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 déc. 2006, 11:59

Tu peux aussi sortir le javascript de la boucle et placer la fonction dans l'en-tête (HEAD, comme ils se doit).
Et passer un paramètre pour savoir quel ID éliminer :
<script language="JavaScript">
function check(id)
{ if (confirm('Etes vous sur(e) de vouloir supprimer cette donnée ?'))
  { 
      window.location="delbon.php5?numbon="+id;
  }
  else
  { 
     return false;
  }
}
</script> 
Et par contre placer la ligne pour supprimer dans la boucle:
<?php 
While(....)
{
   ...
   echo'<td width="20"><a href="" onclick="return check('.$row['numbon'].')">X</a></td>';  ?>
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Nico34
Invité n'ayant pas de compte PHPfrance

13 déc. 2006, 22:07

Ca m'a l'air clair, je vais tester tout ca, merci pour vos réponses ;)

Nico34
Invité n'ayant pas de compte PHPfrance

13 déc. 2006, 23:41

Bon je viens de tester, tout marche nickel sous Firefox.
Par contre sous Internet Explorer j'ai des trucs bizarres... Le pop up apparait bien mais quand j'appuie sur OK je me fais éjecter vers une page que je n'ai indiqué nulle part dans mon code (en fait vers la page d'identification qui permet l'acces au site), et il faut parfois s'y reprendre à 2 ou 3 fois pour correctement supprimer la donnée...

Quelqu'un a une idée quant à l'origine du probleme sous IE alors que tout marche très bien sous Firefox ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 déc. 2006, 23:43

remontre nous le code après modifications.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Nico34
Invité n'ayant pas de compte PHPfrance

14 déc. 2006, 00:07

Alors, voila pour la page dans laquelle sont affichées les données et ou est géré le popup :
<?php session_start(); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Service des Langues de l'IUT de Montpellier - Gestion du Materiel</title>
<link rel="stylesheet" media="screen" type="text/css" title="Exemple" href="design_index.css" />
<script language="JavaScript">
function check(id)
{ if (confirm('Etes vous sur(e) de vouloir supprimer cette donnée ?'))
  { 
      window.location="delbon.php5?numbon="+id;
  }
  else
  { 
     return false;
  }
}
</script> 
</head>
<body vlink="white" link="white" alink="white">
<div id="corps">



				<fieldset>
				<legend class="verdana12">Liste des Bons de Commande</legend>
				
				<table align=center>
				<tr height="25"><td>N&deg; Bon</td><td>Nom du Demandeur</td><td>Urgence</td><td>Nom Fournisseur</td><td>Reference</td></tr>
				<?php
				include 'config.php';
				$result=mysql_query("SELECT * FROM bondecommande ORDER BY numbon");		
				while ($row = mysql_fetch_array($result))
				{	echo '<tr height="25"><td width="30"><a href="bondet.php5?numbon='.$row['numbon'].'">'.$row['numbon'].'</a></td>
					<td width="80">'.$row['nomdemandeur'].'</td><td width="80">'.$row['urgence'].'</td>
					<td width="80">'.$row['nomfournisseur'].'</td><td width="80">'.$row['reference'].'</td>
					<td width="20"><a href="formulaire_updbon.php5?numbon='.$row['numbon'].'">Modif</a></td>
					<td width="20"><a href="" onclick="return check('.$row['numbon'].')">X</a></td>'; } ?>
						
				
				</table>
				</fieldset><br><br>
				
	 
</div>

</body>
</html>

Voila...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 déc. 2006, 00:25

Il manque une fermeture de ligne </tr> en fin de boucle.... on ne sait jamais 8-|

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Nico34
Invité n'ayant pas de compte PHPfrance

14 déc. 2006, 00:34

Héhé, bien vu ! Mais j'ai le meme probleme avec d'autres tableaux ou la il ne manquait pas de balise de fermeture de ligne :(

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 déc. 2006, 00:39

je vois pas de code pour popup :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute