IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Tester la présence d'une valeur


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [Tableaux] Tester la présence d'une valeur
    salut tout le monde,
    je voudrais savoir comment on peut tester si une valeur existe dans une table mysql et n'existe pas dans un fichier
    je m'explique autrement:
    j'ai créé un robot qui extrait les valeur d'un fichier CSV et les insère dans une table, ce fichier se met à jour quotidiennement. A chaque fois qu'une valeur manque du fichier je dois mettre le champs "actif" dans la base à 0, sachant que ce champs est égale à 1 par défaut

  2. #2
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    ...Et bien il faudrait que tu fasses une recherche dans la base de la valeur CSV....

    Ca va sûrement faire beaucoup d'accès, mais un simple SELECT avec un WHERE devrait suffir, si les termes de ton fichier CSV sont bien formaté

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $mot="viviboss";
     
    $query="SELECT nom FROM table WHERE nom='".$mot."'";
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par viviboss
    ...Et bien il faudrait que tu fasses une recherche dans la base de la valeur CSV....

    Ca va sûrement faire beaucoup d'accès, mais un simple SELECT avec un WHERE devrait suffir, si les termes de ton fichier CSV sont bien formaté

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $mot="viviboss";
     
    $query="SELECT nom FROM table WHERE nom='".$mot."'";


    Si le monde était si simple que ça, en fait moi je ne connais pas les valeurs dans le fichier, c'est un code qui va s'exécuter automatiquement, et à chaque fois qu'il trouve une valeur dans la table (dans le champs "id" précisément, qui est le méme champs dans le fichier) et qu'il ne la trouve pas dans le fichier, dans ce cas, il y a un champs actif dans la table qu'il va mettre à zéro.
    bon moi ce que j'ai fait c'est une fonction qui lit tte les valeurs du fichier et les insére dans un tableau, ensuite j'ai fait une requéte select sur le champs "id" de la table, reste à savoir comment je vais tester si cette valeur n'existe pas dans le fichier (le sens contraire etait plus simple).

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je suppose que ton fichier se met à jour en ajoutant des mots à la fin du fichier et pas a une place aléatoire dans ton fichier.
    Si c'est le cas, tu n'as pas besoin de tester toutes les valeurs, tu regardes la dernière valeur du fichier csv, tu vérifies si elle est ou non dans la base de données. Si oui, la base est a jour par rapport au fichier, si non la base n'est pas a jour.

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par koopajah
    Je suppose que ton fichier se met à jour en ajoutant des mots à la fin du fichier et pas a une place aléatoire dans ton fichier.
    Si c'est le cas, tu n'as pas besoin de tester toutes les valeurs, tu regardes la dernière valeur du fichier csv, tu vérifies si elle est ou non dans la base de données. Si oui, la base est a jour par rapport au fichier, si non la base n'est pas a jour.


    Bon surement le fichier se met à jour, mais il y a qqe valeurs dans le fichier qui se suppriment, et donc puisqu'elles existent déja dans la base, mon but c pas de les effacer de la table mais plutot de mettre le champs actif qui leurs correspond, à zéro. Voila pourquoi je veux tester si une valeur existe dans la table et n'existe pas dans le fichier.
    sinon pour le cas d'une nouvelle valeur, c pas un probléme parceque il suffit de mettre insert

  6. #6
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Si tu parse ton fichier CSV avec une expression régulière, afin de tirer les schémas de données que tu cherches, afin de les comparer à ta base...

    En effet, tu dis que tu ne connais pas ces données, mais tu dois bien savoir quelle forme elles ont, sinon tu ne pourrais pas les traiter.

    Je te conseille de regarder par là : preg_match, etc.

    en PHP tu peux facilement traiter un fichier CSV (virgules...) donc extraire une à une les données du fichier. Si tu passes ensuite des données par une expression régulière, forcément tu pourras ensuite les comparer à ta base (Dans un preg_match, les données sont retournés dans un tableau)
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par viviboss
    Si tu parse ton fichier CSV avec une expression régulière, afin de tirer les schémas de données que tu cherches, afin de les comparer à ta base...

    En effet, tu dis que tu ne connais pas ces données, mais tu dois bien savoir quelle forme elles ont, sinon tu ne pourrais pas les traiter.

    Je te conseille de regarder par là : preg_match, etc.

    en PHP tu peux facilement traiter un fichier CSV (virgules...) donc extraire une à une les données du fichier. Si tu passes ensuite des données par une expression régulière, forcément tu pourras ensuite les comparer à ta base (Dans un preg_match, les données sont retournés dans un tableau)


    C'est exactement ce que j'ai fait, mais c tjr pas là mon probléme, je voudrais savoir si si les valeurs qui existent dans la table n'existe pas dans ce fichier, voilà le code que j'ai fait:

    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    <?php
     
             $bdd = "csv"; 
             $host= "localhost"; 
             $user= "root"; 
             $pass= ""; 
     
     
             @mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données"); 
             @mysql_select_db($bdd); 
     
             $YourFile= "1665.csv";
             $handle = fopen($YourFile, 'r');
              while (!feof($handle))
    		  {
     
    		  for($i=0;$i<filesize("$YourFile");$i++)
    		  {
    		 $data[$i]=fgets($handle,4096);
     
             $liste = explode( ";",$data[$i]);  
     
     
    		 $l0=$liste[0];
    		 $l7=$liste[7];
    		 $l1= $liste[1];
             $l3= $liste[3];
             $l6= $liste[6];
             $l5= $liste[5];
             $l8= $liste[8];
             $l15= $liste[15];
             $l9= $liste[9];
             $l12= $liste[12];    
             $l11= $liste[11];
             $l10= $liste[10];
             $l4= $liste[4];          
             $l16= $liste[16];
             $l17= $liste[17];    
             $l18= $liste[18]; 
             $l19= $liste[19];
    		 $l14= $liste[14];
    	     $md=date("Y-m-d H:i:s");
     
     
    		 $a= "select 'id_produit_marchand' from 'marchand'"; 
    		 $sql= MYSQL_QUERY($a);		 
     
     
             $nom_du_marchand =$l14;  
             $id_produit_marchand =$l0; 
             $categorie = $l1;
    		 $libelle = $l3;
    		 $url_fiche_produit = $l6;
    		 $url_image = $l5;
    		 $prix_ttc = $l7;
    		 $ecotaxe_ttc = $l8;
    		 $frais_port_ttc = $l15;
    		 $disponibilite = $l9;
    		 $ean = $l12;    
    		 $reference_constructeur = $l11;
    		 $description = $l10;
    		 $marque = $l4;         
    		 $garantie = $l16;
    		 $date_time_creation = $liste[17];    
    		 $date_time_modification = $liste[18]; 
     
     
     
    /***************************************test sur tous les champs pour la mise à jour*******************************************/
     
    //NOM MARCHAND	
     
    			$up1= "UPDATE marchand SET nom_du_marchand='" . $l14 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND nom_du_marchand <> '" . $l14."'";
         $r1=MYSQL_QUERY($up1);
     
     
    //CATHEGIRIE		
     
    			$up3= "UPDATE marchand SET categorie='" . $l1 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND categorie <> '" . $l1."'";
         $r2=MYSQL_QUERY($up3);
     
    //LIBELLE		
     
    			$up4= "UPDATE marchand SET libelle='" . $l3 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND libelle <> '" . $l3."'";
         $r3=MYSQL_QUERY($up4);
     
     
    //URL FICHE PRODUIT		
    		/*if($url_fiche_produit!=$resultss);//$sqle)
    		{
    			$up5= "UPDATE marchand SET url_fiche_produit='" . $l6 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND url_fiche_produit <> '" . $l6."'";
         $r4=MYSQL_QUERY($up5);
    		} */
     
    //URL IMAGE		
     
    			$up6= "UPDATE marchand SET url_image='" . $l5 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND url_image <> '" . $l5."'";
         $r5=MYSQL_QUERY($up6);
     
     
    //PRIX
     
    			$up7= "UPDATE marchand SET prix_ttc='" . $l7 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND prix_ttc <> '" . $l7."'";
         $r6=MYSQL_QUERY($up7);
     
     
    //ECOTAXE_TTC		
     
    			$up8= "UPDATE marchand SET ecotaxe_ttc='" . $l8 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND ecotaxe_ttc <> '" . $l8."'";
         $r7=MYSQL_QUERY($up8);
     
     
    //FRAIS PORT		
     
    			$up9= "UPDATE marchand SET frais_port_ttc='" . $l15 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND frais_port_ttc <> '" . $l15."'";
         $r8=MYSQL_QUERY($up9);
     
     
    //DISPONIBILITE		
     
    			$up10= "UPDATE marchand SET disponibilite='" . $l9 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND disponibilite <> '" . $l9."'";
         $r9=MYSQL_QUERY($up10);
     
     
    //EAN		
     
    			$up11= "UPDATE marchand SET ean='" . $l12 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND ean <> '" . $l12."'";
         $r10=MYSQL_QUERY($up11);
     
     
    //REFERENCE CONSTRUCTEUR		
     
    			$up12= "UPDATE marchand SET reference_constructeur='" . $l11 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND reference_constructeur <> '" . $l11."'";
         $r11=MYSQL_QUERY($up12);
     
     
    //DESCRIPTION		
     
    			$up13= "UPDATE marchand SET description='" . $l10 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND description <> '" . $l10."'";
         $r12=MYSQL_QUERY($up13);
     
     
    //MARQUE		
     
    			$up14= "UPDATE marchand SET marque='" . $l4 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND marque <> '" . $l4."'";
         $r13=MYSQL_QUERY($up14);
     
     
    //GARANTIE		
     
    			$up15= "UPDATE marchand SET garantie='" . $l16 . "', date_time_modification='" . $md . "', actif_non_actif=1 WHERE id_produit_marchand='" . $l0 . "' AND garantie <> '" . $l16."'";
         $r14=MYSQL_QUERY($up15);
     
     
     
    /***************************************test pour l'insertion*******************************************************************/	
     
    		if(($id_produit_marchand)!=($sql))
     		 {   
            $query = "INSERT INTO `marchand` (`nom_du_marchand`, `id_produit_marchand`, `categorie`, `libelle`, `url_fiche_produit`, `url_image`, `prix_ttc`, `ecotaxe_ttc`, `frais_port_ttc`, `disponibilite`, `ean`, `reference_constructeur`, `description`, `marque`, `garantie`, `date_time_creation`, `date_time_modification`, `actif_non_actif`) VALUES('" . addslashes($nom_du_marchand) . "','" . addslashes($id_produit_marchand) . "', '" . addslashes($categorie) . "', '" . addslashes($libelle) . "', '" . addslashes($url_fiche_produit) . "', '" . addslashes($url_image) . "', '" . addslashes($prix_ttc) . "', '" . addslashes($ecotaxe_ttc) . "', '" . addslashes($frais_port_ttc) . "', '" . addslashes($disponibilite) . "', '" . addslashes($ean) . "', '" . addslashes($reference_constructeur) . "', '" . addslashes($description) . "', '" . addslashes($marque) . "', '" . addslashes($garantie) . "', '" . addslashes(date("Y-m-d H:i:s")) . "', '" . addslashes($date_time_modification) . "', '" . addslashes("1") . "')";
     
    		  $result= MYSQL_QUERY($query);
     
     
     
     
    		 }
     
     
           if(mysql_error())
              { 
               print "Erreur dans la base de données : ".mysql_error();
               print "<br>Importation stoppée.";
               exit();
               } 
     
    		 }
     
     
             fclose($handle);
     
             MYSQL_CLOSE(); 
     
     
     ?>

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/10/2012, 15h31
  2. [XL-2003] Tester présence d'une valeur sur une plage donnée
    Par Monsieur Peck dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/04/2010, 18h51
  3. Comment tester la présence d'une valeur dans une liste?
    Par jeo13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2008, 16h09
  4. [XSLT] Tester la non présence d'une valeur dans un fichier
    Par arnauann dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/01/2007, 15h29
  5. tester le type d'une valeur saisie
    Par lalaurie40 dans le forum C
    Réponses: 1
    Dernier message: 09/10/2005, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo