begin process at 2012 02 11 02:42:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > COMMENT SEPARER DES VALEURS INDEX DANS UNE VARIABLE CSV

COMMENT SEPARER DES VALEURS INDEX DANS UNE VARIABLE CSV


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :csv, valeurs, index Niveau :Débutant Date de création :30/08/2005 Date de mise à jour :04/09/2005 19:58:56 Vu :3 349

Auteur : galadriann

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

j'avais besoin d'une fonction permettant de separer les "valeurs" des "index" d'une variable passee en format CSV pour generer une query SQL.
en gros: on a 2 variables : $field="index,champs1,champs2" et $valeurs="1,t1,t2,2,t3,t4,3,t5,t6, ...".
Le but est donc de recuperer : $index=array ("1","2","3",..." et $val=array("t1","t2","t3","t4",...).


je ne sais pas si c'est clair ni si cela sera utile mais bon ... j'en avais besoin pour une requete SQL UPDATE...

Source

  • <?php
  • echo '<p style="font-size: 19px; font-weight: 700; text-decoration: underline;">Parsing of a comma delimited string to arrays</p>>';
  • echo 'On passe 2 variables, 1 avec le nom des champs, l\'autres avec les valeurs';
  • echo '<br />2 arrays sont retournes : <br /><li>$indexval contient les valeurs de l\'index (premiere colonne)</li>';
  • echo '<li>$val contient les valeurs du restant des colonnes</li>';
  • $tableField="index,field1,field2";
  • $tableValues="1i,field1-1,field1-2,2i,field2-1,field2-2,3i,field3-1,field3-2,4i,field4-1,field4-2";
  • $fields=explode(",",$tableField); //on cree un array a partir des 2 variables en les separant au niveau des virgules
  • $values=explode(",",$tableValues);
  • $nf=count($fields); // on compte le nombre de valeurs
  • $nv=count($values);
  • $indexval=array(); // on cree les 2 arrays pour le resultat final
  • $val=array();
  • for ($i=0;$i<$nv;$i+=$nf)
  • {
  • $indexval[]=$values[$i]; //on recupere la valeur de l'index et on stocke
  • for ($k=0;$k<$nf-1;$k++)
  • {
  • $l=$k+$i+1; // +1 pour eviter la valeur de l'index
  • $val[$k][]=$values[$l]; on recupere la valeur et on stocke
  • }
  • }
  • echo '<p style="font-size: 17px; font-weight: 700; ">les 2 variables passees :';
  • echo '<pre>';
  • echo '<li>$tableField</li>';
  • print_r($tableField);
  • echo '<br /><li>$tableValues</li>';
  • print_r($tableValues);
  • echo '<p style="font-size: 17px; font-weight: 700; ">le resultat';
  • echo '<br /><li>$indexval</li>';
  • print_r($indexval);
  • echo '<br /><li>$val</li>';
  • print_r($val);
  • echo '</pre>';
  • // exemple d'utilisation pour creer une requete SQL UPDATE
  • $k=0;
  • foreach ($indexval as $index)
  • {
  • $sql="UPDATE `table` SET ";
  • $n=count($val);$i=0;
  • while ($i<$n)
  • {
  • if ($i>0){$sql.=", ";}
  • $sql.="`{$fields[$i+1]}` = '{$val[$i][$k]}'";
  • $i++;
  • }
  • $sql.=" WHERE `{$fields[0]}` = '$index' LIMIT 1";
  • echo "SQL : $sql<br />";
  • $k++;
  • }
  • ?>
<?php

echo '<p style="font-size: 19px; font-weight: 700; text-decoration: underline;">Parsing of a comma delimited string to arrays</p>>';
echo 'On passe 2 variables, 1 avec le nom des champs, l\'autres avec les valeurs';
echo '<br />2 arrays sont retournes : <br /><li>$indexval contient les valeurs de l\'index (premiere colonne)</li>';
echo '<li>$val contient les valeurs du restant des colonnes</li>';
$tableField="index,field1,field2";
$tableValues="1i,field1-1,field1-2,2i,field2-1,field2-2,3i,field3-1,field3-2,4i,field4-1,field4-2";

$fields=explode(",",$tableField);  //on cree un array a partir des 2 variables en les separant au niveau des virgules
$values=explode(",",$tableValues);
$nf=count($fields);  // on compte le nombre de valeurs
$nv=count($values);

$indexval=array();  // on cree les 2 arrays pour le resultat final
$val=array();
for ($i=0;$i<$nv;$i+=$nf)
{
    $indexval[]=$values[$i]; //on recupere la valeur de l'index et on stocke
    for ($k=0;$k<$nf-1;$k++)
    {
        $l=$k+$i+1; //  +1 pour eviter la valeur de l'index
        $val[$k][]=$values[$l]; on recupere la valeur et on stocke
    }
    
}
echo '<p style="font-size: 17px; font-weight: 700; ">les 2 variables passees :';
echo '<pre>';
echo '<li>$tableField</li>';
print_r($tableField);
echo '<br /><li>$tableValues</li>';
print_r($tableValues);
echo '<p style="font-size: 17px; font-weight: 700; ">le resultat';
echo '<br /><li>$indexval</li>';
print_r($indexval);
echo '<br /><li>$val</li>';
print_r($val);
echo '</pre>';

// exemple d'utilisation pour creer une requete SQL UPDATE

$k=0;
foreach ($indexval as $index)
{
   $sql="UPDATE `table` SET ";
   $n=count($val);$i=0;
   while ($i<$n)
   {
     if ($i>0){$sql.=", ";}
     $sql.="`{$fields[$i+1]}` = '{$val[$i][$k]}'";
     $i++;
   }
   $sql.=" WHERE `{$fields[0]}` = '$index' LIMIT 1";
   echo "SQL : $sql<br />";
   $k++;
}
            

?>

 Conclusion

Il y a surement moyen de faire mieux ... ou plus rapide mais bon ...


 Historique

30 août 2005 14:46:06 :
Ajout d'un exemple d'utilisation ... je pense que ce sera plus clair comme cela ...
31 août 2005 14:00:36 :
Mise a jour selon recommendation de Anthomicro ...
04 septembre 2005 19:58:58 :
remplacement des splits par des explodes ...

 Sources du même auteur

Source avec Zip CLASS HELPER
SIMPLE TABLE FUNCTION

 Sources de la même categorie

Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX par cod57

 Sources en rapport avec celle ci

Source avec Zip IMPORT FICHIERS CSV DANS UNE BASE DE DONNÉES par shannara
Source avec Zip Source avec une capture BASH CSVSQL: PARSER UN FICHIER CSV AVEC DES COMMANDES SQL par gentilKiki
Source avec Zip Source avec une capture PUBLIPOSTAGE (ZIP ET MEL) par ddempt
Source avec Zip SAUVEGARDE DE BASE DE DONNÉES par ateaitys07
Source avec Zip EXPORTER LES TABLES BDD MYSQL AU FORMAT CSV POUR TÉLÉCHARGER... par superchinese

Commentaires et avis

Commentaire de Anthomicro le 30/08/2005 15:15:47

Salut,

tu peux optimiser ton "for ($i=0;$i<count($val);$i++)"

$nb=count($val);
for($i=0;$i<$nb;$i++)
{

}

et tu peux mettre un while ça ira encore plus vite qu'un for ;-)

a +

Commentaire de galadriann le 31/08/2005 13:56:42

Bonne idee ... je change mes classes et je met a jour ...
Merci.

Commentaire de Optitech le 01/09/2005 16:29:06

Slt !

Beau travail !

Tu utilise split, Mais tu n'as pas d'expressions rationnelles donc pour faire gagné du temps à ton script utilise explode !

Commentaire de galadriann le 04/09/2005 19:57:19

Exact, bonne idee ...  mauvaise habitude de Perl ... j'en oublie les fonctions elementaires...

Je corrige de suite ...

Merci...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

php et mysql : les index s'affichent pas !!! [ par stephane ] Voila, j'utilise cette procédure pour afficher les index d'une table (je suis deja connecté à la base de donnees) :$mode représente la table$rep=@mysq Liens en PHP [ par flolag ] Pour les pages de mon site j'utilise la fonction pseudo frames avecles liens du type index.php?rub=XXX mais ce ke je me suis rendu comptec'est ke tout Fichiers CSV+Tableaux et Balaises en PHP !!! [ par spectroman ] Avis à ceux qui maitrise PHP !!!- Demande I :Les fichiers :* Un fichier genre "données1.php"Qui s'occupe de générer l'affichage d'un page de type HTML Fichier INDEX auto-exécutable [ par BSide ] BSideBonjour,j'utilise EasyPHP1.6.Habituellement, quand je veux exécuter un script PHP, je vais sur le web local, je sélectionne le répertoire qui m'i recup valeurs de formulaire [ par ebourden ] Voila j'ai un petit souci avec mon code : $texte&lt;? \$mssql_host=\"HTTP_POST_VARS[mssql_host]\"; manipulation de variables [ par eax ] salutje cherche à extraire une partie d'une variable. je voudrais simplement extraire l'adresse url d'une variable en enlevant toutes les variables ph Tableau en php(débutant) [ par iomega ] Bonjour à tous je suis débutant en php et je voudrai manipuler un tableau voici mon problèmele tableau $tab100 contient des valeurs 0.125,0.25 etc...j valeur aléatoir [ par goulouk ] Bonjour,Je voudrais savoir comment avoir une valeur aléatoire comprise entre 2 valeurs, ms différente a chaque lancement du programme.( g utiliser la [SQL] Exporter vers un ficher csv [ par cedvoyage ] Ca doit surement être possible car y'a une fonction dans phpMyAdmin qui fait çà.Est-ce possible aussi de choisir les champs à exporter et de les mettr Garder les valeurs d'un formulaire [ par Clonk ] Bonjour, voilà mon problème:J'ai un formulaire où le visiteur saisis ses infos... apres je les vérifie et s'il y a un problème, je veux réafficher le


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales