Boite de dialogue Javascript

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Boite de dialogue Javascript

par Ryle » 09 avr. 2008, 15:49

Euh.... en l'occurence, ta requête ramene les ids des enregistrements dont la valeur de champ est égale à $champ sans se soucier de savoir s'il y a ou pas des doublons, elle te ramene tout ce qu'elle trouve dans ta table pour lesquels : champ='$champ'

D'après ton code :
- s'il n'y a aucun enregistrement, rien ne se passe. Pas de boucle, et pas d'alert() puisque la variable reste à false.
- s'il y en a un ou plus (toujours sans se soucier du fait qu'il y ait des doublons ou pas) elle met ta variable $var à vrai, efface un par un chacun des enregistrement (sans se soucier de savoir s'il est en double ou pas) et exécutera ton alert().

En gros, le script que tu nous montre fait un simple
DELETE  FROM table WHERE champ='$champ'
et affiche une alerte si au moins un enregistrement a été affecté... c'est tout...

par jajax » 09 avr. 2008, 15:08

En fait , je fait une imporation à partir d'un fichier
et je verifie les doublons dans la base de données par le champ "champ" avec la variable $champ
qui contient toutes les valeurs des données à comparer

le script compare les données avec celles dans la base. *
si mysql_num_rows > 0 (il a trouvé des doublons) ==> affichage de la boite de dialogue javascript OK


Mon probleme c''est que quand le script trouve des doublons et des nouveaux valeurs (non doublons)
ça marche aussi mais seulement la boite de dialogue ne s'affiche plus .....


je ne sais pas si vous avez compris


merci

par Ryle » 09 avr. 2008, 14:56

Je comprend pas ton problème... comment pourrais tu avoir une donnée étant à la fois égale à la valeur de $champ tout en étant différente de la valeur de $champ ?

Ta requête ne retourne que les enregistrements qui respectent les critères spécifiés, et mysql_num_rows() indique leur nombre. Dans la mesure ou ton while est inclu dans ton if, il n'est pas possible qu'il s'exécute sans que $var ait été passé à true au préalable.

Donc soit ton code est incomplet, soit ton problème n'a pas bien été identifié....

par jajax » 09 avr. 2008, 14:31

Bonjour

après une longue reflexion j'ai pu trouver une solution
jai initialisé une variable à false et qui passe à true quand
mysql_num_rows >0 

Code : Tout sélectionner

$var=false; $req="select id from table where champ=\"".$champ."\" "; $res=mysql_query($req) or exit(mysql_error() . "<br/>$req"); if (mysql_num_rows($res)>0) { $var=true; ?> <? while ($row=mysql_fetch_array($res)) { $reqs="DELETE from table where id ='".$row['id']."' "; //echo $reqs; $ress=mysql_query($reqs) or exit(mysql_error() . "<br/>$reqs"); } } et à la fin du script if($var==true{<SCRIPT language="Javascript"> alert('ok'); </SCRIPT>})
là cest ok

mon dernier probleme c'est
si le resultat de mon requete trouve en même temps dans la liste des données verifiant
champ=\"".$champ."\" "
et
champ!=\"".$champ."\" " 
==> la requete $reqs est bien executé mais la boite de dialogue ne s'affiche pas c'est sans doute parce quil a trouvé des données qui ne verifie pas
champ=\"".$champ."\" 
votre idée

par jajax » 31 mars 2008, 17:43

Oui je l'execute cette variables $reqs
et comment puis je bien demander toutes les confirmations que tu je voudrais à mon visiteur?

J'ai mis le javascript en dehors de while
mais la boite de dialogue s'affiche plusieurs fois ???
$req="select id from table where champ=\"".$champ."\" ";
$res=mysql_query($req) or exit(mysql_error() . "<br/>$req");
if (mysql_num_rows($res)>0) 
	{ 
		?>
		 
    <SCRIPT language="Javascript">							
alert('voulez vous continuer');
     </SCRIPT>
     <?												
 while ($row=mysql_fetch_array($res))
   {										
$reqs="DELETE  from table where id ='".$row['id']."' ";
 //echo $reqs;
 $ress=mysql_query($reqs) or exit(mysql_error() . "<br/>$reqs");
        }
    }
Merci

par Ryle » 31 mars 2008, 16:50

A noter par ailleurs qu'une alerte javascript n'est pas une demande de confirmation et qu'en dehors d'un bouton "ok" tu ne proposes aucune autre alternative... (à part terminer la tâche ou arracher la prise du pc avec les dents ?)

Par ailleurs, je ne sais pas ce que tu fais de ta variable $reqs dans la partie "suite du code ....", mais si jamais tu exécutes la requête, alors tu peux bien demander toutes les confirmations que tu voudras à ton visiteur, tes données auront déjà été supprimmées avant même l'affichage du premier message....... :roll:

par VaN » 31 mars 2008, 14:12

sortir l'alert du while { }

par jajax » 31 mars 2008, 13:59

Bonjour

jai ecrit le code comme ça et ça a marché
<? 
$req="select id from table where id=1";
$res=mysql_query($req);
if (mysql_num_rows($res)>0) {
    $nb=mysql_num_rows($res);
     while ($row=mysql_fetch_array($res)){?>
                                                    
   <script language="JavaScript">
    alert('Voulez vous CONTINUER ?'); 
   </script>

<?$reqs=" delete from table where id = '".$row['id']."' ";
  suite du code .... 
Mon nouveau probleme c'est que ça m'affiche successivement des fenetres en fonction du nombre retourné par
$nb=mysql_num_rows($res);

Qu'est ce qu'il faut que mets dans mon code javascript pour que la fenêtre ne s'affiche que une seule fois même si mysql_num_rows retourne plusieurs valeurs


Merci

par Ryle » 28 mars 2008, 16:22

La commande confirm() va te retourner "true" si l'utilisateur clique sur OK et "false" s'il clique sur annuler. Tu peux donc facilement tester son choix :
if (confirm('Voulez vous CONTINUER ?'))
  ... // continuer
else
  ... // pas continuer
Par contre, n'oublies pas que php s'exécute sur le serveur et génère la page qui est ensuite envoyée au navigateur où le javascript s'exécutera.

En gros, ton script va exécuter le php : select, boucle, delete
Et ensuite seulement envoyer la page au navigateur qui proposera une série de confirm() qui n'auront aucun effet sur les delete qui seront déjà passés.

Boite de dialogue Javascript

par jajax » 28 mars 2008, 16:06

Bonjour,

Voici ma problématique:

Je veux ouvrir une boite de dialogue de confirmation (oui/non) en Javascript quand une condition est remplie.
Ceux que je veux faire c'est que quand je clique
ANNULER= je reste sur ma page sans rien changer
OK = execution de du second requete
voiçi le code
<? $req="select id from table where id=1";
$res=mysql_query($req);
 if (mysql_num_rows($res)>0) {
	$nb=mysql_num_rows($res);
	  while ($row=mysql_fetch_array($res)){?>
													
<script language="JavaScript">
confirm('Voulez vous CONTINUER ?'); 
</script>

<?$reqs=" delete from table where id = '".$row['id']."' ";
 
Là la boite de dialogue s'affiche bien mais quand je clique sur ANNULER ça fait la même action que cliquer sur OK

merçi pour votre aide