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 :

[CSV] fichier csv recherche postition


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Points : 74
    Points
    74
    Par défaut [CSV] fichier csv recherche postition
    Salut,
    j'ai un csv formaté comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "Intitulé1","Intitulé2","Intitulé3","Intitulé4",....,"Intituléx""Contenu_intitulé1","Contenu_intitulé2","Contenu_intitulé3","Contenu_intitulé4",......,"Contenu_intituléx"
    Sachant que les contnu vide sont représenté par ,, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "Intitulé1","Intitulé2","Intitulé3","Intitulé4",....,"Intituléx""Contenu_intitulé1",,"Contenu_intitulé3",,......,"Contenu_intituléx"
    j'ai donc créé ce script qui me permete de récupèrer la position des intitulé que j'ai defini en dure dans mon code php. Comment je pourrait faire pour récupérer le contenu associé aux intitulés inscrit en dure dans mon code php.
    je sais que par exemple mon Intitulé2 qui à la position "2" donc est associé au contenu_Intitulé qui se trouve à la position (position Intituléx + position Intitulé2)

    J'espere avoir était clair je code mon code php

    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
    <?php
    /* On ouvre le fichier à importer en lecture seulement */
     if (isset($_FILES['file'])){
     
    	//intitulé champs csv
    	$prenom = 'Prénom';
    	$nom = 'Nom';
    	$société  = 'Société ';
    	$adresse = 'Rue (bureau)';
    	$ville = 'Ville (bureau)';
    	$telport = 'Tél. mobile';
    	$telfixe = 'Téléphone société';
    	$fax = 'Télécopie (autre)';
    	$pays = 'Pays (bureau)';
    	$mailperso = 'Adresse de messagerie 2';
    	$mailpro = 'Adresse de messagerie';
    	$statut = 'Suffixe';
     
     
     
    	$file = $_FILES['file']['tmp_name']; 
    	$handle = fopen($file,'r'); 
    	$coumpteur = 0;
    	$handle = fopen("$file", "r") or die("Cannot open $file");; 
    	while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) { 
     
    		foreach ($data as $mots){
    		//position champs intitulé csv
    		$compteur++;
    			if(	$mots == $prenom || 
    				$mots == $prenom || 
    				$mots == $nom || 
    				$mots == $société || 
    				$mots == $adresse ||
    				$mots == $ville ||
    				$mots == $telport ||
    				$mots == $telfixe ||
    				$mots == $fax ||
    				$mots == $pays ||
    				$mots == $mailperso ||
    				$mots == $mailpro ||
    				$mots == $statut){
    				echo $mots." ".$compteur.'</br>';
     
    			}
    		}
    	}
    }?>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Navrée, mais je n'ai absolument rien compris ni à ce que tu cherches à faire, ni au problème que ça te pose. Peux-tu réexpliquer ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut !

    Perso j'utilise la technique suivante :
    1. je définie tout d'abord le numéro (ou index) de la colonne qui m'intéresse
    2. ensuite, étant données que fgetcsv() retourne un tableau de valeur, dans l'ordre de tes colonnes, tu peux facilement récupérer les infos

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    $i_nom=1;
    $i_naissance=3;
     
    // (....)
     
    while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
        echo $data[$i_nom];
        echo $data[$i_naissance];
    }
    ?>
    Voilà ! Sinon fait attention à NE PAS utiliser d'accent dans le nom de tes variables : $société !

    A+++

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Points : 74
    Points
    74
    Par défaut ecplication
    Désolé si je me suis mal expliqué je recomence en simplifiant.

    Ce que je voudrais faire c'est à partir d'un fichier csv qui est formaté comme l'exemple suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "Prénom","Deuxième prénom","Nom","Suffixe","Société ","Service ","Titre","Rue (bureau)","Rue (bureau) 2","Rue (bureau) 3"
    "Didier","Marcel","DUPONT","DEVELOPPEZ_COMPAGNY","COMMERCIAL",,"14 rue toto",,"5669 rue tata"
    a noter que les "" qui se suivent représente la séparation des intitulés(Prénom, Deuxieme prénom..) avec le contenu(Didier, Marcel.....)

    je voudrais donc récupérer le contenu des intitulé qui m'interesse et les mettre dans ma base de données.
    j'espère que je me suis bien expliqué cette fois-ci.
    En attendant d'autre proposisition je teste la solution de djayp
    Merci

  5. #5
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut,

    Si tu n'as qu'un seul fichier à importer dans ta base de données, alors tu peux utiliser directement l'assistant d'importation de phpmyadmin (ou de ton gestionnaire de bdd).

    Sinon, alors il te faut créer une requête SQL pour chaque ligne trouvée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    $i_nom=1;
    $i_naissance=3;
     
    // (....)
     
    while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
        $req = "INSERT INTO matable (nom, naissance) VALUES ('".$data[$i_nom]."','".$data[$i_naissance]."') ";
        mysql_query($req);
    }
    ?>
    Il faut auparavant te connecter à ta base je te passe les détails...

    A++

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 177
    Points : 74
    Points
    74
    Par défaut Trouvé
    Salut,
    apres quelque recherche sur le net j'ai trouvé un script php qui me permet l'importation de mon csv dans ma bdd je le poste au cas ou sa interesse quelqu'un et si des suggestions son à faire sur le code.

    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
    <?php
    echo '<table width="505" border="1" align="center" cellpadding="2" cellspacing="0" bgcolor="#eeeeee">';
     
    //=========================
    // Traitement des donnees
    //=========================
     
    //recupere le nom du fichier indiqué par l'user
    $fichier=$_FILES["file"]["name"];
     
    // ouverture du fichier en lecture
    if ($fichier){
    	//ouverture du fichier temporaire
    	$fp = fopen ($_FILES["file"]["tmp_name"], "r");
    }
    else{
    	// fichier inconnu
    	?>
    	<p align="center" >- Importation échouée -</p>
    	<p align="center" ><B>Désolé, mais vous n avez pas spécifié de chemin valide ...</B></p>
    	<?php
    	exit();
    }
     
    // declaration de la variable "cpt" qui permettra de compter le nombre d'enregistrement réalisé
    $cpt= -1;
    ?>
    <p align="center">- Importation Réussie -</p>
     
    <?php
    // importation
    while (!feof($fp)){
    	$ligne = fgets($fp,4096);
    	// on crée un tableau des élements séparés par une virgule
    	$liste = explode(",",$ligne);
    	// premier élément
    	$liste[0] = ( isset($liste[1]) ) ? $liste[1] : Null; //prenom
    	$liste[1] = ( isset($liste[3]) ) ? $liste[3] : Null; //nom
    	$liste[2] = ( isset($liste[83]) ) ? $liste[83] : Null; //statut
    	$liste[3] = ( isset($liste[5]) ) ? $liste[5] : Null; //societe
    	$liste[4] = ( isset($liste[30]) ) ? $liste[30] : Null; //fax
    	$liste[5] = ( isset($liste[31]) ) ? $liste[31] : Null; //telfixe
    	$liste[6] = ( isset($liste[40]) ) ? $liste[40] : Null; //telport
    	$liste[7] = ( isset($liste[48]) ) ? $liste[48] : Null; //mailperso
    	$liste[8] = ( isset($liste[51]) ) ? $liste[51] : Null; //mailpro
     
    	$champs0=$liste[0]; // prenom
    	$champs0 = str_replace('"', '', $champs0); //supprimer les "" du champs
     
    	$champs1=$liste[1]; // nom
    	$champs1 = str_replace('"', '', $champs1); //supprimer les "" du champs
     
    	$champs2=$liste[2]; // statut
    	$champs2 = str_replace('"', '', $champs2); //supprimer les "" du champs
     
    	$champs3=$liste[3]; // societe
    	$champs3 = str_replace('"', '', $champs3); //supprimer les "" du champs
     
    	$champs4=$liste[4]; // fax
    	$champs4 = str_replace('"', '', $champs4); //supprimer les "" du champs
     
    	$champs5=$liste[5]; // telfixe
    	$champs5 = str_replace('"', '', $champs5); //supprimer les "" du champs
     
    	$champs6=$liste[6]; // telport
    	$champs6 = str_replace('"', '', $champs6); //supprimer les "" du champs
     
    	$champs7=$liste[7]; // mailpro
    	$champs7 = str_replace('"', '', $champs7); //supprimer les "" du champs
     
    	$champs8=$liste[8]; // mailperso
    	$champs8 = str_replace('"', '', $champs8); //supprimer les "" du champs
     
    	// pour eviter qu un champs "nom" du fichier soit vide
    	if ($champs1!=''){
    		// nouvel ajout, compteur incrémenté
    		$cpt++;
    		// commence l'insertion quand cpt est plus grand que 1
    		if($cpt > 1){
    			//connexion à la bdd
    			include('../connection_bd.php');
    			//création de la requete
    			$sql_statut= "SELECT 	ID_STATUT, 
    									STATUT
    									FROM statuts";
     
    			$sql_entreprise= "SELECT	ID_ENTREPRISE, 
    										NOMENTREPRISE
    										FROM entreprise";
    			//execution de la requete
    			$resultat_statut = mysql_query($sql_statut) or die('erreur SQL' .$sql.'<br/> .mysql_error();');
    			$resultat_entreprise = mysql_query($sql_entreprise) or die('erreur SQL' .$sql.'<br/> .mysql_error();');
     
    			while ($data_statut = mysql_fetch_array($resultat_statut, MYSQL_ASSOC)) {
    				if( $data_statut['STATUT'] == $champs2){
    					$temp_statut = $data_statut['STATUT'];
    					$champs2 = $data_statut['ID_STATUT'];
     
    					while ($data_entreprise = mysql_fetch_array($resultat_entreprise, MYSQL_ASSOC)) {
    						if( $data_entreprise['NOMENTREPRISE'] == $champs3){
    							$champs3 = $data_entreprise['ID_ENTREPRISE'];
     
    						$sql= "INSERT INTO contacts (	ID_CONTACT,
    													ID_STATUT,
    													ID_ENTREPRISE,
    													NOMCONTACT,
    													PRENOMCONTACT,
    													MAILPRO,
    													MAILPERSO,
    													TELPORT,
    													TELFIXE,
    													FAX)
    													VALUES(	NULL,
    															'".$champs2."',
    															'".$champs3."',
    															'".$champs1."',
    															'".$champs0."',
    															'".$champs7."',
    															'".$champs8."',
    															'".$champs6."',
    															'".$champs5."',
    															'".$champs4."') ";
     
    					mysql_query($sql) or die('erreur SQL' .$sql.'<br/> .mysql_error();');
    						}
    					}
    				}
    				else{
    					//echo'Le statut du contact ou l \'entreprise ne sont pas presentent dans la base de données merci de les creer';
    				}
    			}
    			//fermeture de la connection
    			mysql_close();
    		}
    		?>
    		<tr>
    		<td width="124">Eléments importés :</td>
    		<td width="361"><?php echo $champs0;?></td>
    		<td width="361"><?php echo $champs1;?></td>
    		<td width="361"><?php echo $champs2;?></td>
    		<td width="361"><?php echo $champs3;?></td>
    		<td width="361"><?php echo $champs4;?></td>
    		<td width="361"><?php echo $champs5;?></td>
    		<td width="361"><?php echo $champs6;?></td>
    		<td width="361"><?php echo $champs7;?></td>
    		<td width="361"><?php echo $champs8;?></td>
    		</tr>
    		<?php
    	}
    }
     
    // fermeture du fichier
    fclose($fp);
    //on supprime la derniere car elle est vide
     
     
    //==================
    // FIN
    //==================
    ?>
    </table>
    <br><br>Nombre de valeurs nouvellement enregistrées: <b><?php echo $cpt;?></b>
    <br><a href="../Vue/consultation.html">Retour à la page de recherche</a>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CSV] Fichier CSV trop long
    Par jbidou88 dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2008, 08h51
  2. [CSV] Fichier CSV vers phpMyAdmin
    Par DrOOMMgba dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2007, 14h09
  3. [CSV] Fichier csv bizarre
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 19/01/2007, 09h13
  4. [CSV] Fichier CSV en PHP
    Par rimeh dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2007, 12h01
  5. [CSV] Fichier CSV
    Par clairette dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2006, 17h33

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