Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1377 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  lecture de fichier pour comparaison de contenu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lecture de fichier pour comparaison de contenu

n°2281911
joe0703
Posté le 22-05-2016 à 16:35:45  profilanswer
 

bonjours
voila j'ecrit ce message car j'ai un petit soucis de code
pour lire des fichier et comparais leur contenu
 
en faite mon schéma serais celui-ci.
 
j'ai trois fichier txt:
1- fichier qui contient des serie de deux numéro
1|2
1|1
2|1
1|1
1|1
2|1
1|1
le 1er numero correspond a un id de produit
le second correspond a un id client
 
2- j'ai donc mon fichier produit qui ressemble a cela  
 
1|skyrim|2016-05-18|../../photo/try.jpg|1|18|2
2|druss|6884-12-04|../../photo/skyrim.jpg|2|16|11
le premier numéro étant l'id du produit
 
3- et j'ai finalement mon fichier client qui ressemble a cela
 
1|joris|truffiere|soulier|camping les truffieres|1989-05-31|joe0703@hotmail.fr|étudiant|homme
2|anais|truffiere|soulier|camping les truffieres|1988-04-18|nanou07@hotmail.fr|employé|femme
3|stephane|truffiere|soulier|camping les truffieres|1965-07-14|steph@hotmail.fr|cadre|homme
avec pareil le premier numéro qui correspond a l id du client
 
je voulais donc crée un code qui me permette d'afficher le nom du produit et de la personne qui la acheter en comparant les infos du 1er fichier avec les deux autres  
 
et a l'heure actuel j'ai realiser ceci  
mais qui ne fonctionne pas ^^"  
 

Code :
  1. $achat = fopen("../../../txt/genre/achat/jeux_de_combats.txt", "r+" );
  2. if ($achat)
  3. {
  4.  $lignes_achat_array = array();
  5.  $genre = fopen("../../../txt/genre/jeux_de_combats.txt", "r+" );
  6.  if ($genre)
  7.   {
  8.    $lignes_genre_array = array();
  9.    $utilisateur = fopen("../../../txt/Fichier_user.txt", "r+" );
  10.    if ($utilisateur)
  11.     {;
  12.      $lignes_utilisateur_array = array();
  13.      while(!feof($achat))
  14.       {
  15.        $ligne_achat = fgets($achat);
  16.        $ligne_achat = trim( $ligne_achat );
  17.        $cette_ligne_achat = explode('|', $ligne_achat);
  18.        while(!feof($genre))
  19.         {
  20.          $ligne_genre = fgets($genre);
  21.          $ligne_genre = trim( $ligne_genre );
  22.          $cette_ligne_genre = explode('|', $ligne_genre);
  23.          while(!feof($utilisateur))
  24.           {
  25.            $ligne_utilisateur = fgets($utilisateur);
  26.            $ligne_utilisateur = trim( $ligne_utilisateur );
  27.            $cette_ligne_utilisateur = explode('|', $ligne_utilisateur);
  28.            if ($cette_ligne_achat[0]=== $cette_ligne_genre[0])
  29.             {
  30.             }
  31.            if ($cette_ligne_achat[1] === $cette_ligne_utilisateur[0])
  32.             {
  33.             }
  34.           }
  35.          fclose($utilisateur);
  36.         }
  37.        fclose($genre);
  38.       }
  39.      fclose($achat);
  40.     }
  41.   }
  42. }


 
si quelqu'un pouvais me conseiller cela serais sympa merci :)

mood
Publicité
Posté le 22-05-2016 à 16:35:45  profilanswer
 

n°2281915
joe0703
Posté le 22-05-2016 à 19:38:45  profilanswer
 

j'ai plus ou moins reussi a arranger le soucis moi meme en faisant  
 

Code :
  1. <?php if(session_id()=='') { session_start(); } // TOUJOURS EN HAUT DE SCRIPT
  2. header('Content-type:text/html; charset=UTF-8'); // encodage UTF-8
  3. // --------------------------------------
  4. // protection page admin
  5. // --------------------------------------
  6. // si session vide = PAS connecté
  7. if( empty($_SESSION['admin']['login']))
  8.  {
  9.   // on redirige
  10.   header('location:../elements_inchangeables/connexion_admin/connexion_admin.php');
  11.   exit;
  12.  }
  13. include('txt_array.php');
  14. //<!------------------------------------------------------------------>
  15. //<!-- debut du menu -->
  16. //<!------------------------------------------------------------------>
  17. include('menu_admin.php');
  18. ?>
  19. <!------------------------------------------------------------------>
  20. <!-- fin du menu -->
  21. <!------------------------------------------------------------------>
  22. <!DOCTYPE html>
  23. <html>
  24. <head>
  25.  <title>info vente</title>
  26.  <meta charset="utf-8">
  27.  <link rel="stylesheet" type="text/css" href="../../../CSS/style_base.css" />
  28.  <link rel="stylesheet" type="text/css" href="../../../CSS/style_form.css" />
  29. </head>
  30. <body>
  31.  <div id="fond">
  32.   <div id="contenu">
  33.    <!-- debut du contenu de la partie sombre -->
  34.    <div class="barre_du_centre">
  35.     <p id="formulaire">
  36.      <table>
  37.       <tr>
  38.        <td colspan="4" class="h3">
  39.         <a>
  40.          achat jeux_d_action
  41.         </a>
  42.        </td>
  43.       </tr>
  44.       <?php
  45.       include('tbody.php');
  46.       ?>
  47.       <tfoot>
  48.        <tr>
  49.         <?php
  50.          $array_achats = get_array_from_file( '../../../txt/genre/achat/jeux_d_aventures.txt' );
  51.          $array_utilisateurs = get_array_from_file( '../../../txt/Fichier_user.txt' );
  52.          $array_produits = get_array_from_file( '../../../txt/genre/jeux_d_aventures.txt' );
  53.          foreach ($array_achats as $i => $achat)
  54.          {
  55.           foreach ($array_produits as $j => $produit)
  56.           {
  57.            if ($achat[0] === $produit[0] )
  58.            {
  59.          ?>
  60.             <td>
  61.              <img src="<?php echo $array_produits[3]; ?>" alt="" />
  62.             </td>
  63.             <td style="color:white;">
  64.              <?php echo $array_produits[1]; ?>
  65.             </td>
  66.          <?php
  67.            }
  68.           }
  69.           foreach ($array_utilisateurs as $k => $utilisateur)
  70.           {
  71.            if ($achat[1]=== $utilisateur[0] )
  72.            {
  73.          ?>
  74.             <td style="color:white;">
  75.              <?php echo $array_produits[1]; ?>
  76.             </td>
  77.          <?php
  78.            }
  79.           }
  80.          }
  81.          ?> 
  82.       </tfoot>
  83.      </table>
  84.     </p>
  85.    </div>
  86.   </div>
  87.   <!------------------------------------------------------------------------------------------------------------------------------------>
  88.   <!-- fin du contenu de la partie sombre -->
  89.   <!------------------------------------------------------------------------------------------------------------------------------------>
  90.  </div>
  91. </body>
  92. </html>
  93. <!------------------------------------------------------------------------------------------------------------------------------------>
  94. <!-- debut du footer -->
  95. <!------------------------------------------------------------------------------------------------------------------------------------>
  96. <?php
  97. include('footer_admin.php');
  98. //<!------------------------------------------------------------------------------------------------------------------------------------>
  99. //<!-- fin du footer -->
  100. //<!------------------------------------------------------------------------------------------------------------------------------------>
  101. ?>


 
mais j'ai une erreur  
 

Citation :

Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 66
Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 77
Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 66
Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 77
Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 66Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 77
Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 66
Array  
Notice: Array to string conversion in C:\xampp\htdocs\projet-web-dynamique-soulier-joris\PHP\site_connexion_admin\info_achat\achat_genre.php on line 77
Array


 


Message édité par joe0703 le 22-05-2016 à 23:49:52
n°2281933
zerist
Posté le 23-05-2016 à 10:17:21  profilanswer
 

salut,
 
Je ne sais pas quel est l'objectif de ton projet, mais utiliser une base de données (par exemple mysql) serait beaucoup plus simple pour faire la même chose...
 
Sinon, ton erreur vient du fait que $array_produits est un tableau à deux dimensions (la première définit chaque ligne du fichier, la deuxième chaque champ de la ligne), donc pour accéder au premier élément de la première ligne (par exemple) il faut écrire $array_produits[1][1].
Donc, quand tu écris echo $array_produits[1] , la fonction echo attend une chaîne de caractères (un objet de type "string" ), mais tu lui donnes un tableau (un objet de type "array" ). D'où l'erreur "Array to string conversion".


