[RESOLU] Problème d'une requete Select sensible à la casse

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 : [RESOLU] Problème d'une requete Select sensible à la casse

Re: Problème d'une requete Select sensible à la casse

par ArnaudYeha » 26 août 2016, 09:12

A force de chercher sur les forums;j'ai pu trouver la solution à mon problème. Je donne la solution pour que si demain quelqu'un d'autre est confronté à ce problème;il puisse avancer.
En effet comme mentionné ci-haut, lors de l'insertion des données issues d'Excel, la seconde colonne était insérée sous forme input textarea, dès lors de ma jointure ne fonctionnait pas correctement. Pour pallier à ce problème, j'ai utilisé la fonction trim() qui supprime les espaces (ou d'autres caractères) en début et fin de chaîne sur ce champ avant de l'insérer.
Voici le script:

Code : Tout sélectionner

if(isset($_POST["bouton2"])) { if(!empty($_FILES["excel2"]["tmp_name"])) { $fileName2=explode(".",$_FILES["excel2"]["name"]); if($fileName2[1]=="csv") { $file2=$_FILES["excel2"]["tmp_name"]; $fp2=fopen($file2,"r"); $cpt2=0; while(!feof($fp2)) { $ligne2=fgets($fp2,4096); $liste2=explode(";",$ligne2); $liste2[0]=(isset($liste2[0]))?$liste2[0]:Null; $liste2[1]=(isset($liste2[1]))?$liste2[1]:Null; $champs1=$liste2[0]; $champs2=$liste2[1]; $champInsere = trim($champs2); if($champs1!='') { $cpt2++; $sql2=("insert into demandeur values('','$champs1','$champInsere')"); $res2=mysql_query($sql2) or die(mysql_error()); if($res2) { echo '<script type="text/javascript">alert("Chargement du fichier BCB effectue");</script>'; } else { echo '<script type="text/javascript">alert("Echec de chargement du fichier");</script>'; } } } fclose($fp2); } else { echo '<script type="text/javascript">alert("Vous devez choisr un fichier de type csv");</script>'; } } else { echo '<script type="text/javascript">alert("Vous devez choisir un fichier");</script>'; } }
Ok a plus

Re: Problème d'une requete Select sensible à la casse

par ArnaudYeha » 26 août 2016, 08:46

Ok c'est bien, merci de t'intéresser à mon problème.
Tu pourrais m'indiquer là ou je peux passer pour charger la table que j'ai exporté. Sur le formulaire du forum,j'ai cherché mais je ne trouve pas.
Merci

Re: Problème d'une requete Select sensible à la casse

par @rthur » 25 août 2016, 18:56

La police est différente uniquement parce que ce n'est pas le même type de champ input vs. textarea
Fait un export de tes données comme je te l'ai demandé + haut.

Re: Problème d'une requete Select sensible à la casse

par ArnaudYeha » 25 août 2016, 17:29

Par rapport au problème que j'avais signalé ci-haut.j'ai constaté la cause de ce problème. En effet le problème se situe au niveau du chargement des données se trouvant dans le fichier Excel. La police est différente pour les deux colonnes comme le mentionne la capture suivante:
Image
C'est pour celà que la jointure sur la colonne "conjoint" ne fonctionne pas.
Je vous montre également mon script de chargement du fichier Excel:

Code : Tout sélectionner

if(isset($_POST["bouton2"])) { if(!empty($_FILES["excel2"]["tmp_name"])) { $fileName2=explode(".",$_FILES["excel2"]["name"]); if($fileName2[1]=="csv") { $file2=$_FILES["excel2"]["tmp_name"]; $fp2=fopen($file2,"r"); $cpt2=0; while(!feof($fp2)) { $ligne2=fgets($fp2); $liste2=explode(";",$ligne2); $table2=filter_input(INPUT_POST,'userfile'); $liste2[0]=(isset($liste2[0]))?$liste2[0]:Null; $liste2[1]=(isset($liste2[1]))?$liste2[1]:Null; $champs1=$liste2[0]; $champs2=$liste2[1]; if($champs1!=''&&$champs2!='') { $cpt2++; $sql2=("insert into demandeur values('','$champs1','$champs2')"); $res2=mysql_query($sql2) or die(mysql_error()); if($res2) { echo '<script type="text/javascript">alert("Chargement du fichier BCB effectue");</script>'; } else { echo '<script type="text/javascript">alert("Echec du chargement du fichier");</script>'; } } } fclose($fp2); } else { echo '<script type="text/javascript">alert("Vous devez choisr un fichier de type csv");</script>'; } } else { echo '<script type="text/javascript">alert("Vous devez choisir un fichier");</script>'; } }
Je pense que le problème se situe au niveau du parcours du fichier excel car si je considère l'indice 0 seulement, le chargement est bien fait sans provlème.Mais si je passe à l'indice 1 pour charger l'autre colonne, c'est là que survient ce problème.

Voici cette ligne:

Code : Tout sélectionner

$liste2[0]=(isset($liste2[0]))?$liste2[0]:Null; $liste2[1]=(isset($liste2[1]))?$liste2[1]:Null;
Quelqu'un pourrait me dire à quoi est du ce problème

Merci à vous

Re: Problème d'une requete Select sensible à la casse

par ArnaudYeha » 25 août 2016, 10:37

J'ai décelé la provenance de l'erreur. Le chargement des données en provenace d'Excel n'est pas bien fait, la colonne "conjoint" est mal chargée.
Les données se trouvant sur la colonne "nomDemandeur" ont une taille de police différente par rapport aux données se trouvant sur la colonne "conjoint".
Je vais voir comment gérer ce problème de police

Re: Problème d'une requete Select sensible à la casse

par @rthur » 25 août 2016, 09:46

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.


Fait un export avec phpmyadmin de quelques enregistrements de ta table avec des données dont la provenance est Excel et d'autres dont la provenance est manuel pour voir si il y a une différence

Problème d'une requete Select sensible à la casse

par ArnaudYeha » 25 août 2016, 08:55

Bonjour,
je suis entrain de comparer le contenu de deux tables dont les données sont chargées à partir des fichiers Excel. Pour faire cette comparaison,je fais la jointure sur les colonnes "nomDemandeur", "conjoint" de la table demandeur avec la colonne "nom" de la table debiteur_brb.

Mais le problème est qu'il ne m'affiche que les "nomDemandeur" semblables à ceux se trouvant à la colonne "nom"; on dirait que la jointure sur "conjoint" ne marche pas. Voici ma requete:
select distinct dm.nomDemandeur,dm.conjoint,db.debiteurBanque from debiteur_brb db join demandeur dm on db.nom=dm.nomDemandeur or db.nom=dm.conjoint ORDER BY dm.nomDemandeur, dm.conjoint
Mais lorsque j'insère les données manuellement dans les tables la jointure fonctionne correctement;par contre en utilisant les données provenant d'Excel la jointure sur "conjoint" ne fonctionne pas.

Quelqu'un pourrait m'apporter son aide et me dire à quoi est du ce problème.

Merci à vous