Bonjour,

Je ne trouve pas depuis des semaines la solution. Une application envoie à mon site une URL pour être enregistrée. On peut enregistrer trois fois l'appli.

Chez moi, cela marche bien, mais parfois, la réponse du serveur est celle d'une deuxième registration et non d'une première. Plus grave, des personnes ayant voulu enregistrer ont reçu pour réponse que c'était la quatrième fois qu'ils enregistraient l'appli (et donc ont été rejetés). C'est comme si mon code bégayait, comme s'il faisait plusieurs fois la procédure.

J'ai testé des messages d'alerte pour faire des tests (en mettant des "echo('entree telle partie') partout). La fonction n'est bien appelée qu'une seule fois.

Voici le code de la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
$numReg = 0; //ce nombre sera renvoyé, il détermine le nombre de registrations effectuées
$appDaz = "MonAppli";
$today = date("Ymd");
$true = 1;
$false = 0;
 
$sqlTwo =  "SELECT appName, useOne, useTwo, useThree FROM monRegistre WHERE email = '" . $strEmail . "'AND appName = '".$appDaz."'";
 
$req = $dbh->prepare($sqlTwo);
$req->execute(array($_GET['useOne'], $_GET['useTwo'],$_GET['useThree']));
 
    while($donnnees = $req->fetch()) {
 
        	if($donnnees['useOne'] == $true && $donnnees['useTwo'] == $true && $donnnees['useThree'] == $true) {$numReg = 4;}
 
        	else if($donnnees['useOne'] == $true && $donnnees['useTwo'] == $true && $donnnees['useThree'] == $false) {$numReg = 3;}
 
        	else if($donnnees['useOne'] == $true && $donnnees['useTwo'] == $false && $donnnees['useThree'] == $false) {$numReg = 2;}
 
        	else {$numReg = 0;}
 
        	}//fin boucle recherche
        	$req->closeCursor();
 
        	if($numReg==4) {
        		}
        	else if($numReg==3) {
        		$sql3a =  "UPDATE monRegistre SET useThree=1 WHERE email = '" . $strEmail . "'";
        		$req3a = $dbh->prepare($sql3a);
        		$req3a->execute();
        		$req3a->closeCursor();
 
        		$sql3b = "UPDATE monRegistre SET dateThree = ".$today." WHERE email = '" . $strEmail . "'";
        		$req3b = $dbh->prepare($sql3b);
        		$req3b->execute();
        		$req3b->closeCursor();
 
        		}
        	else if($numReg==2) {	
        		$sql2a =  "UPDATE monRegistre SET useTwo=1 WHERE email = '" . $strEmail . "'";
        		$req2a = $dbh->prepare($sql2a);
        		$req2a->execute();
        		$req2a->closeCursor();
        		//$dbh->query($sql2a);
        		$sql2b = "UPDATE monRegistre SET dateTwo = ".$today." WHERE email = '" . $strEmail . "'";
        		$req2b = $dbh->prepare($sql2b);
        		$req2b->execute();
        		$req2b->closeCursor();
        		//$dbh->query($sql2b);
        	}
        	else if($numReg==1) {
        		}
        	else if($numReg==0) {
        	$sql1 = 'INSERT INTO monRegistre VALUES("","'.$appDaz.'","'.$strEmail.'","'.$true.'","'.$false.'","'.$false.'","'.$today.'","'.$today.'","'.$today.'")';	
					$reqOne = $dbh->prepare($sql1);
					$reqOne->execute();
					$reqOne->closeCursor();
        	$numReg = 1;
        		}//fin premiere registration
 
 
try{
    	$dbh = null;
    }
 catch (PDOException $e) {
    die();}
 
 
return ($numReg);
Fonction appelée ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo ($verB2 = maFonction($strEmail));
je ne vois vraiment pas où cela cloche. Je travaille avec une base MySQL 5 et un site paramétré en php5 aussi.

Auriez-vous une idée?