Bonjour,
Je me retrouve devant un comportement qui me laisse pantois...
Dans un script, je veux vérifier si un enregistrement d'une table contient déjà un numéro de téléphone donné.
Pour cela, j'intancie un objet que je réaffecte systématiquement dans une boucle avec des données provenant d'un fichier xls.
Voici la partie de code de mon script :
Pour savoir si je dois créer un nouvel enregistrement ou si je dois updater un enregistrement déjà existant, je vérifie si un enregistrement contient déjà le numéro de téléphone de la ligne xls correspondante, mon champ 'tel' étant de type 'unique' dans ma table MySql.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $cible = new CCible(); //Servira pour le mise-à-jour des différents clients-cibles repris deans le fichier xls ... // Parse lintégralité du fichier excel for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { ... $cible->setAll($tab); $rech = $cible->verifExisteCible(); echo "<font color='red'>" . $rech . "</font><br>"; //$cible->enregCible('enreg'); }
Voici la partie de code de ma classe CCible :
Voici le code utilisé dans ma classe CtransactionsBdd :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function verifExisteCible() { $tab[0] = $this->tel; $transaction = CtransactionsBdd::GetInstance("MYSQL", "speedcall"); $resuReq = $transaction->select("MYSQL_exist_cible", $tab); //Vérification de l'existence ou non du numéro de téléphone dans la table cibles return $transaction->getErreur(); }
Cette fonction fait appel à une fonction requete() qui se trouve dans un autre fichier et dont voici le code utilisé :
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 public function select($requ, $tableau) { $requete = requete($requ, $tableau); switch(self::$typeBase) { case "MYSQL": $result = mysql_query($requete, self::$connect); if(! $result) self::$erreur = "Impossible d'effectuer la sélection " . $requete; else { if (! mysql_num_rows($result)) self::$erreur = "Aucun résultat"; else { while($row = mysql_fetch_assoc($result)) $resultatSelect[] = $row; return $resultatSelect; } } break; } }
Mon problème, c'est que ce n'est pas le bon case qui est exécuté mais apparemment bien celui du "MYSQL_donneesCible" sans passage du contenu de $param[0].
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 function requete($req, $param) { switch($req) { case "MYSQL_listeCodesPost": return "select distinct codePostal from localites order by codePostal"; break; ... case "MYSQL_donneesCible": return "SELECT * from cibles where id = " . $param[0]; break; ... case "MYSQL_exist_cible": return "SELECT * from cibles where tel = '" . $param[0] . "'"; break; } }
Voici ce que ça m'affiche à l'écran :
"Impossible d'effectuer la sélection SELECT * from cibles where id = " autant de fois que je boucle dans mon for.
Par contre, si je remplacepar
Code : Sélectionner tout - Visualiser dans une fenêtre à part "where tel = "
dans ma requête, là j'obtiens bien l'affichage "Aucun résultat" autant de fois que je boucle dans for.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "where nom = "
Je n'y comprends que dalle...
Quelqu'un pourrait m'aider?
Merci d'avance
Partager