---------------
https://www.flickr.com/photos/182924845@N04/
n°2281934
mechkurt
Posté le 23-05-2016 à 10:25:06  profilanswer
 

Avant de les parcourir pour affichage, je te conseille de faire des var_dump de tes tableaux pour voir comment ils sont structuré (faut mettre une balise <pre> ou afficher le code source pour qu'on puisse bien voir la structure).
 
Car à mon avis le premier élément de la première ligne sera plutôt à 0 : $array_produits[0][0];


---------------
D3
n°2281938
rufo
Pas me confondre avec Lycos!
Posté le 23-05-2016 à 11:44:06  profilanswer
 

+1 pour passer par une BD pour effecteur le traitement. Les fichiers sont faciles à parser et les traitements que tu veux faire se feront très facilement en SQL alors que par du PHP, ça sera galère et très lent, surtout si le volume de données augmente. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2281947
joe0703
Posté le 23-05-2016 à 13:11:25  profilanswer
 

j'ai pas le droit au bdd , et en langage je n'est droit qu a php , html , css et JS  
et pour mon code j'ai réussi hier soir ^^  
 

Code :
  1. <?php
  2. foreach ($array_achats as $i => $achat)
  3. {
  4.  foreach ($array_produits as $j => $produit)
  5.   {
  6.    if ($achat[0] === $produit[0] )
  7.     {
  8.      ?>
  9.       <td>
  10.        <center>
  11.         <img src="<?php echo $produit[3]; ?>" alt="" />
  12.        <center>
  13.       </td>
  14.       <td style="color:white;">
  15.        <center>
  16.         <?php echo $produit[1]; ?>
  17.        </center>
  18.       </td>
  19.      <?php
  20.      }
  21.     }
  22.  foreach ($array_utilisateurs as $k => $utilisateur)
  23.   {
  24.    if ($achat[1]=== $utilisateur[0] )
  25.     {
  26.      ?>
  27.       <td style="color:white;">
  28.        <center>
  29.         <?php echo $utilisateur[1]; ?>
  30.        </center>
  31.       </td>
  32.      </tr>
  33.      <?php
  34.     }
  35.   }
  36. }
  37. ?>

n°2282016
mechkurt
Posté le 23-05-2016 à 15:56:47  profilanswer
 

Alors ça fonctionne mais ce n'est pas optimisé dans la mesure pour chaque ligne achat tu parcours tous tes produits et tous tes utilisateurs à la recherche de ce que tu doit afficher.
Il serait plus "propre" et "performant" d'utiliser des tableaux indicé et d'en suite y piocher tes valeurs...
Je te fait un exemple pour les utilisateurs :

Code :
  1. $array_utilisateurs = get_array_from_file( '../../../txt/Fichier_user.txt' );
  2. $t_user = array();
  3. foreach($array_utilisateurs as $key_line => $array) {
  4.   $t_user[$array[0]] = $array[1];
  5. }
  6. //supprimer le commentaire pour voir le contenu du tableau utilisateurs, normalement un tableau associatif id_user => nom_user
  7. /*
  8. echo '<pre>';
  9. var_dump($t_user);
  10. echo '</pre>';
  11. */


Ensuite dans ta boucle d'achat tu peux afficher directement l'utilisateur en faisant echo $t_user[$achat[1]];


---------------
D3

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  lecture de fichier pour comparaison de contenu

 

Sujets relatifs
Convertir fichier PDF en txt à partir d'un fichier d'initialisationRécupérer une partie du nom de fichier en variable ?
Macro générer fichier excel avec info dans l'ordreEnvoyer automatiquement un fichier entre 2 serveurs sans FTP
Formulaire ACCESS: créer bouton commande d'ouverture fichier bddComparaison de bdd sous Excel
[Résolu] [SQLite] Importation impossible fichier .dump > .dbArchitecture des fichier jpeg et mp4
Fonction "effacer contenu sur changement" sur 2 cellules[MYSQL] Import fichier csv : empecher l'update de certaines colonnes
Plus de sujets relatifs à : lecture de fichier pour comparaison de contenu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR