Case effectué non correct
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 :
Code:
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');
} |
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.
Voici la partie de code de ma classe CCible :
Code:
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();
} |
Voici le code utilisé dans ma classe CtransactionsBdd :
Code:
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;
}
} |
Cette fonction fait appel à une fonction requete() qui se trouve dans un autre fichier et dont voici le code utilisé :
Code:
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;
}
} |
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].
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 remplace par dans ma requête, là j'obtiens bien l'affichage "Aucun résultat" autant de fois que je boucle dans for.
Je n'y comprends que dalle...
Quelqu'un pourrait m'aider?
Merci d'avance