lecture de fichier pour comparaison de contenu

lecture de fichier pour comparaison de contenu - PHP - Programmation

Marsh Posté le 22-05-2016 à 16:35:45    

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 :)

Reply

Marsh Posté le 22-05-2016 à 16:35:45   

Reply

Marsh Posté le 22-05-2016 à 19:38:45    

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
Reply

Marsh Posté le 23-05-2016 à 10:17:21    

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/
Reply

Marsh Posté le 23-05-2016 à 10:25:06    

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
Reply

Marsh Posté le 23-05-2016 à 11:44:06    

+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
Reply

Marsh Posté le 23-05-2016 à 13:11:25    

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. ?>

Reply

Marsh Posté le 23-05-2016 à 15:56:47    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed